杨 军,周启靖,晋宗俊,邓 莎
(武汉龙安集团有限责任公司,湖北 武汉 430074)
语音信号检测(Voice Acess Detect,VAD)技术,目的是为正确区分语音与各种背景噪声。在语音信号处理和通信等领域,它有着十分重要的意义。本套算法集成了短时能量、过零率与短时平均幅度差(AMDF)检测等算法的组合。
短时分析将语音流分帧处理,为减小语音帧的截断效应,需要加窗处理;窗口的形状和长度对分析影响很大,不同的分析方法对窗函数的要求不尽一样;可分为矩形窗、汉明窗和汉宁窗等。
通常认为一个语音帧内含有1~7个基调周期比较理想,但人的语音的基调周期值是变化的,从女性和儿童2ms到老年男子的14ms(即基调频率为500Hz~70Hz),所以N的选择是比较困难的,折衷的选择N为100~300点比较合适。
一段短语音信号的能量称为短时能量,第n段的短时能量由En表示,它等于该短段语音取样的平方和,设第n帧语音信号xn(m)的短时能量用En表示,则其计算公式如下:
算法中使用短时能量的主要目的是:去除背景语音对VAD效果的影响,去除幅度较小的噪声对VAD效果的影响。
过零表示信号通过零值,过零率即每秒内信号值通过零值的次数。对于离散时间序列,过零则是指序列取样值改变符号,过零率则是每个样本改变符号的次数。对于语音信号,则是指在一帧语音中语音信号波形穿过横轴(零电平)的次数,可以用相邻2个取样改变符号的次数来计算。
对于完全的周期信号,则相距为周期的整数倍的采样点上幅值相等,差值为0。实际的语音信号是一个准周期信号,差值不为0,但很小,这些极小值将出现在整数倍周期的位置上。定义短时平均幅度差函数:
AMDF函数在浊音基音周期上出现极小值,在清音语音时无明显极小值。在此基础上,为避免由于信号强弱带来的误差,需要对AMDF函数进行归一化处理。
语音信号是一种时变的、非平稳的随机过程,从整体来看其特征及表征其本质特征的参数均是随时间变化的。但是,语音的形成过程与发声器官的运动密切相关,这种物理运动比起声音振动速度来要缓慢得多,因此语音信号可以认为在一个较短的时间段内是平稳的,即具有短时平稳性。
根据语音信号的这一特点,结合所采用的算法的需要,语音帧的长度定为16ms,下文将详细介绍算法的实现。
①短时能量检测函数:power_proc(),输入参数为存放采集一帧数据的地址,算法流程图如图1所示。
图1 短时能量算法流程图
②短时过零率函数:zero_proc(),输入参数为存放采集一帧数据的地址,算法流程图如图2所示。
图2 短时过零率算法流程图
③短时平均幅度差函数:amdf_proc(),输入参数为存放采集一帧数据的地址。其中D(N)存放的是不同Z(基音周期)得到的幅度差,算法流程图如图3所示。
语音检测时,为保证检测的准确性,连续10帧检测有效时才认为确实有语音,连续20帧检测无效时才认为确实无语音。为了满足多帧检测需求,又不至于出现掉字情况,同时还要保证检测信号和语音信号的同步性,设计了一个环形缓冲区,模拟语音通道1和通道2各有一个对应的环形缓冲区delay1和delay2,每一个环形缓冲区都有3个指针:接收指针、处理指针和发送指针,分别供DMA通道0中断服务程序、短时能量子函数和短时平均幅度差子函数、DMA通道1中断服务程序使用。
图3 短时平均幅度差算法流程图
系统的硬件实现,核心器件为TI公司的低端DSP芯片TMS320VC5402(以下简称C5402),片内DARAM仅有16Kbyte,地址有效范围0x0080H~0x3FFFH,其中配置地址有效范围为0x0000H~0x005FH。
除算法外,在具体研制过程中遇到了双通道A/D采样时通道无法有效控制、扩展片外RAM后程序不能正常加载、系统因负荷过大不能正确启动等难题,通过长期的探索和尝试,这些问题都得到了妥善的解决,并掌握了实现2路A/D同时采样的状态控制字配置方法,为算法的实施打下了坚实的基础。大致的配置方法如下:
①所有保留位控制字,采用缺省设置;
②接收寄存器接收帧长度设置成每帧1个字;
③接收寄存器接收字长度设置成32位;
④发送寄存器发送帧长度设置成每帧1个字;
⑤发送寄存器发送字长度设置成32位。
McBSP0引脚控制寄存器配置如下:
①DX等引脚设置为串口;
②DR等引脚设置为串口;
③帧同步发送位设置成内部发送模式;
④帧同步接收位设置成外部发送模式;
⑤时钟发送位设置成外部发送模式;
⑥时钟接收位设置成内部发送模式;
⑦帧同步发送设置高电平有效;
⑧帧同步接收设置高电平有效;
⑨发送时钟设置成为上升沿触发;
⑩接收时钟设置成为上升沿触发。
McBSP1引脚控制寄存器相关配置与McBSP0相似,额外配置如下:发送时钟设置为内部模式;接收时钟设置为外部模式;发送时钟设置为下降沿触发。
提出了采用平均幅度、过零率和短时能量等系列算法进行语音处理的原理及具体实现方法,并介绍了承载该算法的硬件组成,该套语音处理模块基于低端的DSP处理芯片,综合考虑了性能价格比,在实现所有功能及性能的前提下,最大程度地节省了成本,提高了产品的市场竞争力,核心算法的实现,凝聚了团队的心血,在行业内处于领先地位。实践证明该语音处理模块硬件小巧,语音质量好,易于实现,性价比较高,可推广至各类需要语音处理的通信产品中。
[1]蔡莲红,黄德智,蔡锐.现代语音技术基础与应用[M].北京:清华大学出版社,2003.
[2]赵力.语音信号处理[M].北京:机械工业出版社,2003.
[3]刘庆升,徐宵鹏,黄文浩.一种语音端点检测方法的探究[J].计算机工程,2003(2):1-10.
[4]郑建华,黄汉明,钟明辉,等.几种语音信号端点检测方法的比较研究[J].广西师范大学物理与电子工程学院,2007(4):10-14.