如何从 DTMF 音调中获得低频 [关闭]

Posted

技术标签:

【中文标题】如何从 DTMF 音调中获得低频 [关闭]【英文标题】:how get low frequency from DTMF tone [closed] 【发布时间】:2010-09-18 22:07:07 【问题描述】:

您好,在 python 中创建了一个源,用于从音频文件中获取基本频率,我想用它来从 DTMF 音频中获取音调!

但是如何从音频中获得低音?

谢谢!!


我确实应用了 FFT,但它总是返回高频。

这里的频率表

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

例如,当我得到一个键为“1”的 .wav 音频文件时,我只有频率 1209

在这种情况下如何获得键“1”的低频是 697,FFT 不要给我这个:-(

【问题讨论】:

John Etherton 为 DTMF tone detection in Python on his blog. 发布了一个不错的模块 由于 DTMF 原则上是等幅正弦音,因此应该可以仅通过计算过零来进行此测试,对吧? @synthesizerpatel 我知道这个答案来自十多年前,但链接不再有效:| ——有更新的链接吗?还是我们运气不好? 【参考方案1】:

要获得出现在波形(任何声音,不仅是 DTMF 和所有其他波形)中的频率,您可以应用快速傅里叶变换。

当您将其应用于 DTMF 时,您将获得信号包含的两个频率的两个峰值。

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

【讨论】:

【参考方案2】:

由于您只需要使用 DTMF 的几个频率的信息,您可能想尝试对每个频率使用 Goertzel algorithm。您不需要所有的 FFT 箱;并且您可能能够更精确地定位感兴趣的频率,具体取决于时间窗口,然后是 FFT 箱最终居中的位置。

将 Goertzel 滤波器的幅度输出与 RMS 总能量进行比较,以做出是否存在音调的决定。然后在表格中查找 DTMF frequencies 以获取代码。

【讨论】:

以上是关于如何从 DTMF 音调中获得低频 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 WAV 文件中解码 DTMF

csharp 在C#中生成WAV格式的dtmf音调

如何防止 iPhone 3GS 过滤低频(<150Hz)

如何在 android 实时通话期间以编程方式发送 Dtmf 音?

数字信号基于matlab DTMF电话拨号音识别含Matlab源码 218期

数字信号基于matlab GUI DTMF电话模拟系统(频谱图+时域图+语谱图)含Matlab源码 2092期