基于BP神经网络的语音识别系统
端点检测前10.5幅度0-0.5-1123456x 104采样点
(a) 端点检测前的语音信号
端点检测后10.5幅值0-0.5-10.20.40.60.811.21.41.61.82x 104采样点
(b) 端点检测后的语音信号
图2-8 数字1语音的端点检测效果
相应实现代码如下:
% 端点检测 % input:
% LApt 低幅值阀值 % HApt 高幅值阀值 % Lacr 过零率阀值 % Ltime 持续时间阀值 % output parameters:
% bp the index of the first frame of speech % ep the index of the last frame of speech %---------------------------------------
function [dataleft,bp,ep]=endpointCheck(data,LApt,HApt,Lacr,threshold,Ltime) [frameNum,col]=size(data); time=0; isrecord=0; isbegin=0; isrecordep=0; bp=0;
17
洛阳师范学院2012届本科生毕业设计
ep=0;
tempbp=0; tempep=0;
for k=1:frameNum
a=averageAmplitude(data(k,:));
b=zerocrossRate(data(k,:),threshold); if isrecord==0 & (a>LApt | b>Lacr) tempbp=k; isrecord=1; continue; end
if isrecord==1
if isbegin==0
if a if a>HApt bp=tempbp; isbegin=1; end else %语音开始 if a isrecord=0;%判断之前的信号为突发的噪音,继续检测下一帧 isbegin=0; continue; else if isrecordep==0 tempep=k; %语音可能的结束点 isrecordep=1; end end end if isrecordep==1 & a>HApt & k-tempep>Ltime %之前记录的可能结束点是假的 isrecordep=0; end end end end ep=tempep; dataleft=data(bp:ep,:); 18 基于BP神经网络的语音识别系统 第3章 语音信号特征提取 许多现代语音识别系统一般由初始信号处理前端和具有统计性质的模式匹配构成。这些前端用来将语音波形变换成随时间变化的特征向量序列。根据这些特征向量序列,模式匹配能表征出声音信号中的因素、音节、词语、短语甚至是句子[18]。 语音信号的特征提取是语音识别系统中的一个关键步骤,系统能对语音加以区别便是基于语音信号的特征的不同。语音特征参数的提取针对分帧后的数据进行,每帧特征参数构成一个矢量序列。必要时,对这些特征参数序列进行压缩,成为所需要的语音模式,供训练阶段或者识别阶段使用。 语音特征参数主要有两大类:基于发声系统模型导出的特征参数和基于听觉系统模型导出的特征参数。线性预测分析属于前者,而Mel频率倒谱系统属于后者。 3.1线性预测系数 3.1.1 线性预测分析思想 语音采样之间存在相关性,一个语音的采样能用过去的若干个语音采样的线性组合来逼近。以原始语音信号与拟合后的信号序列之间的最小均方误差最小为优化目标,求解一组预测系数。这组预测系数就是线性组合中所使用的加权系数。它在此作用不在于预测,更重要的是它能反映语音信号的特性。在短时分析技术的背景下,这一组预测系数描述了说话人瞬时的声道状态。 线性预测编码(Linear Prediction Coding)分析,将语音信号s(n)看作是一个输入序列u(n)激励一个全极点滤波器而产生的输出。图3-1描述了语音信号产生的模型。 u(n) 全极点滤波器s(n) 图3-1 语音信号产生模型 该滤波器的传递函数为: H(z)?Gp1??ap(k)zk?1?k (3-1) 其中,p是极点个数,即预测系数的个数;{ap(k)}是唯一确定该模型的预测系 19 洛阳师范学院2012届本科生毕业设计 数;G是增益常数。语音中的浊音可以通过使用周期等于音调周期的冲击串激励这个全极点滤波器模型来产生;清音可以通过使用随机噪声激励这个全极点滤波器模型来产生。 3.1.2 线性预测分析原理 在时域上,这个全极点滤波器模型的语音输出由过去的p个语音样本来确定,那么这个线性预测滤波器输出为: ps(n)??ap(k)s(n?k) (3-2) k?1那么线性预测模型的预测误差为: pe()n?s()n?s()n?s()n?a()(ksn?k)?p (3-3) k?1对于一帧语音信号,短时预测均方误差为: 2??e()n?[()sn?ak()(sn?k)] (3-4) ???p2n?1n?1k?1NNp线性预测分析模型主要由系数{ap(k)}构造而成,在最小均方误差的意义上对语音数据进行拟合,即估计出一组p阶的预测系数{ap(k)},使得?尽可能趋向于零。 ?/?ak()?0,k?1,2...p在?的最小值处,需要满足?。于是,将?对每个预测p系数求偏导数得: ?/?a(k)??[2(sn)s(n?k)?2a(k)s(n?k)s(n?i)],k?1,2...p(3-5) ??pp?n?1i?1n?1?NpN 令式子右边等于零,得线性方程组: NppNs(n)s(n??k)??a(k)s(n?k)s(n?i),k?1,2...p(3-6) ? n?1i?1n?1定义语音信号的一个自相关函数为: Nr(i,k)?s(nis?)(nki?),?1,2...p,k?1,2...p?n?1 (3-7) 那么线性方程组式子3.6可写成: pr(0,k)?a(kri)(,k),k?1,2...p?pi?1 (3-8) 式子3.8是一个由p个方程组成的含有p个未知系数的线性方程组。该方程组的求解过程,便是求解线性预测系数{ap(k)}的过程。 20 基于BP神经网络的语音识别系统 3.1.3 线性预测方程组的求解 根据语音信号分帧加窗的思想,当前语音帧以外的采样数值均为零。由式子3.7得: N?(k?i)r(i,k)?s(n?ki?)s(n),i?1,2...,pk?1,2...p? (3-9) n?1定义另一形式的自相关函数: N?kR(k)?sn(?ksn)(),k?1,2...p? (3-10) n?1那么式子3.9可以表示为: N?(k?i)r(i,)k?R(k?i)?s(n?k?i)s(n),i?1,2...,pk?1,2...p? (3-11) n?1相同的序列间的相对运动,左移与右移是等价的,即自相关函数在整数域上是偶函数,那么有: R(k?iR)(?i?k)(?R|k?i|),1i?,2...p,k?1,2...p (3-12) 由式子3.8、3.11和3.12得,关于线性预测系数的方程组可表示成: (0)R(1)?R?R(1)R(0)?????(p?1)R(p?2)?R(1)??R?R(p?1)??a(0)?p????(?2)?R(p?2)aR(1)p?????? (3-13) ??????????????a(p)?R(0)??R(p)?p????Levinson-Durbin算法是求解式子3.13的常用算法之一,其算法过程如下: 1) 计算自相关系数R (k),k?0,1...p2) ?(0)?R(0),i=1 3) 计算: i?1ki?[R(i)?ai(i)(i)?j?1aj(i?1)R(i?j)]/?(i?1)?ki(i?1) ?kiai?j,1?j?i?12(i?1)(i?1)aj?aj?(i)?(1?ki)?4) 若 i>p, 则结束, 否则返回 3) (p),i?1,2...p是所求的预测系数。 最后求得的ai 21