数字电话中利用Goertzel算法实现双音多频DTMF检测的探究和软件实现.docx
- 文档编号:28565476
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:47
- 大小:250.51KB
数字电话中利用Goertzel算法实现双音多频DTMF检测的探究和软件实现.docx
《数字电话中利用Goertzel算法实现双音多频DTMF检测的探究和软件实现.docx》由会员分享,可在线阅读,更多相关《数字电话中利用Goertzel算法实现双音多频DTMF检测的探究和软件实现.docx(47页珍藏版)》请在冰豆网上搜索。
数字电话中利用Goertzel算法实现双音多频DTMF检测的探究和软件实现
数字电话中利用Goertzel算法实现双音多频(DTMF)检测的探究和软件实现
北京理工大学毕业设计
第一章概述....................................................................................................11.1引言............................................................................................................................11.2本文作者所做的工作................................................................................................1第二章产生双音多频检测信号....................................................................32.1DTMF信号概述.........................................................................................................32.2DTMF信号编码.........................................................................................................32.3MATLAB实现流程图...............................................................................................52.4示例演示....................................................................................................................6第三章使用GOERTZEL算法对DTMF信号进行检测............................73.1GOERTZEL算法概述...................................................................................................73.2公式推导....................................................................................................................73.3GOERTZEL修正算法...................................................................................................93.4MATLAB实现流程图(法1)..............................................................................103.5示例演示(频率相应)..........................................................................................113.6MATLAB实现流程图(法2)..............................................................................123.7示例演示(中间信号生成).......................................................................................13第四章GOERTZEL算法中对N值的选择...............................................194.1时间分辨率..............................................................................................................194.2频率分辨率..............................................................................................................194.3频率偏移度..............................................................................................................194.4舍入误差..................................................................................................................204.5满足整周期..............................................................................................................204.6小结..........................................................................................................................22第五章判决门限的选取..............................................................................235.1数值分析..................................................................................................................235.2MATLAB实现流程图.............................................................................................245.3示例演示(容噪性)...............................................................................................25第六章传统的FFT算法.............................................................................266.1示例演示..................................................................................................................266.2判决门限的选取......................................................................................................28
1
北京理工大学毕业设计
第七章GOERTZEL算法与FFT比较.......................................................307.1直接计算DFT运算量的考虑................................................................................307.2DIT-FFT的运算量................................................................................................327.3GOERTZEL算法的运算量.........................................................................................337.4示例演示(时间比较)..........................................................................................33第八章DTMF算法的前景(DSP硬件实现).........................................358.1IP电话系统中语音芯片的DSP实现.....................................................................358.2采用ADSP22100系列的双音多频信号接收器....................................................358.3基于MSP430的嵌入式DTMF拨号解码器.........................................................368.4小结..........................................................................................................................36结束语............................................................................................................37致谢..........................................................................................................38参考文献........................................................................................................39附录..........................................................................................................41MATLAB源程序:
.......................................................................................................41
2
北京理工大学毕业设计
第一章概述
1.1引言
IIR滤波器一个好的应用是全数字双音调多频率(DTMF)按钮式接收器(Jacksonetal,1968;Mock,1985)。
在现代电话系统里,要求建立通信的
信息,并且为了便于维护和指示,这些信息通常由一个多频码提供。
典型的
如电话机产生两个音调,一个是低频音调,另一个是高频音调。
音调产生器可以利用七个正弦信号发生器实现。
当按下一个按钮时,拨
号数字的编码用来从ROM中选择合适的频率系数,产生一对音调(一个是高
频音调,一个是低频音调)。
音调相加产生按钮式信号。
在接收端,信息以8kHz的速率被数字化,接着被前端带通滤波器分隔成
一个低频和高频通带。
为了检测一个音调是否出现,我们进行电平检测。
它
是通过把带通滤波和全波形整流结合在一起后接一个低通滤波器来实现的。
为了检测是低频中的哪一个音调出现,由四个BPF中的两组将低频带分离成四个频带;高频带也是如此。
最后得到的7个电平将传输到判决逻辑单元来
确定接收到的编码。
众所周知,FFT(FastFourierTransform)是DFT的快速算法,然而在DTMF信号检测中却不如DFT,因为FFT必须计算所有的频率点(如256点FFT
必须计算所有256个频率点),而DFT方法可只计算所需的几个频率点(例如,可仅计算256个频率点中的第20个、25个和30个频率点)。
如果只需几个频率点,则用DFT优于FFT。
DTMF信号检测只需计算7个频率点,故本文采用改进的Goertzel算法。
1.2本文作者所做的工作
本论文主要是基于标准IIR滤波器的改进理论算法的研究,根据实际需
要由两个正弦信号发生器产生信号,之后直接幅度叠加当作信号源。
考虑到
实际情况,所以在信号生成后加入噪声(信噪比可调)。
1
北京理工大学毕业设计
本系统主要实现的技术指标如下:
信号幅度:
1
采样率:
8000Hz
信号最短持续时间:
30ms
信噪比:
高于24dB
信号频率分布:
500~1500Hz
为了完成这一课题,作者在学习数字信号处理理论的基础下,熟悉了IIR
滤波器的设计,然后对FFT算法的改进Goertzel算法进行了研究,得到了满足处理要求的算法流程,并对这种算法用MATLAB进行了仿真。
本文论述结构如下:
第一章概述了数字信号处理理论的基本概念和基本理论,简单阐述了本
课题的技术指标。
第二章论述了DTMF信号编码的基本概念和产生方法。
第三章重点介绍了利用Goertzel算法对双音多频信号进行检测,以及
Goertzel的改进算法。
第四章着重讨论了Goertzel算法中对参数N值的选择。
第五章分析了Goertzel算法中对判决门限的选取,并在最后测试了系
统的容噪性。
第六章简要介绍了传统的FFT算法,为下一章的时间与复杂度比较做理
论准备。
第七章Goertzel算法与FFT比较,从理论上分析运算量,并从实际时
间上得到了验证。
第八章对DTMF算法的前景的展望,主要是应用在各公司的DSP芯片上硬件实现。
2
北京理工大学毕业设计
第二章产生双音多频检测信号
2.1DTMF信号概述
双音多频DTMF(DualToneMultiFrequency)信号是音频电话的拨号信
号,由美国AT&T贝尔实验室研制。
快速、准确地检测DTMF信号是实现现代高密集、低成本语音业务的关键。
双音多频DTMF信令,逐渐在全世界范围内
使用在按键式电话机上,因其提供更高的拨号速率,迅速取代了传统转盘式
电话机使用的拨号脉冲信令。
该方式是:
每一个号码由两个音频信号组成,
全部拨号信号由两个频率群组成,即高频群H1-H3和低频群L1-L4,共有七个频率,从高到低可以组成12种双频信号。
具体组合如表1。
电话中的双音多频信号(DTMF)有两种用途:
一是用于双音多频信号的拨
号,去控制交换机去接通被叫的用户电话机;二是利用双音多频信号遥控电
话机各种动作,如播放留言、语音菜单、语音邮件、电话银行和ATM终端(自动取款机)等。
前者解决双音多频信号的发送,后者双音多频信号的接收和解
码。
这些都离不开DTMF信号的正确检测。
目前,大多数的DTMF检测均采用专用芯片,如发送的M75087芯片,接收的M78870芯片。
采用专用芯片接收、
解码的原理都依赖于计算输入信号的过零率。
但这种方法有很大的局限性,
无法检测多路TDMF信号,当混有语音和噪声时,专用芯片检测往往会出现误
差。
如果音频信号频率改变应用于别的系统时,专用芯片就发挥不了作用。
把DSP芯片运用在DTMF信号检测,有人曾试验过。
其原理是用DSP构成数字式带通滤波器,其中心频率随着采样率的不同而改变。
用顺序扫描的方式来
检查每个频率,当某个频率超过给定的门限值时,将其记录,从而确定收到
的是哪一个键的信号。
2.2DTMF信号编码
DTMF编解码器在编码时将击键或数字信息转换成双音信号并发送,解码
时在收到的DTMF信号中检测击键或数字信息的存在性。
电话机键盘上每一个
3
北京理工大学毕业设计
键通过由图1所示的行频与列频唯一确定。
DTMF信号分为高频群和低频群,具体的频率键值及信号标准如表1所示。
表1DTMF频率及其对应的键值
由表1可知,一个DTMF信号由两个频率的音频信号叠加构成。
这两个音
频信号的频率来自两组预分配的频率组:
行频组或列频组。
每一对这样的音
频信号唯一表示一个数字或符号。
根据CCITT规定,DTMF信令每秒最多10个数字,也就是周期为100ms,其中DTMF信号的持续时间不少于45ms,不大于55ms;其余时间为静音信号,
用以区别两个DTMF数字信号。
本设计输出DTMF持续时间为50ms,即400个采样点。
在检测DTMF信号时,不但要检测出DTMF的基波信息,而且还要考虑其
二次谐波的信息。
贝尔试验室所特意选定的这8个频率,只在基波有较高的
能量;而在相同的基波上有较高能量的话音信号在其二次谐波上也叠加有较
高的能量。
因此检测二次谐波的作用就是区别DTMF信号和话音信号。
4
北京理工大学毕业设计
2.3MATLAB实现流程图
创建信号(build.m)
开始
信号幅度s为1
根据输入的信噪比snr产
生高斯白噪声ns
产生基本的7个
频率的sin信号
根据按键选择相
应的两个频率
b=1b=9
b=2
m=x1m=x1m=x3……………….n=x5n=x6n=x7
y=m+n
结束
5
北京理工大学毕业设计
2.4示例演示
分析:
分别用两条虚线表示基础频率信号,用实线表示合成信号,以体
现合成过程。
为了清楚的显示信号,用MATLAB中的axis函数设置x轴坐标t上限为.004,以控制所显示的周期数在2-3个之间。
由于加入了高斯白噪声ns,所以会出现一定的失真。
由于采样率fs固定设置为8000Hz,所以图像会不够圆滑。
6
北京理工大学毕业设计
第三章使用Goertzel算法对DTMF信号进行检测
3.1Goertzel算法概述
一般的专用芯片采用过零率检测,但此法不适用多路信号。
这是因为在
混有语音和噪声时,容易出现误判。
当计算的频率点较少时,Goertzel算法是计算DTF的有效算法。
DTMF解码即是在输入信号中搜索出有效的行频和列频。
计算数字信号的
频谱可以采用DFT及其快速算法FFT,而在实现DTMF解码时,采用Goertzel算法要比FFT更快。
通过FFT可以计算得到信号所有谱线,了解信号整个频
域信息,而对于DTMF信号只用关心其7个行频、列频及其二次谐波信息即可
(二次谐波的信息用于将DTMF信号与声音信号区别开)。
此时Goertzel算法能更加快速的在输入信号中提取频谱信息。
3.2公式推导
N点数据的DFT公式为:
N,1nkXkxnW()(), k=0,1,,N-1
(1),n
n,0nkjN,2/,We,式中,n
NNlog当用FFT算法实现时,共需进行次的复数乘法与加法.它的好处2
是可以得到DFT的所有N点的值.但是实际上我们只需知道DFT的8个值.Goertzel算法从计算DFT入手,推导出一种线性滤波法,在只需计算DFT
logN的M点且M<时更有效。
2
nk,kNWW我们知道,相位因子具有周期性,且=1。
利用这一点,在
(1)Nn
式的两边同时乘以它,得到如下表达式:
kNhnWn()()
(2),, kN
可以看出,
(2)式为一个卷积式.它是长度为N的有限长输入序列x(n)与具有如下单位脉冲响应的滤波器的卷积:
7
北京理工大学毕业设计
N,1
,,kNkNm()XkWXkxmW()()(),,,Nn
m,0这个滤波器在n=N点的输出就是DFT在频率点的值,可以得到该滤波器
的系统函数为:
1Hz,k(),,1k,WzN1
yn()则可以通过差分方程以迭代来计算:
k
KynWynxn()
(1)(),,,kNk
N,1,kynxmWNm()()(),,,kN
m,0
Xkyn()(),y
(1)0,,当n=N时,。
对于每一个k,为一个固定值,kk
它可以预先计算出来并作为常数项使用.但该值一般为复数,给计算带来不便.
通过对滤波器系统函数的变换,其转移函数为:
jkN2/1,,1,ez
Hz(),z,,,1212cos(2/),,kNzz
图1Goertzel算法的模拟框图
8
北京理工大学毕业设计图1是算法框图。
它相当于一个二阶滤波器,对输出的计算采用递归方
式进行:
2,k,,,,, QnQnQnxn()2*cos()*
(1)
(2)()kkk
N
(1)
(2)0,,,, n=0,1,2,,Nkk
kXkYNQNWQN()()()*
(1),,,, 其中kkNk
f算法中,DTMF频率变换成了离散傅立叶系数k,它们之间存在如下的i
fi关系:
*kN,
fs
f式中N是滤波器的计算长度,是采样频率s
Goertzel算法可以用做标准IIR滤波器的替代品,以检测DTMF音调。
Goertzel算法是一种特殊的IIR滤波器的离散博里叶变换(DFT)的实现。
3.3Goertzel修正算法用以前所学的知识,我们知道IIR按直接型设计滤波器,会把传递函数
Hz()Hz()分为两部分和。
试把Goertzel算法的传递函数12
jkN2/1,,1,ez
Hz(),z,,12,12cos(2/),,kNzz
分为两部分,所以
jkN2/1,,Hzez()1,,1
,12HzkNzz()12cos(2/),,,,2
并知道这两个传递函数分别对应相应的传递函数:
2,k,,,,, QnQnQnxn()2*cos()*
(1)
(2)()kkkN
kXkYNQNWQN()()()*
(1),,,, kkNk
Q(n)为中间变量。
考虑到DTMF信号检测不需要相位信息,只需要幅值信
息,因此,对前向部分进行改进,只计算输出幅度平方值。
根据Goertzel
9
北京理工大学毕业设计修正算法,下式变换为:
2*|()|()()XkyNyN,kk
2,k22,,,,,QNQNQNQN()
(1)2cos()
(1)kkkkN经过修正,算法中不在有复
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 电话 利用 Goertzel 算法 实现 双音 DTMF 检测 探究 软件