Анализ звука Python: найдите в реальном времени значения самого сильного удара на каждом метре

У меня есть песня, и я хотел бы использовать Python для ее анализа.

Мне нужно найти основные звуки в песне. Я использую этот термин, потому что не знаю его технических терминов, но вот что я имею в виду:

https://www.youtube.com/watch?v=TYYyMu3pzL4

Если вы играете только первую секунду песни, я насчитываю около 4 основных звуков.

В общем, это те же звуки, которые человек напевал бы, напевая песню.

Как они называются? И есть ли функция в librosa (или любой другой библиотеке / языке программирования), которая может помочь мне определить их появление в песне?

При необходимости я могу предоставить дополнительную информацию / примеры.

ОБНОВЛЕНИЕ: после дополнительных исследований, я считаю, что ищу то, что называется "сильнейшими ударами". В Librosa уже есть функция beat_track, но я думаю, что она дает вам все, что можно назвать битом в песне. Я действительно не хочу каждый бит, только тот, который выделяется больше всего. Общая цель здесь - создать музыкальное видео, в котором основное действие, происходящее на экране, идеально сочетается с сильнейшими битами. Это создает синергетический эффект в видео - все кажется связанным.


person whatwhatwhat    schedule 16.02.2019    source источник


Ответы (1)


Процесс анализа звука для определения его звуковых архетипов можно назвать acoustic fingerprinting

Аудио имеет временное измерение, поэтому для того, чтобы засвидетельствовать ваши «основные звуки», требуется прослушивание звука в течение определенного периода времени ... через последовательность мгновенных звуковых сэмплов. Аудио можно рассматривать как кривую временного ряда, где для каждого момента времени вы записываете высоту звуковой кривой, оцифрованной в формат PCM. Настенным часам требуется время, чтобы услышать данный «основной звук». Здесь ваш звук находится в естественном состоянии во временной области. Однако информационная нагрузка звукового фрагмента может быть преобразована в его аналог в частотной области путем подачи окна звуковых выборок в вызов API-интерфейса fft (для получения его преобразования Фурье).

Мощно тонкий аспект использования БПФ заключается в том, что он удаляет измерение времени из входных данных и заменяет его дистилляцией, сохраняя при этом загрузку входной информации. Кроме того, если звук является периодическим после преобразования из временной области в его представление частотной области с помощью преобразования Фурье, его можно восстановить обратно в ту же идентичную звуковую кривую во временной области, применив обратное преобразование Фурье. Данные, которые изначально представляли собой кривую, которая колеблется вверх и вниз с течением времени, теперь представлены как разброс частот, каждая из которых имеет свою интенсивность и фазовый сдвиг, но без какого-либо понятия времени. Теперь у вас есть роскошь извлечь из этого статического массива частот набор атрибутов, которые могут быть представлены обыденной структурой данных и все же проникнуты лежащими в их основе временными корнями.

Здесь вы можете найти свои «основные звуки». В первом приближении вы просто складываете верхние частоты X вместе со значениями их интенсивности, и это мера данного отрезка времени вашего входного звука, захваченного как его «основной звук». Если у вас есть набор «основных звуков», вы можете использовать его, чтобы определить, когда любой последующий звук содержит вхождение «основного звука», выполнив тест на совпадение разницы между вашим предварительно сохраненным набором «основных звуков» и БПФ текущее окно аудиосэмплов. Вы нашли совпадение, когда разница между значениями интенсивности каждой из этих верхних частот X текущего результата БПФ небольшая или отсутствует, по сравнению с каждым предварительно сохраненным «основным звуком».

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

Вот несколько ссылок на аудиодактилоскопию

Отпечатки и распознавание аудио в Python https://github.com/worldveil/dejavu

Отпечаток аудио с помощью Python и Numpy http://willdrevo.com/fingerprinting-and-audio-recognition-with-python/

Shazam-подобный акустический отпечаток непрерывных аудиопотоков (github.com) https://news.ycombinator.com/item?id=15809291

https://github.com/dest4/stream-audio-fingerprint

Отпечатки звуковых ориентиров как модуль Node Stream - nodejs преобразует звуковой сигнал PCM в серию звуковых отпечатков. https://github.com/adblockradio/stream-audio-fingerprint

http://%20https://stackoverflow.com/questions/26357841/audio-matching-audio-fingerprinting

person Scott Stensland    schedule 17.02.2019
comment
На самом деле я не пытаюсь идентифицировать песню по ее отпечатку, я пытаюсь взять одну песню и найти временную стоимость самых сильных ударов в каждом метре. Таким образом, конечный результат должен быть своего рода массивом, например a = [0.25, 0.5, 0.70, 1.10...], где каждое из этих числовых значений представляет собой значение времени (в секундах), которое определяет самый сильный ритм в измерителе. - person whatwhatwhat; 26.02.2019