忙音是某一频率单音和静音交互出现的一种提示音,通常用于表示电话占线。在某些实际应用过程中,需要对这种忙音进行检测。现阶段这类的信号音检测大多是用专用芯片实现的,多数是在出厂前需要预先设定需要检测的频率值等参数。提出一种基于DSP 的软件实现忙音检测的方法,利用单音和静音通过陷阱滤波器后的能量幅值不同来检测单音,再根据单音和静音所占的比例来检测忙音。软件实现不需要额外的芯片,可以集成于已有的DSP 软件中,而且可以灵活配置检测参数,同时检测多种频率忙音。
1单音检测的DSP 实现
1.1 单音检测原理
单音信号检测的方法是将输入信号通过一个陷阱滤波器,然后通过比较输出信号和原始信号的平均幅值来判断是否单音信号,信号的幅值通过一个IIR低通滤波器计算,检测原理框图如图1所示。
图1 单音检测原理
检测过程是先将信号通过陷阱滤波器,陷阱滤波器的谷点频率即为待检测的频率,然后通过一阶IIR计算其长时平均幅度,输出与原始信号通过IIR计算出的长时平均幅度相比较,如果经陷阱滤波器后的信号幅度远远小于原始信号的幅度,则认为存在该频率的单音信号。
检测不同频率单音信号的滤波器系数不同,通过比较经过陷阱滤波器的输出信号和原始信号的平均幅值来判断是否存在单音信号。
1.2 单音检测的DSP 实现方法
检测芯片采用TI 的5510 系列芯片,处理能力达到200 MMIPS,单音信号经过DSP 的串口进入,处理框图如图2 所示,检测过程是先将信号通过陷阱滤波器,然后计算其长时平均幅度,输出与不经过陷阱滤波器的长时平均幅度相比较,如果经陷阱滤波器后的信号幅度远远小于原始信号的幅度,则认为存在该频率的单音信号。
图2 单音检测的算法框图
2 忙音检测的DSP 实现
忙音是由某一频率单音和静音交互出现的一种声音。电信标准中常用的忙音包含的单音信号为450 Hz 或500 Hz,单音和静音持续时间相同,周期为500 ms 或700 ms 2 种。
周期为500 ms 的单音频率为450 Hz 的忙音检测是先通过一个450 Hz 的陷阱滤波器,然后比较输出信号与原始信号的包络. 程序实现时,10 ms 为一个检测样本。如图3 所示,计算500 ms 内检测到450 Hz 的个数,如果个数是50 的一半左右,则检测到1 次周期为500 ms 频率为450 Hz 的忙音,因为交换机送出的忙音都至少有5 个周期以上,为了提高检测准确度,需要持续检测5 次。如果5 次都检测到,则认为检测到持续时间至少为2. 5 s 的忙音。
检测周期为500 ms 的单音频率为500 Hz、周期为700 ms 的单音频率为450 Hz、周期为700 ms 的单音频率为500 Hz 的忙音的方法相同,在程序设计时可以将这4 种不同频率和周期的忙音同步进行。
图3 忙音检测框图
3 忙音检测实验和性能分析
3. 1 忙音检测实验
如图4 所示,电信交换机用户口接二台普通话机,计算机通过交换机维护口监控检测寄存器。
图4 忙音检测实验图
( 1) 电话占线的忙音检测实验
话机B 摘机,然后用话机A 拔打话机B,通过计算机观察检测话机A 所在用户口忙音检测寄存器,发现寄存器有置位。话机A 摘机,用话机B拔打话机A,通过计算机观察检测话机B 所在用户口忙音检测寄存器,发现寄存器有置位。重复实验,未发现漏检情况发生。
( 2) 通话中的忙音检测实验
用话机A 拔打话机B,接通后然后话机A 挂机,通过计算机观察检测话机B 所在用户口忙音检测寄存器,发现寄存器有置位。用话机B 拔打话机A,接通后然后话机B 挂机,通过计算机观察检测话机A 所在用户口忙音检测寄存器,发现寄存器有置位。重复实验,未发现漏检情况发生。
3. 2 忙音检测性能分析
( 1) 如何区分2 种忙音
一种忙音是一方拔打另一方电话,对方占线,交换机送给拨打方的提示音。另一种是在通话建立以后一方把挂断交换机送给另一方的提示音。前一种忙音检测是在通话未建立进行的,后一种忙音检测是在通话建立后进行的,所以这2 种检测不会出现相互影响的情况。
( 2) 忙音检测的设定
忙音检测对声音采样时并不知静音何时开始,单音何时开始,所以可能从静音或单音的中间开始采样,在检测开始时、单音和静音转换时、检测结束时的都可能会出现一次检测结果不准确。所以在一个周期内存在单音个数占50% 的判断时需要留有一定的余量,可以根据要求设定一个范围( 如45%~ 55%) 。
( 3) 忙音检测的风险
这种方法对忙音检测是根据忙音中单音和静音的持续时间相同的特性来检测的,在一个周期内单音出现的次数来确定是否为忙音。当出现一个周期内单音出现的次数与忙音相同、频率相同、周期为忙音周期的一半或者四分之一等的声音时,也会被误检为忙音。现阶段关于提示音的标准中,不存在这样的声音,不会出现误检的情况,所以程序可以被实际应用。
4 结束语
基于DSP 的忙音检测只需调节陷阱滤波器的参数和检测周期就可以实现对不同频率和周期的忙音进行检测。实现占用资源较少,程序移植方便,可以集成于具有其他功能的DSP 程序中。通过电话实验,在预先设定一定检测冗余的情况下,这种方法可以准确地检测到不同类型的忙音,从而实现自动挂机和自动重拔功能。同时基于DSP 的忙音检测方法是基于检测计数统计,在现行的邮电标准中,不存在能干扰检测结果的提示音,可以应用于普通电信设备中。