2010-09-18 4 views
-1

Привет, я сделал один источник в python для получения фундаментальных частот из аудиофайлов, я хочу использовать это для получения тонов из DTMF-аудио!как получить низкую частоту от тона DTMF

но как получить низкие тона от звука?

thks !!


Точно им применяется БПФ, но его возвращение всегда Высокой частоты.

стол для frequencys здесь

http://www.mediacollege.com/audio/tone/dtmf.html

Для Exemple, когда я получаю один .wav звуковой файл ключа «1» У меня есть только requency 1209

как получить низкую частоту в этом case for key «1» - 697, FFT не дает мне этого :-(

+0

так как DTMF, в принципе, имеет равные амплитудные синусоиды, это должно быть возможным для этого теста, просто подсчитав нулевые пересечения, верно? – flies

+0

John Etherton опубликовал хороший модуль для обнаружения DTMF-тона в Python в своем блоге.] (Http://johnetherton.com/projects/pys60-dtmf-detector) – synthesizerpatel

ответ

3

Чтобы получить частоты, которые появляются в волне (любой звук, а не только DTMF и все другие формы волны), вы можете применить Fast Fourier Преобразование.

Когда вы применяете его к DTMF, вы получите два пика для двух частот, которые содержит этот сигнал.

http://en.wikipedia.org/wiki/Fast_Fourier_transform

3

Так как вам нужно только информация о нескольких частотах с DTMF, вы можете попробовать использовать Goertzel algorithm для каждой частоты. Вам не нужны все БПФ; и вы можете ориентироваться на частоты интереса более точно, в зависимости от временного окна, а затем, где Бункеры FFT центрируются.

Сравните величины выходов фильтров Goertzel с общей энергией RMS, чтобы принять какое-то решение о присутствии тона. Затем найдите таблицу для получения DTMF frequencies, чтобы получить код.