基于DTW的孤立词语音识别系统(文档+MATLAB+GUI)

基于DTW的孤⽴词语⾳识别系统(⽂档+MATLAB+GUI)
下⾯是本内容的核⼼部分,有需要完整代码和⽂章的加QQ245051943获取。
孤⽴词语⾳信号的预处理
语⾳信号的预处理模块⼀般包括预滤波、采样和量化、分帧、加窗、预加重、端点检测等。在不同的系统中对各⼦模块会有不同的要求,如在嵌⼊式语⾳识别系统中⼀般要求有防混叠滤波电路、A/D转换电路和采样滤波电路等,⽽在计算机上实验时则可由⾳频采集卡完成,⽆需实验者亲⾃动⼿。
3.3.1 语⾳信号采集
在Matlab环境中语⾳信号的采集可使⽤wavrecord(n,fs,ch,dtype)函数录制,也可使⽤Windows的“录⾳机”程序录制成.wav⽂件然后使⽤wavread(file)函数读⼊。为了进⾏批量的的训练和识别处理,本系统的训练语⾳和识别语⾳全部使⽤“录⾳机”程序预先录制。如图3.5所⽰为“电⼦”的训练语⾳电⼦.wav的信号完整语⾳波形。
图3.5 语⾳电⼦.wav的信号波形图
3.3.2 语⾳信号分帧
语⾳信号是⼀种典型的⾮平稳信号,它的均值函数u(x)和⾃相关函数R(xl,x2)都随时间⽽发⽣较⼤的变化。但研究发现,语⾳信号在短时间内频谱特性保持平稳,即具有短时平稳特性。因此,在实际处理时可以将语⾳信号分成很⼩的时间段(约10~30ms),称之为“帧”,作为语⾳信号处理的最⼩单位,帧与帧的⾮重叠部分称为帧移,⽽将语⾳信号分成若⼲帧的过程称为分帧。分帧⼩能清楚地描绘语⾳信号的时变特征但计算量⼤;分帧⼤能减少计算量但相邻帧间变化不⼤,容易丢失信号特征。⼀般取帧长20ms,帧移为帧长的1/3-1/2。
在Matlab环境中的分帧最常⽤的⽅法是使⽤函数enframe(x,len,inc),其中x为语⾳信号,len为帧长,inc为帧移。在本系统中帧长取240,帧移取80。
3.3.3 语⾳信号的预加重和加窗
对于语⾳信号的频谱,通常是频率越⾼幅值越⼩,在语⾳信号的频率增加两倍时,其功率谱的幅度下降6dB。因此必须对⾼频进⾏加重处理,⼀般是将语⾳信号通过⼀个⼀阶⾼通滤波器1-0.9375z-1,即为预加重滤波器。其⽬的是滤除低频⼲扰,特别是50Hz到60Hz的⼯频⼲扰,将对语⾳识别更为有⽤的
⾼频部分进⾏频谱提升。在计算短时能量之前将语⾳信号通过预加重滤波器还可起到消除直流漂移、抑制随机噪声和提升清⾳部分能量的效果。预加重滤波器在Matlab中可由语句x=filter([1-0.9375],1,x)实现。
为了保持语⾳信号的短时平稳性,利⽤窗函数来减少由截断处理导致的Gibbs效应。⽤的最多的三种为矩形窗、汉明窗(Hamming)和汉宁窗(Hanning)。其窗函数如式3-8、3-9、3-10所⽰,式中的N为窗长,⼀般等于帧长。
窗⼝的选择⾮常重要,不同的窗⼝将使能量的平均结果不同。矩形窗的谱平滑,但波形细节丢失;⽽汉明窗则刚好相反,可以有效克服泄漏现象,具有平滑的低通特性。因此,在语⾳的时域处理⽅法中,⼀般选择矩形窗,⽽在语⾳的频域处理⽅法中,⼀般选择汉明窗或汉宁窗。在Matlab中要实现加窗即将分帧后的语⾳信号乘上窗函数,如加汉明窗即为x=x.*hamming(N)。在语⾳识别系统中我们主要也是采⽤汉明窗来实现语⾳信号的加窗。
3.3.4 语⾳信号的端点检测
在基于DTW算法的语⾳识别系统中,⽆论是训练和建⽴模板阶段还是在识别阶段,都先采⽤端点检测算法确定语⾳的起点和终点。语⾳端点检测是指⽤计算机数字处理技术从包含语⾳的⼀段信号中出字、词的起始点及结束点,从⽽只存储和处理有效语⾳信号。对汉语来说,还可进⼀步出其中的声
母段和韵母段所处的位置。语⾳端点检测是语⾳分析、合成和识别中的⼀个重要环节,其算法的优劣在某种程度上也直接决定了整个语⾳识别系统的优劣。进⾏端点检测的基本参数主要有短时能量、幅度、过零率和相关函数等。端点检测最常见的⽅法是短时能量短时过零率双门限端点检测,近年来在此基础上发展出的动态窗长短时双门限端点检测⽅法也被⼴泛使⽤。
(1)短时能量
语⾳和噪声的主要区别在它们的能量上,语⾳段的能量⽐噪声段的⼤,语⾳段的能量是噪声段能量叠加语⾳声波能量的和。对第n帧语⾳信号的短时能量的定义为:
为原样本序列在窗函数所切取出的第n段短时语⾳,N为帧长。因为在计算时使⽤的是信号的平⽅,故将作为⼀个度量语⾳幅度值变化的函数有⼀个缺陷,即对⾼电平⾮常敏感。因此在许多场合会将En⽤下式来代替:
这样就不会因为取平⽅⽽造成信号的⼩取样值的⼤取样值出现较⼤差异。
本系统中窗函数为WR(见式3-8),N为240。图3.6和图3.7分别为“电⼦”的训练语⾳电⼦.wav和“北海”的训练语⾳北海.wav的短时能量波形。
图3.6 语⾳电⼦.wav的短时能量波形
图3.7 语⾳北海.wav的
(2)短时过零率
短时过零表⽰⼀帧语⾳信号波形穿过横轴(零电平)的次数。对于连续语⾳信号,过零意味着时域波形通过时间轴;⽽对于离散信号,如果相邻的取样值的改变符号则称为过零。过零率就是样本改变符号次
数,定义语⾳信号的短时过零率为:
(3)双门限端点检测
双门限端点检测顾名思义需要两级检测,即短时能量检测和短时过零率检测。在开始检测之前需要设定4个门限,即分别为短时能量和短时过零率各设置⼀个⾼门限和⼀个低门限:EHigh、ELow和ZHigh、ZLow。整个语⾳端点检测分为四部分:静⾳段、过度段、语⾳段、结束段。在静⾳段中如果能量或过零率有⼀个超过了其低门限,则认为进⼊了过度段。在过度段中,由于参数数值较⼩,还不能确定是否真的进⼊语⾳段,只有两个参数的其中⼀个超越了⾼门限才被认为是进⼊语⾳段。当参数降⾄低门限则认为进⼊结束。此外,还有两种可能会引起端点检测的误判:⼀是短时噪⾳引起的误判,此时则需要引⼊最⼩语⾳长度门限进⾏噪声判定,即语⾳段时间⼩于⼀定数值则认定为是噪声,重新回到静⾳段,本系统设为20ms;⼆是语⾳中字与字的时间空隙引起的误判,此时需要设定最⼤静⾳长度门限来降低识别的错误率。
在双门限端点检测中4个门限的设定⾄关重要,门限设定的好坏将直接影响端点检测的结果。门限值的设置还没有⼀个通⽤可靠的⽅法,需要根据经验和特定环境进⾏调整。常见的⽅法有最⼤值乘上某个⽐率、中位值乘上某个⽐率、最⼩值乘上某个常数、前三帧平均值乘上某个常数等。本系统中,,,的取值分别为:
图3.8和图3.9分别是“电⼦”的训练语⾳电⼦.wav和“北海”的训练语⾳北海.wav的端点检测结果,红线之间的部分为检测出的语⾳有声段。
图3.8 语⾳电⼦.wav的端点检测结果
图3.9 语⾳北海.wav的端点检测结果
特征参数的提取
经过预处理的语⾳数据就可以进⾏特征参数提取,特征参数的好坏将直接影响系统的性能和效率,对
特征参数的要求包括:
(1)提取的特征参数能有效地代表语⾳特征,具有很好的区分性;
(2)各阶参数之间有良好的独⽴性;
(3)特征参数要计算⽅便,最好有⾼效的计算⽅法,以保证语⾳识别的实时实现。
对于特征参数的选取,我们使⽤MFCC的⽅法来提取。MFCC参数是基于⼈的听觉特性利⽤⼈听觉的屏蔽效应,在Mel标度频率域提取出来的倒谱特征参数。美尔频标倒谱系数(Mel Frequency Cepstrum Coefficient,MFCC)考虑了⼈⽿的听觉特性,将频谱转化为基于Mel频标的⾮线性频谱,然后转换到倒谱域上。由于充分考虑了⼈⽿的听觉特性,⽽且没有任何的前提假设,MFCC参数具有良好的识别性能和抗噪声能⼒,但其计算量和计算精度要求较⾼。
孤⽴词语⾳识别系统的实现
初始GUI界⾯的设计
图形⽤户界⾯(Graphical User Interface,简称GUI,⼜称图形⽤户接⼝)是指采⽤图形⽅式显⽰的计算机操作⽤户界⾯。与早期计算机使⽤的命令⾏界⾯相⽐,图形界⾯对于⽤户来说在视觉上更易于接
受。GUI的⼴泛应⽤是当今计算机发展的重⼤成就之⼀,它极⼤地⽅便了⾮专业⽤户的使⽤。⼈们从此不再需要死记硬背⼤量的命令,取⽽代之的是可以通过窗⼝、菜单、按键等⽅式来⽅便地进⾏操作。⽽嵌⼊式GUI具有下⾯⼏个⽅⾯的基本要求:轻型、占⽤资源少、⾼性能、⾼可靠性、便于移植、可配置等特点。
Matlab中GUI程序的设计使得使⽤者⽆需清楚的知道⾥⾯的函数是如何调⽤和实现的,它的操作简单并且交互性强,有利于设计者与使⽤者的良好沟通。
语音系统
初始界⾯主要设计4个部分,包括题⽬、背景图⽚、进⼊按钮和退出按钮。题⽬采⽤静态⽂本设计,背景图⽚采⽤外部图⽚导⼊。初始界⾯如图4.1所⽰。点击“进⼊”按钮进⼊孤⽴词识别系统,退出按钮包含交互式对话框,确认后退出整个MATLAB程序。

本文发布于:2024-09-22 22:30:18,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/354602.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:信号   检测   端点   门限   能量   函数   识别
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议