Учитывая два аудиофайла, один из которых является фрагментом другого, есть ли способ Python, чтобы найти, когда фрагмент воспроизводится в исходном файле? - PullRequest
0 голосов
/ 13 апреля 2019

Я записал немного музыки и загрузил ее в Instagram, что накладывало длительность в минуту для каждого клипа.Я потерял исходные файлы и скомпилировал эти минутные клипы так, что song__AA0, song__AA1, song__AA2, ... соответствует одной песне с именем AA и повторяется для BB, CC, ....Но поскольку я обрезал видео вручную, начало song__AA1 будет повторять сегмент, который заканчивается song__AA0;аналогично, начало song__A2 будет повторять сегмент, который заканчивается песней song__AA1.Я попытался объединить эти минутные клипы, но найти точное время, в которое можно обрезать файлы, сложно вручную.Есть ли в Python метод, который можно использовать для нахождения времени, когда начало i+1 -ой песни и конец i -ой песни перекрываются, чтобы я мог соответствующим образом объединить эти файлы?

1 Ответ

1 голос
/ 13 апреля 2019

Одной из идей было бы использовать звуковую дактилоскопию, например, Дежавю . Акустический отпечаток пальца - это сжатая цифровая сводка, отпечаток, детерминистически сгенерированный из аудиосигнала, который можно использовать для идентификации аудиосэмпла или быстрого поиска аналогичных элементов в аудиобазе. .

По сути, dejavu создает хэши на спектрограммах аудио.

Сначала создайте или подключитесь к MySQL, где Dejavu будет хранить отпечатки пальцев.

from dejavu import Dejavu
config = {
    "database": {
        "host": "127.0.0.1",
        "user": "root",
        "passwd": <password above>, 
        "db": <name of the database you created above>,
    }
}
djv = Dejavu(config)
num_processes = 8
audio_extension = [".mp3", ".wav"]
djv.fingerprint_directory("directory_with_long_songs", audio_extension, num_processes) 

Теперь, когда вы создали отпечатки пальцев, вы можете выполнить распознавание

from dejavu.recognize import FileRecognizer
song = djv.recognize(FileRecognizer, "your_shorter.wav")

Обратитесь к документации по API и интерпретации результатов.

Dejavu - одна из многих таких программ. Вы можете создать свой собственный алгоритм дактилоскопии, следуя, например, Shazam paper .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...