如何从DTMF音调中获取低频信号

-1 投票
2 回答
1683 浏览
提问于 2025-04-16 04:19

嗨,我用Python写了一个程序,可以从音频文件中提取基本频率。我想用这个程序来获取DTMF音频中的音调!

但是我该怎么从音频中获取低频音调呢?

谢谢!!


其实我在使用快速傅里叶变换(FFT),但它总是返回高频率。

这里有一个频率的表格

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

比如说,当我获取一个按键“1”的.wav音频文件时,我只得到了频率1209。

但我想要的低频率是697,FFT却没有给我这个结果 :-(

2 个回答

3

要找出波形中出现的频率(不管是什么声音,不仅仅是双音多频信号DTMF,还有其他所有波形),你可以使用快速傅里叶变换。

当你把它应用到DTMF信号上时,你会看到两个峰值,分别对应信号中包含的两个频率。

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

3

因为你只需要处理几个特定的频率来识别DTMF信号,所以你可以试试使用Goertzel算法来分析每个频率。你不需要处理所有的FFT(快速傅里叶变换)数据点;而且根据你选择的时间窗口,你可以更精确地针对你关心的频率,而不必依赖FFT数据点的中心位置。

接下来,把Goertzel滤波器的输出幅度和总能量的均方根(RMS)进行比较,这样你就可以判断某个音调是否存在。然后,你可以查找DTMF频率,从中获取对应的代码。

撰写回答