FFTW для экспоненциальной частоты оси - PullRequest
1 голос
/ 14 марта 2011

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

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

Спасибо.

Ответы [ 2 ]

3 голосов
/ 14 марта 2011

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

1 голос
/ 14 марта 2011

Я видел libsndfile повсюду:

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

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

...