Как я могу сопоставить аудиоклип внутри аудиоклипа с Python?

Я пытаюсь обнаружить с помощью Librosa короткий mp3-джингл внутри большого mp3-аудиоклипа. Однако мне трудно заставить его работать, и я понятия не имею, куда идти дальше. Это код, который у меня есть до сих пор, основанный на этом ответе StackOverflow, хотя я хочу определить местоположение jingle через другой метод или библиотеку.

# Load the audio as a waveform
# Store the sampling rate

JingleWave, JingleSR = librosa.load(short.mp3)
EpisodeWave, EpisodeSR = librosa.load(long.mp3)

# Power spectrograms of file
# I notice through debugging that the length of these arrays are the same
# despite them being very different file lengths

JingleSpectogram = np.abs(librosa.stft(JingleWave))
EpisodeSpectogram = np.abs(librosa.stft(EpisodeWave))

# Define binary structure for the footprint
# This is the part that is most likely to be faulty, as I most did it because
# maximum filter requires a footprint

structure = generate_binary_structure(2,1)

# Find local peaks to create constellation maps (2D images only containing peaks)

JingleCM = maximum_filter(JingleSpectogram, footprint=structure)
EpisodeCM = maximum_filter(EpisodeSpectogram, footprint=structure)

# Get time frames of the constellation maps

JingleLength = JingleCM.shape[0]
EpisodeLength = EpisodeCM.shape[0]

# Keep track of what segments match the most

scores = []

# Compare audio to find matching audio

for offset in range(EpisodeLength-JingleLength):
    EpisodeExcerpt = EpisodeCM[offset:offset+JingleLength]
    score = np.sum(np.multiple(EpisodeExcerpt,JingleCM))
    scores[offset] = score

# Find when the highest score happens

highestScore = -1
for num in range(len(scores)):
    if highestScore < num:
        highestScore = num

# Convert score into the position of where the jingle starts
print(scores.index(highestScore))
print(highestScore)

Я только новичок в программировании, поэтому любая помощь очень ценится.


person MilesNeedsToCode    schedule 03.02.2020    source источник
comment
Отвечает ли это на ваш вопрос? Найти звуковой эффект внутри аудиофайла   -  person Greg    schedule 03.02.2020
comment
@ Грег Мне немного сложно понять эти ответы, но я попытаюсь разобраться в этом подробнее. К сожалению, исходный код, предоставленный запрашивающим, демонстрирующий полное решение, на самом деле не работает (с множеством переменных, которые не определены), но я попытаюсь провести больше исследований и посмотреть, смогу ли я придумать решение самостоятельно. .   -  person MilesNeedsToCode    schedule 03.02.2020
comment
Извините, я не мог дать вам более индивидуальный ответ. Для начинающего программиста вы определенно работаете с тяжелым проектом :)   -  person Greg    schedule 03.02.2020
comment
Вы можете использовать метод скользящего окна, чтобы найти корреляцию между шаблоном и исходной спектрограммой. Надеюсь, это поможет.   -  person ErAcube    schedule 06.02.2020