微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于TMS320VC5509A的语音识别与控制系统

基于TMS320VC5509A的语音识别与控制系统

时间:06-17 来源:电子技术应用 作者:关胜平,何培宇,刘珂含 点击:

3 软件模块部分

软件流程如图3所示。系统采集语音信号后,首先要进行预滤波和预加重;接着将语音信号进行分帧,由于语音信号具有极强的相关性,因此在分帧时,要考虑帧重复。本文将语音信号以256个采样点为一帧,两帧之间的重复点数为80;然后计算每帧信号的短时能量与短时平均过零率,这也是接下来进行端点检测的依据;利用门限判决进行端点检测后,提取每帧信号的LPC系数,作为该帧信号的特征值;最后,用语音信号的特征值与模板逐个进行匹配。相似度最大的模板所对应的语音信号为识别结果,根据识别结果就可以向外发出控制信号。

3.1 端点检测

端点检测就是要从采集的信号中检测出说话人的命令字。此系统中,对语音信号进行了分帧操作,一种简便的方法就是获取说话人命令字的起始帧数,具体操作是通过求一帧信号的短时能量和短时平均过零率来判断的。语音信号的短时能量分析给出了反应其幅度变化的一个合适描述方法。一帧语音信号的短时能量定义为:

短时过零率,即指每帧内信号通过零值的次数,能够在一定程度上反映信号的频谱特性。一帧语音信号内短时平均过零率定义为:

在正式端点检测开始后,短时能量与短时平均过零率一起做为门限来判决说话人命令字的开始与结束:连续5帧语音信号超过门限值视为说话人命令字的开始,连续8帧语音信号低于门限值视为说话人命令字的结束。

3.2 特征值提取
此系统以语音信号的线性预测系数(LPC)作为特征值。采用自相关法获取LPC系数,先计算每帧语音信号的13阶自相关函数,定义为:

得到自相关函数后,采用莱文逊-杜宾递推算法计算线性预测系数,得到说话人一个命令字的LPC系数矩阵,大小为:命令字帧数×12。

3.3 模板匹配(DTW算法)

模板匹配就是把上述计算得到的LPC系数矩阵中的元素与事先存在DSP中的模板元素进行差值计算。在此系统中,采用动态时间弯折(DTW)算法:假设参考模板的LPC系数向量序列为X=(x1,x2,…,xI),输入语音的LPC系数向量序列为Y=(y1,y2,…,yJ),I≠J。DTW算法就是要寻找一个最佳的时间规正函数,使待测语音的时间轴j非线性地映射到参考模板的时间轴i上,使总的累计差值最小[1]。算法过程如图4所示。

图4中曲线连接起来的点就是模板与待测语音信号间的距离d(xi(n),yj(n)),亦称为局部匹配距离。DTW算法就是通过局部优化的方法实现加权距离总和最小,也就是相似度最大,定义为:

3.4 小数的定点运算
在进行语音信号处理时,通常要先对其进行归一化,使得语音信号|x(n)|≤1,为后面计算自相关函数及求LPC系数提供方便。这样就面临一个实际问题:对定点DSP而言,参与数值运算的数是16位二进制整型数,而DSP芯片如何处理小数运算呢?方法是确定一个数的小数点处于16位中的某一位,这也就是数值的定标问题,举例如下:

Q0 定标 (19AB)16=(31147)10
Q15定标 (19AB)16=(0.95)10

由此可见,对于定点DSP芯片内部而言,一个16位整型数到底表示多少,它本身是不能够分辨的,必须通过定标来确定。进行归一化处理就是把数以Q15形式定标,为以后的运算做好准备[2]。做小数的定点运算时,还要进行预运算和移位。预运算就是事先估计运算结果,为下一步移位做准备。其实现可采用如Matlab等的辅助软件。由于此系统的识别过程涉及较多的乘加运算,如几个Q15定标的数进行加法运算,结果可能出现溢出现象,如果不能进行很好的预运算,将对后面的运算产生很大影响;移位是小数做定点运算的具体操作。做加、减、乘、除法时,要严格按照相应的操作方法,每做一个四则运算都要参照实际情况,遵循先移位、再做运算、最后再移位的步骤,以在精度损失最少的情况下保证运算结果的可靠性。

3.5 定点DSP做浮点运算

定点运算是以DSP的实际存储形式(16位二进制整型)为数值格式进行加、减、乘、除等四则运算,允许数值的表示范围是:(-32768)10~(32767)10。定点DSP的浮点运算是人为地开辟两个16位存储单元来表示一个数值,其中一个用来存储尾数,另一个用来存储指数,按照自然科学计数法进行四则运算。显而易见,这样的存储计算方法,其精度和动态表示范围都远远高于定点运算。

为降低成本,本系统选择了一款定点DSP。由于端点检测、模板匹配对精度要求不高,所以采用定点算法进行小数运算;计算自相关系数、提取LPC系数时,要求精度高,因此采用浮点算法进行小数运算。这也意味着,在端点检测完成之后,要先将定点运算转换为浮点运算;提取LPC系数之后,再将浮点运算转换为定点运算进行匹配。以牺牲少量运算时间为代价,适当提高运算精度和识别率。实验证明,这是可行的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top