如何在iphone中以编程方式检测dtmf音?我想检测接收的音频信号(麦克风输入)是否应该是dtmf音?
Plz帮帮我?我真的很喜欢这个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信号。