2.2 系统主要功能模块构成
语音处理模块采用TI TMS320VC5402,其主要特点包括:采用改进的哈佛结构,一条程序总线(PB),三条数据总线(CB,DB,EB)和四条地址总线(PAB,CAB,DAB,EAB),带有专用硬件逻辑CPU(40位算术逻辑单元(ALU),包括1个40位桶形移位器和二个40位累加器;一个17×17乘法器和一个40位专用加法器,允许16位带或不带符号的乘法),片内存储器(八个辅助寄存器及一个软件栈),片内外专用的指令集,允许使用业界最先进的定点DSP C语言编译器。TMS320VC5402含4 KB的片内ROM和16 KB的双存取RAM,一个HPI(HostPortInterface)接口,二个多通道缓冲单口MCBSP(Multi-Channel Buffered SerialPort),单周期指令执行时间10 ns,带有符合IEEE1149.1标准的JTAG边界扫描仿真逻辑。语音输入、输出的模拟前端采用TI公司的TLC320ADSOC,它是一款集成ADC和DAC于一体的模拟接口电路,并且与DSP接口简单,性能高、功耗低,已成为当前语音处理的主流产品。16位数据结构,音频采样频率为2~22.05 kHz,内含抗混叠滤波器和重构滤波器的模拟接口芯片,还有一个能与许多DSP芯片相连的同步串行通信接口。TLC320AD50C片内还包括一个定时器(调整采样率和帧同步延时)和控制器(调整编程放大增益、锁相环PLL、主从模式)。TLC320AD50C与TMS320VC5402的硬件连接,如图3所示。
3 语音识别算法实现
3.1 语音信号的端点检测
语音的端点检测是语音识别中最基本的模块,在嵌入式语音识别系统中更是占有非常重要的地位:一方面端点检测的结果不准确,系统的识别性能就得不到保证;另一方面如果端点检测的结果过于放松,虽然语音部分被很好地包含在处理的信号中,但是增加过多的静音则会增加系统的运算量,同时对识别性能也有负面影响。因此为能量和过零率两个参数分别设定两个门限,一个是比较低的门限,数值比较小,对信号的变化比较敏感,很容易就被超过。另一个是比较高的门限,数值比较大,信号必须达到一定的强度,该门限才可能被超过。低门限被超过未必就是语音的开始,有可能是时间很短的噪声引起的。高门限被超过,则基本确信是由于语音信号引起的。
整个语音信号的端点检测可以分为四段:静音、过渡段、语音段、结束。程序中使用一个变量status来表示当前所处的状态。在静音段,如果能量或过零率超越了低门限,就应该开始标记起始点,进入过渡段。在过渡段中,由于参数的数值比较小,不能确信是否处于真正的语音段,因此只要两个参数的数值都回落到低门限以下,就将当前状态恢复到静音状态。而如果在过渡段中两个参数中任意一个超过了高门限,就可以确信进入语音段了。一些突发性的噪声可以引发短时能量或过零率的数值很高,但是往往不能维持足够长的时间,这些可以通过设定最短时间门限来判别。当前状态处于语音段时,如果两个参数的数值降低到低门限以下,而且总的计时长度小于最短时间门限,则认为这是一段噪音,继续扫描以后的语音数据。否则就标记好结束端点,并返回。
3.2 语音特征参数的提取
近年来,一种能够比较充分利用人耳这种特殊的感知特新的参数得到了广泛的应用,这就是Mel尺度倒谱参数(Mel-scaled Cepstrum Coefficients,MFCC)。它和线性频率的转换关系是:
fMel=2 596log10(1+f/700)
MFCC参数是按帧计算的。首先要通过FFT得到该帧信号的功率谱,转换为Mel频率下的功率谱。这需要在计算之前先在语音的频谱范围内设置若干个带通滤波器Hm(n)。MFCC参数的计算流程为:
(1)确定每一帧语音采样序列的点数,本系统采取N=256点。对每帧序列s(n)进行预加重处理后再经过离散FFT变换,取模的平方得到离散功率谱s(n)。
(2)计算s(n)通过M个Hm(n)后所得的功率值,即计算s(n)和Hm(n)在各个离散频率点上乘积之和,得到M个参数Pm,m=0,1,…,M-1。
(3)计算Pm的自然对数,得到Lm,m=0,1,…,M-1。
(4)对L0,L1,…,LM-1计算其离散余弦变换,得到Dm,m=0,1,…,M-1。
(5)舍去代表直流成分的D0,取D1,D2,…,DK作为MFCC参数。此处K=12。
3.3 特定人语音识别算法
在孤立词语音识别中,最为简单有效的方法是采用DTW动态时间规整算法,设参考模板特征矢量序列为A={a1,a2,…,aj),输入语音特征矢量序列为B={b1,b2,…,bk),j≠k。DTW算法就是要寻找一个最佳的时间规整函数,使得语音输入B的时间轴k映射到参考模板A的时间轴j上总的累计失真最小。
将己经存入模板库的各个词条称为参考模板,一个参考模板可以表示为{R(1),R(2),…,R(M)},m为训练语音帧的时序标号,m=1为起点语音帧,m=M为终点语音帧,因此M为该模式包含的语音帧总数,R(m)为第m帧语音的特征矢量。所要识别的一个输入词条语音称为参考模板,可表示为{T(1),T(2),…,T(N)),n为测试语音帧标号,模板中共包含N帧音,T(n)为第n帧音的特征矢量。