一、引言 DTMF(双音多频)信号是电话网中常用的信令,无论是家用电话、移动电话还是程控交换机上,多采用DTMF信号发送接收号码。DTMF技术还可以用于电力线载波通信等场合。可见,DTMF拨号和解码在通信系统及其它方面有着广泛的应用。DTMF信号的解码目前常用的方法有两种:一种方法是采用滤波器组来分离8个DTMF信号。滤波器组的实现既可以用模拟滤波器,也可以用数字滤波器,这种方法在时域中进行分离。第二种方法是采用DFT或者Goertzel算法来检测8个信号的强弱,这种方法在频域中进行分离。然而,上述两种传统的DTMF信号检测方法都存在一定的缺陷,即在强信道噪声干扰下常常不能正确工作。本文提出了一种新的基于改进的ADALINE(Adaptive Linear
Neuron)神经网络的DTMF信号检测算法,其结构简单计算量适中,并且能够在强背景噪声干扰下正常检测,实验显示它比传统方法有更强的抗干扰能力。文章首先介绍了基于改进的ADALINE神经网络的DTMF信号检测算法,然后给出了此方法的仿真结果,最后给出了采用TMS320C5402 DSP和TLV320AIC10 AIC实现DTMF信号检测器的工程应用方案设计。
二、DTMF信号
DTMF信号是将拨号盘上的0~9、A~D及*/E、#/F共16个字符,用音频范围的8个频率来表示的一种编码方式。8个频率分为高频群和低频群两组,分别作为列频和行频。每个字符的信号由来自列频和行频的两个频率的正弦信号叠加而成。频率组合方式如图1所示。
Frequency
|
1209Hz
|
1336Hz
|
1477Hz
|
1633Hz
|
697Hz
|
1
|
2
|
3
|
A
|
770Hz
|
4
|
5
|
6
|
B
|
852Hz
|
7
|
8
|
9
|
C
|
941Hz
|
*/E
|
0
|
#/F
|
D
|
根据ITU-R Q.23建议[1],DTMF信号的技术指标是:传送/接收率为每秒约10个号码,或每个号码120ms。每个号码传送过程中,信号存在时间至少65ms,且不多于75ms,120ms的其余时间是静音。在每个频率点上允许有不超过 1.8%的频率误差。任何超过给定频率 3.5%的信号,均被认为是无效的,拒绝承认接收。另外,在最坏的检测条件下,信噪比不得低于15dB。
三、基于改进的ADALINE神经网络的DTMF检测算法
神经网络是信号处理发展的一个新方向,它可以在先验知识未知的情况下,通过对输入信号的自学习,实时调整网络的权系数和偏置值,使网络得到最佳的期望输出。神经网络具有内在的自适应性和非线性,能够得到鲁棒性和抗干扰能力更强的系统[3]。
ADALINE神经网络是Widrow和Hoff提出的[2,3],它的一般结构如图2所示,采用LMS算法。输入信号x(n)及其延迟序列是网络的输入,网络输出a(n)与某个目标输出t(n)的差得到误差信号e(n),然后网络按照LMS算法调整权系数和偏置值,并按此方式循环处理。
图2 |
ADALINE神经网络非常适合于信号的检测与提取或噪声消除,此时它的一般结构如图3所示[1]。在一定的噪声参考输入下,网络能够自适应的跟踪和捕捉混杂信号中的相应成分,网络输出企图逼近待检测的混杂信号,但是因为噪声参考信号与有用信号不相关或者弱相关,它只能复制到与噪声参考信号强相关的成分。于是混杂信号中的噪声成分被自适应的跟踪,进而可以被消除,误差信号"恰好"就是恢复出来的有用信号。这种结构的ADALINE神经网络在飞机客舱消噪系统和脑电图检测等方面得到了成功的应用[2,5,6]。
图3 |
然而,实践表明,一般结构的ADALINE网络(图2或图3)用于检测DTMF信号的效果并不好,需要进行改进。DTMF信号的检测可以看成是要在受噪声污染的信号中检测并判断是否存在某个特定信号(8个频率的信号)。基于这一点,我们提出了一种如图4所示的改进的ADALINE神经网络,非常适合于DTMF信号的检测。它与一般结构的ADALINE网络有两点不同:(1)它用DTMF分量参考信号作网络的输入,而把待检测信号作为期望输出。(2)增加一个非线性处理环节,非线性地增强或抑制网络的跟踪结果以增强网络的效果。
改进的ADALINE神经网络(图4)的工作原理如下:
x(n)是受噪声污染的待检测输入信号,它作为网络的期望输出;提供给网络的输入是某个特定的DTMF分量频率正弦信号ref(n),其频率是8个DTMF频率之一;网络自适应跟踪的中间信号是a(n)。非线性环节对a(n)进行进一步的增强或抑制,最终网络输出是y(n)。
神经网络跟踪的期望值是待检测的输入信号x(n),而且LMS算法试图将误差信号e(n)减至最小。但是由于网络输入是某个特定的DTMF分量频率参考信号ref(n),所以它只能复制到与ref(n)信号强相关的信号,而不能复制到与ref(n)信号不相关或弱相关的噪声信号。如果x(n)中含有该特定频率的信号,则参考信号与输入信号匹配,网络就能得到很强的信号a(n)。相反,如果x(n)中不含有该特定频率信号,则参考信号与输入信号不匹配,网络的中间信号a(n)就会很弱。同时,非线性环节会对较强的a(n)信号进一步的增强,而对较弱的a(n)信号进一步的抑制。这样,通过判断神经网络输出信号的强弱,就能判断出待检测的输入信号中是否存在该特定DTMF分量频率的信号。
改进的ADALINE神经网络采用LMS算法[2],LMS算法本质是以最小均方误差为准则的近似的最速下降算法。它以均方误差为性能函数F(x),定义如下
神经网络的各个参数需要通过试验来确定。经过试验,对于DTMF检测,选用只含有2个权系数和1个偏置值的网络就可以胜任,也就是在图4中,只需要w1/w2/b三个参数,结构简单,计算量小。
对每个DTMF分量频率都设置一个如图4所示的神经网络单元,在每个检测周期对8个神经网络单元的输出进行判断并简单分析,就可以实现DTMF解码。
四、基于改进的ADALINE神经网络的DTMF解码仿真结果
为了验证上述基于改进的ADALINE神经网络的DTMF检测算法,我们在MATLAB上使用Neural Networks Toolbox进行了仿真。
仿真条件和参数选择:模拟实际信道中常见的高斯白噪声情况,待检测输入信号x(n)是DTMF信号和信道噪声的叠加,输入信噪比SNR是-3dB。为了讨论方便,假定每个DTMF分量的幅度是+/-2V(只要进行比例缩放就可以适用实际情况),两个分量信号幅度之和为+/-4V,并假定ADC接口之前的预处理电路的限幅电平是+/-5V,即两个有用信号幅度之和占限幅电平的80%。改进的ADALINE神经网络单元选择含有2个权系数和1个偏置值,采用LMS算法,学习速度 选0.02。待检测信号SNR=-3dB,采样频率为8KHz,采样时间20ms。非线性环节的门限threshold选定为1.0V。
仿真结果如下:以"*"键为例,DTMF信号为941Hz/1209Hz。图5上图为纯DTMF信号和高斯白噪声信号,下图为二者的叠加信号,即待检测信号x(n)。
图5 |
图6为对应941Hz的神经网络单元的输出,上图为中间信号a(n),下图为网络输出信号y(n)。从图中可以看出,网络很快就能捕捉到输入中的941Hz信号,输出信号很强并且从12ms开始就基本稳定。因此系统判断为输入信号中含有941Hz的信号。对应1209Hz的神经网络单元也类似。
图7为对应1336Hz的神经网络单元的输出,上图为中间信号a(n),下图为网络输出信号y(n)。从图中可以看出,网络输出信号一直很弱并且也基本稳定。因此系统判断为无法捕捉到1336Hz信号,即输入信号中不含有1336Hz的信号。另外5个神经网络单元也类似。
图7 |
图6和图7中红色虚线表示非线性环节的门限。由此可以看出,系统判断出输入信号中含有941Hz/1209Hz的信号,不含697/770/852/1336/1477/1633Hz信号,从而实现"*"键号码的正确解码。
当输入DTMF信号为其他频率组合时的情况与上述结果类似,都能正确解码。其他仿真结果表明它在信噪比为-3dB以下仍能准确检测。
五、工程应用方案设计
采用上述基于改进的ADALINE神经网络的DTMF检测算法,在TMS320C5402 DSP和TLV320AIC10 AIC上实现DTMF信号检测器硬件结构如图8所示。
TMS320C5402是一款性价比很高的16位定点DSP[9],采用改进的哈佛结构,速度达100MIPS,并具有丰富的片上外设资源,非常适合于语音信号处理,有线或无线通信等通信类应用场合。TLV320AIC10是一款模拟接口芯片(AIC) [10],具有一对采用Sigma-Delta调制技术的16位采样频率达22KHz的ADC/DAC,还内含相关的滤波与增益控制等电路。TLV320AIC10能与TMS320C5402实现无缝接口,配合使用。
需要说明的是:DTMF解码功能通常只是由DSP与AIC组成的通信处理系统的一部分。TMS320C5402强大的处理能力与DSP/AIC丰富的片上资源再配以外围电路足以实现系统所需的其他功能。本文只谈及DTMF解码功能。
TLV320AIC10设置为采样频率8KHz,Master模式,帧同步为Pulse模式。如图8所示,来自电话线的信号经过接口预处理电路后送入AIC的ADC进行模数转换,然后通过McBSP串口与TMS320C5402通信,把采样数据送入DSP,同时进行A律扩展,以备后续处理。
图8 |
对每个样点逐个计算8个神经网络单元的输出值并按照LMS算法更新网络参数,然后等待下一个新样点的到来。经过20ms周期即180个样点处理,可以得到8个网络单元的输出幅值,它定义为从12ms到20ms之间的输出值平均。
当8个网络单元的输出幅值计算出来后,还要进行DTMF有效性检验,以判定是否为有效的DTMF信号。有效性检验包括以下几项内容:(1)高、低频段的最大幅值都必须大于某个门限值,而且二者之和也要大于某个门限值。(2)高、低频段的最大幅值与各自频段其它三个幅值相比,其差值必须大于某个门限值。(3)逆向绞度检验即低频段最大幅值不得超过高频段最大幅值8dB,标准绞度检验即高频段最大幅值不得超过低频段最大幅值4dB。(4)高、低频段最大幅值之和与其它6个幅值之和之比,必须大于某个门限值。
若上述检验通过,判定当前周期DTMF信号有效,根据频率组合可确定是对应哪个号码。但要确认接收到一个有效的号码,还要满足两个条件,一是要有两个以上连续周期的有效且相同的DTMF信号,以保证信号持续时间,二是前面有足够的静音时间,以避免重复识别。由于每个周期是20ms信号,可以保证一位号码能接收到两个完整的DTMF信号周期。程序流程图如图9所示。
图9 |
六、结语
传统DTMF信号的解码方法有两种:滤波器组法和Goertzel/DFT算法。针对传统DTMF信号检测方法抗干扰能力不足的问题,本文提出了一种新的基于改进的ADALINE神经网络的DTMF信号检测算法,并介绍了在TMS320C5402 DSP和TLV320AIC10 AIC上采用此算法的DTMF信号检测器工程应用方案设计。仿真结果和实际工程实验均表明它比传统方法具有更强的抗干扰能力,该方案具有一定的实用和参考价值。