基于DTW算法的语音识别原理与实现

【摘 要】以一个能识别数字0~9的语音识别系统的实现过程为例,阐述了基于DTW算法的特定人孤立词语音识别的基本原理和关键技术。其中包括对语音端点检测方法、特征参数计算方法和DTW算法实现的详细讨论,最后给出了在Matlab下的编程方法和实验结果。

【关键字】语音识别;端点检测;MFCC系数;DTW算法

【中图分类号】TN912.34  【文献标识码】A

0引言1语音识别系统概述

图1-1语音识别系统原理框图

本文所描述的语音识别系统(下称本系统)将对数字0~9共10段参考语音进行训练并建立模板库,之后将对多段测试语音进行识别测试。系统实现了上图中的语音输入、预处理、特征提取、训练建立模板库和识别等模块,最终建立了一个比较完整的语音识别系统。

2语音信号预处理2.1语音信号采集

在Matlab环境中语音信号的采集可使用wavrecord(n,fs,ch,dtype)函数录制,也可使用Windows的“录音机”程序录制成.wav文件然后使用wavread(file)函数读入。为了进行批量的的训练和识别处理,本系统的训练语音和识别语音全部使用“录音机”程序预先录制。如图2-1所示为数字0的训练语音00.wav的信号波形图,第(I)幅图为完整的语音波形,,第(II)、(III)幅图分别为语音的起始部分和结束部分的放大波形图。

图2-1语音00.wav的信号波形图

2.2分帧

在Matlab环境中的分帧最常用的方法是使用函数enframe(x,len,inc),其中x为语音信号,len为帧长,inc为帧移。在本系统中帧长取240,帧移取80。

2.3预加重2.4加窗

为了保持语音信号的短时平稳性,利用窗函数来减少由截断处理导致的Gibbs效应。用的最多的三种为矩形窗、汉明窗(Hamming)和汉宁窗(Hanning)。其窗函数如下,式中的N为窗长,一般等于帧长。

3端点检测3.1短时能量

(3-1)

(3-2)

这样就不会因为取平方而造成信号的小取样值的大取样值出现较大差异。

图3-1语音00.wav的时域分析参数

图3-2语音40.wav的时域分析参数

3.2短时过零率

短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号则称为过零。过零率就是样本改变符号次数,定义语音信号寿(m)的短时过零率Zn为:

(3-3)

(3-4)

清音的能量多集中在较高的频率上,它的平均过零率要高于浊音,故短时过零率可

3.3双门限端点检测

图3-3和图3-4分别是数字0的训练语音00.wav和数字4的训练语音40.wav的端点检测结果,红线之间的部分为检测出的语音有声段。

图3-3语音00.wav的端点检测结果

图3-4语音40.wav的端点检测结果

4语音识别参数提取

(1)提取的特征参数能有效地代表语音特征,具有很好的区分性;

(2)各阶参数之间有良好的独立性;

(3)特征参数要计算方便,最好有高效的计算方法,以保证语音识别的实时实现。

4.1LPC与LPCC系数

LPC(LinearPredictionCoefficient,线性预测系数)模拟人发音器官的声管模型,是一种基于语音合成的参数模型。在语音识别系统中很少直接使用LPC系统,而是由LPC系数推出的另一种参数LPCC。LPCC(LinearPredictionCepstrumCoefficient,线性预测倒谱系数)是LPC在倒谱域中的表示。该特征是基于语音信号为自回归信号的假设,利用线性预测分析获得倒谱系数。LPCC的优点是计算量小,易于实现,对元音有较好的描述能力,缺点是对辅音描述能力较差。

4.2MFCC系数

MFCC系数的计算是以“bark”为其频率基准的,它和线性频率的转换关系是:

(4-1)

MFCC系数也是按帧计算的,首先要通过FFT得到该帧信号的功率谱S(n),转换为Mel频率下的功率谱。这需要在计算之前先在语音的频谱范围内设置若干个带通滤波器:

图4-1Mel尺度滤波器组

带通滤波器的系数事先计算好,在计算MFCC系数是直接使用。MFCC系数的计算过程如下:

(1)预处理:确定每一帧语音采样序列的长度(如N=256),并对每帧序列s(n)进行预加重、分帧和加窗处理;

(2)计算离散功率谱:对预处理的每帧进行离散FFT变换得到其频谱,再取模的平方作为离散功率谱S(n);

具体流程可以用框图4-2表示为:

图4-2MFCC系数计算流程图

友谊之花、爱情之树、以及遗憾之泪!

基于DTW算法的语音识别原理与实现

相关文章:

你感兴趣的文章:

标签云: