如何从 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 音调中获得低频 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 实时通话期间以编程方式发送 Dtmf 音?