Соедините два аудиофайла с помощью Python, чтобы получить перекрывающийся звук

У меня есть два аудиофайла, и я хочу сравнить файлы друг с другом в python3.

Вот пример двух аудиофайлов с частотой по оси x:

Аудио А

Аудио Б

Знаете ли вы, как создать новый аудиофайл, содержащий только перекрывающиеся частоты? (Можно сравнить с "внутренним соединением" в MySQL)

Для фильтрации и редактирования аудиофайлов я использовал ThinkDSP (https://github.com/AllenDowney/ThinkDSP)


person v0iZz    schedule 02.10.2019    source источник
comment
Это для шумоподавления образца A с образцом B (или наоборот)? Или обнаруживать один звук внутри другого?   -  person Jon Nordby    schedule 14.10.2019
comment
Цель состоит в том, чтобы сравнить множество образцов, чтобы получить представление о том, как выглядит средний образец. После этого вы можете сравнить среднюю выборку с записанными новостями. Так что на самом деле вы могли бы это для обоих   -  person v0iZz    schedule 16.10.2019


Ответы (1)


шаг 1 просто игнорируйте перекрытие частот на данный момент ... и выполните работу по преобразованию звука (во временной области) с помощью БПФ, который предоставит вам данные (частотный домен), здесь у вас есть массив частотных бинов, каждый с амплитудой и фазой сдвиг ... затем подайте эти данные в обратный БПФ, чтобы ваши данные снова были аудио (временная область) ... хороший способ подтвердить, что ваш код работает, если ваш аудиовыход будет соответствовать вашему аудио в

шаг 2 после того, как приведенный выше код работает нормально, затем улучшите приведенный выше код, чтобы сделать значение 0 величиной (амплитудой) каждого частотного бункера (частотного домена), который не имеет перекрытия ... это так просто

На шаге 2 ваши данные находятся в частотной области (после того, как звук был отправлен в вызов FFT), который обычно представляет собой массив комплексных чисел ... вот какой-то псевдокод для синтаксического анализа этого массива

Вы столкнетесь с проблемой использования как можно меньшего количества аудиосэмплов для получения максимальной степени временной специфичности (если вы используете слишком много аудиосэмплов, ваш звук будет звучать как каша) ... однако, если вы используйте слишком мало аудиосэмплов, ваша детализация частотных бункеров будет низкой, что означает, что у вас будет большее приращение между каждой частотой в вашем частотном домене

person Scott Stensland    schedule 03.10.2019
comment
Спасибо за совет. Я собираюсь попробовать, но я не уверен, как достичь шага 2 с помощью python. Вы используете определенную библиотеку Python, отбрасывающую частотные домены, которые не совпадают автоматически? - person v0iZz; 03.10.2019