从WAV文件检测DTMF [英] DTMF detection from a wav file

查看:99
本文介绍了从WAV文件检测DTMF的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是一名工程专业的学生,​​必须解决有关信号处理的学术问题.

I'm an engineering student and I have to solve an academic problem regarding signal processing.

基本上,给定wav格式的DTMF信号,我必须确定其已编码的数字序列.我必须在Matlab环境中使用离散傅立叶变换分析来执行此操作,以构建一个读取wav文件并通过该过程识别拨号音中数字的脚本.

Basically, given an DTMF signal in wav format, I have to identify the number sequence it has encoded. I must do so using discrete fourier transform analysis in Matlab environment, to build a script that reads the wav file and through the process identifies the numbers in the dial tone.

从某种意义上来说,我对Matlab环境不太满意,并且整个离散傅立叶分析对我来说还是很新的,所以我感到有些困惑.

I'm having trouble in the sense that I'm not really confortable with the Matlab environment and the whole discrete fourier analysis is also very new to me, so I feel kinda lost.

有人能分享一些好的技巧或指示吗?

Does anyone have some good tips or pointers that they can share?

推荐答案

对于DTMF检测,DFT(或FFT)是过大的.您只需要2 x 4个Goertzel滤波器即可检测低音和高音.每个Goertzel滤波器的输出都需要进行低通滤波,以防止检测到噪声,但除此之外,它非常简单.

A DFT (or FFT) is overkill for DTMF detection. You just need 2 x 4 Goertzel filters for detecting the low and high tones. The output of each Goertzel filter will need to be low pass filtered to prevent detection of noise, but other than that it's pretty straightforward.

如果必须使用DFT/FFT,则一般方法是:

If use of DFT/FFT is mandatory then the general approach would be:

  • 对于每个输入样本块
    • 应用合适的窗口(例如汉宁)
    • 执行DFT
    • 计算每个DFT仓的大小(re * re + im * im)
    • 在8个仓中的每个仓上测量幅度,它们对应于2 x 4 DTMF音调
    • 如果您有一个高音组音调和一个低音组音调,其幅度明显大于音色组中的其他音调,则表示已检测到DTMF音调对

    这篇关于从WAV文件检测DTMF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆