如何从DTMF音调中获取低频信号
嗨,我用Python写了一个程序,可以从音频文件中提取基本频率。我想用这个程序来获取DTMF音频中的音调!
但是我该怎么从音频中获取低频音调呢?
谢谢!!
其实我在使用快速傅里叶变换(FFT),但它总是返回高频率。
这里有一个频率的表格
http://www.mediacollege.com/audio/tone/dtmf.html
比如说,当我获取一个按键“1”的.wav音频文件时,我只得到了频率1209。
但我想要的低频率是697,FFT却没有给我这个结果 :-(
2 个回答
3
要找出波形中出现的频率(不管是什么声音,不仅仅是双音多频信号DTMF,还有其他所有波形),你可以使用快速傅里叶变换。
当你把它应用到DTMF信号上时,你会看到两个峰值,分别对应信号中包含的两个频率。
3
因为你只需要处理几个特定的频率来识别DTMF信号,所以你可以试试使用Goertzel算法来分析每个频率。你不需要处理所有的FFT(快速傅里叶变换)数据点;而且根据你选择的时间窗口,你可以更精确地针对你关心的频率,而不必依赖FFT数据点的中心位置。
接下来,把Goertzel滤波器的输出幅度和总能量的均方根(RMS)进行比较,这样你就可以判断某个音调是否存在。然后,你可以查找DTMF频率,从中获取对应的代码。