FFTW для экспоненциальной оси частот

У меня есть группа связанных вопросов, касающихся FFTW и анализа звука в Linux.

  • Какая самая простая в использовании и наиболее полная аудио библиотека в Linux / Ubuntu, которая позволит мне декодировать любой из множества аудиоформатов (MP3 и т. Д.) И получить буфер необработанных 16-битных значений PCM? gstreamer?
  • Я намерен взять этот необработанный буфер и передать его в FFTW для получения данных частотной области (без сложной информации или информации о фазе). Думаю, мне следует использовать один из их методов "r2r", возможно, DHT. Это правильно?
  • Кажется, что ось выходной частоты FFTW дискретизируется с линейными приращениями, основанными на длине буфера. Кроме того, кажется, что я не могу изменить эту дискретизацию в FFTW, поэтому я должен сделать это после DHT. Вместо линейной оси частот мне нужна экспоненциальная ось, которая следует за 2^(i/12). Думаю, мне придется взять вывод DHT и прогнать его через какую-нибудь настраиваемую функцию сглаживания. Есть ли библиотека Linux для такого сглаживания? Если нет, будет ли работать базовая функция сглаживания на основе косинусов?

Спасибо.


person Reinderien    schedule 14.03.2011    source источник
comment
У вас есть три вопроса. Разбив его на три вопроса, вы получите три разных набора тегов, привлечете три разных и более целенаправленных группы людей, которые будут смотреть на него, и позволите вам принять три разных ответа.   -  person wnoise    schedule 14.03.2011
comment
stackoverflow.com/questions/1120422/   -  person wnoise    schedule 14.03.2011


Ответы (2)


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

person Paul R    schedule 14.03.2011

Я видел повсеместно используемую libsndfile:

http://www.mega-nerd.com/libsndfile/

Это тоже LGPL. Он может читать практически все аудиоформаты с открытым исходным кодом и без потерь, которые вам интересны. Однако он не поддерживает MP3 из-за затрат на лицензирование.

person homebrew    schedule 14.03.2011