Применение режекторного фильтра к mp3-файлам в Python путем обработки данных «частота + амплитуда» - PullRequest
0 голосов
/ 15 марта 2020

Я хотел бы применить режекторный фильтр (band stop filter) к коллекции mp3-файлов. Амплитуда должна быть уменьшена до нуля в одной или нескольких стоп-полосах и не изменяться в других местах.

Я надеюсь на простое и без потерь решение, работая непосредственно с mp3-файлами, избегая искажения фильтров, работающих на сэмплированный звук Поскольку mp3-файлы хранят musi c как данные «частота + амплитуда», алгоритм псевдо-языка может быть

load mp3 file
foreach audio channel
    foreach frame
        foreach (frequency/amplitude) pair
            if 3500Hz < frequency < 7000Hz
                amplitude := 0
save mp3 file

. Может кто-нибудь порекомендовать библиотеку и функции для такого доступа и модификации данных mp3, предпочтительно в (но не ограничиваясь) Python?

РЕДАКТИРОВАТЬ: Попытка сбора информации:

Согласно ссылка , аудиоданные в mp3 хранятся в кадрах 32 частотных поддиапазона (или частотных бина). Это то, что я имел в виду под парами «частота + амплитуда».

Согласно link , librosa.read из библиотеки Librosa не поддерживает mp3 и возвращается к audioread, что сэмплирование аудио Это то, чего я хочу избежать.

Кажется, есть библиотеки для разбора Python, C# и Java

https://formats.kaitai.io/id3v2_3/python.html

https://sourceforge.net/projects/csid3lib

https://github.com/mpatric/mp3agic

но я не могу сказать, позволяют ли они изменять другие поля, кроме тегов ID3, и записываю обратно файл mp3.

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