matlab 实现dtmf 信号检测代码,基于matlab的连续DTMF信号检测的程序实现

2009 年第 4 期福 建 电 脑基于 matlab 的连续 DTMF 信号检测的程序实现 张 昊 ( 河南师范大学 计算机与信息技术学院 通信工程专业 2006 级 河南 新乡 453007 ) 【摘 要】: 本文主要介绍了手机按键音也就是 DTMF 信号的检测方法。 并对 DTMF 信号的原理和 Goertzel 算法进行了 简要的解析。程序通过计算信号的短时能量和短时过零率,对信号在频域上进行分析,成功的找出了按键音对应的数字号码。 相信在低噪声环境下的信号检测能有一定的应用价值。 【关键词】: 端点检测 Goertzel 算法 DTMF 语音信号处理 1、概述: 本论文通过对手机连续按键音的时域和频域分析, 来识别手机按键号码。 语音信号处理一直是一个重要的研究领域, 已经有很长的研究历史。其中重要的原因就是,它能够始终与信息科学中最活跃的前沿学科保持密切的联系。 语音信号处理算法的复杂性和实时处理的要求,促使人们在软硬件方面不断的进行探索。鉴于大部分的现有文献资料都缺乏详尽的底层描述和具体的实现过程, 不适合初学者的入门学习。 本文针对此问题, 仅仅在连续DTMF 信号检测的具体实现方面进行探讨, 并在 matlab 语言环境下加以编程实现,以期对初学者能有很好的启发作用。 要实现对连续 DTMF 信号的检测,主要有两大任务:端点检测和信号解码。 其中端点检测主要利用声音信号的短时能量或短时过零率两项基本指标,设置信号识别门限值,对连续的按键音进行区域分割,找出每一个按键音的时域范围。信号解码主要针对前一步分割好的声音信号, 利用 Goertzel 算法在相应的频点上进行快速傅里叶变换,提取出频谱信息,找到信号编码时的行频和列频。然后在 DTMF 信号的编码对照表中查找。找出组合频率对应的数字号码,将结果显示出来。 2、几个基本概念: DTMF(Dual Tone Multi Frequency):即双音多频信号,广泛的使用在全世界范围内的按键式电话机上。 现今应用于通过电话发送信号来选择菜单操作的各种系统中。 一个 DTMF 信号由两个频率的音频信号叠加构成。 这两个音频信号的频率来自两个预分配的频率组:行频组和列频组。每一对这样的音频信号唯一表示一个数字或符号。为了产生 DTMF 信号,可以产生两个正弦波叠加在一起后发送。 解码时可以采用 Goertzel 算法,从频域搜索两个正弦波的存在,从而解调出 DTMF 信号。 信号编码如图 1 所示: 图 1 短时能量(Short Term Energy):音频信号时域分析的重要参数, 对信号的帧内样本求和, 是区分信号和噪声的一项技术指标。 用下面的公式表示:(N 为帧长度) 过零率(Zero Crossing Rate):音频信号时域分析的又一重要参数,表示一帧语音中信号波形穿过横轴(零电平)的次数。 对于连续信号, 过零率意味着时域波形通过时间轴; 而对于离散信号,如果相邻的采样值改变符号则称为过零。定义短时过零率的公式为: 其中: 3、信号检测的实现过程: 要识别出连续的 DTMF 信号,首先要进行的就是端点检测,即从输入音频信息中将信号音和背景噪声区分开来。 然后信号解码就是要对每一段单独的信号声音做 fft 变换,在频域中找到信号编码时的两个组合频率。 这里采用 Goertzel 算法从输入信号中提取频谱信息。 最后将找到的行频和列频与 CCITT 的国际标准频率进行比照,从而找出具体按的按键号码。 3.1 端点检测: 所谓端点检测, 就是从一段连续的按键音中找出每一个单独声

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值