如何在iphone中以编程方式检测dtmf音?

时间:2011-04-18 11:40:03

标签: iphone ipad ios4

如何在iphone中以编程方式检测dtmf音?我想检测接收的音频信号(麦克风输入)是否应该是dtmf音?

Plz帮帮我?我真的很喜欢这个2天。 在此先感谢.....

2 个答案:

答案 0 :(得分:1)

由于DTMF系统仅使用8个纯正弦音,因此使用调谐滤波器组或Goertzel算法检测那些频率的能量存在比使用FFT更有效。

Goertzel算法的维基百科页面具有良好的伪代码,用于算法的工作原理。将其转化为(目标)C应该不会太难。

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

通过那里运行音频,每100毫秒左右测量一次功率输出。这将是一项相当的工作 - 祝你好运!。

答案 1 :(得分:0)

您可以在小时间窗口上使用8个窄带滤波器和幅度平均。这两个过程通常使用Goertzel算法的变体一起完成。

可以做的另一件事是使用RMS平均器测量同一时间窗口内所有频率的总平均幅度。当只有2个滤波器窗口的能量占总信号能量的大部分时,那么您可能有一个DTMF​​信号。要解码DTMF,您可以根据哪个2个过滤器显示能量来进行表查找。如果音频中的总能量比仅仅2个滤波器中的总能量多得多,那么整个音频信号可能是噪声,而不是DTMF信号。