欢迎来到天天文库
浏览记录
ID:34389185
大小:87.46 KB
页数:8页
时间:2019-03-05
《小词汇量语音识别系统的实现new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、小词汇量语音识别系统的实现徐晓聃殷福亮(大连理工大学电信学院信号与信息处理专业)【摘要】小词汇量语音识别系统是指词汇量在100以下的识别系统,其研究重点和难点在于减少系统的运算量和存储量,提高系统的实时性.本文用C语言实现了一个小词汇量语音识别系统,在详细分析系统各个部分关键算法的基础上,改进了系统的实时性和抗噪性.【关键词】端点判别,特征提取,矢量量化,隐含马尔可夫模型分类号:TN912.34小词汇量语音识别系统是指词汇量在100以下的语音识别系统.它的应用范围极其广泛,如语音指令控制,数码串识别系统等.因此,对小词汇量语音识别系统的研究具有重要的实用价值.小词汇
2、量语音识别系统在算法复杂度和实现难度上比大词汇量语音识别系统小许多,比较容易在脱机系统,如PDA等手持设备上实现.芯片化也是其发展趋势之一.小词汇量语音识别技术已经相当成熟,实现高识别率并非难事.目前面对的问题是如何在保持高识别率下降低算法的复杂度,减少运算量和存储量,使得系统能在高速DSP上实时实现.本文用C语言实现了一个小词汇量的语音识别系统,并从实际应用着眼,提高了系统的实时性和实用性.1小词汇量语音识别系统的基本结构小词汇量的语音识别基本原理框图如图1所示.语音输入识别结果预处理端点检测特征提取模式匹配模板训练参考模式图1小词汇量语音识别系统原理图可以看到,
3、小词汇量语音识别系统基本由预处理、端点检测、特征提取、模板训练和模式匹配五部分组成.本文实现的小词汇量语音识别系统的详细流程图如图2所示.2小词汇量语音识别算法2.1端点检测端点检测的目的是鉴别数字语音信号中的有效信号,一般而言只需检测出语音的起止点,在比较复杂的识别系统中还需区分出清音段和浊音段.目前比较实用的算法有模型参数初值否Viterbi划分状态序列模型收敛?分段K均值估计输出概率训练语音是Baum-Welch参数重估前端处理和参考模型矢量量化特征提取参数测试语音Viterbi判分识别结果图2本文识别系统流程图[1][2]VUS(Voice–Unvoice–
4、Silence)算法、FED(FastEndpointDetection)算法和FRED[3](Feature-basedReal-timeEndpointDetection)算法等.其特点分别为:zVUS算法.根据语音信号的能量和短时过零率区分有效语音和背景噪声.算法简单,运算量小是这种算法最大的优点.在信噪比比较平均的情况下,VUS算法简单可靠,但因为其阈值都是事先在特定环境下根据经验设定的,当环境变化时,阈值的可靠程度降低,故其抗噪能力较弱.另外,因为检测必须在语音采样完成以后进行,因此实时性较差.zFED算法.和VUS一样,也是根据语音信号的能量和短时过零率
5、区分有效语音和背景噪声,不同的是其阈值由语音两端的噪声动态设定,所以FED算法有较好的抗噪声性能.而且由于采用了语音能量变化率为检测标准,精度较高.同样,FED算法的判定在语音采样完成以后,因此其实时性不高.而且,FED算法对语音两端噪声一致性要求过于苛刻,使得许多语音被拒绝进行端点检测.zFRED算法.根据语音的频率特性判别有效语音.这种算法可以在提取语音特征后进行,不必等待语音全部采样完毕,实时性较好.而且判别依据反映了语音的本质特征,抗噪性能优于前两种方法.但FRED算法需要进行FFT计算求得语音信号的频谱信息,因此运算量远大于前两种算法,一般与需要进行频域变
6、换的特征提取方法同时使用.上述方法皆有利弊。可以看到,VUS算法计算量小,简单可靠,是最适合在小词汇量语音识别系统上实现的端点判别算法。借鉴到FRED算法的思想,分帧处理可以提高其实时性。改进后的VUS算法步骤如下:[4]1)采样开始,计算阈值.记标志位IsStart=false.首先根据发音刚开始前已知无语音状态的连续10帧数据,计算出过零率的阈值IZCT:IZCT=+min[IFIZCT,2]σ(1)其中IZCT和σ分别为根据采样值算得的均值和标准差.IF为定值,取25.计算此10帧数据的平均幅度,最大值为IMX,最小值为IMN,分别计算I和I12为:I=−0.
7、03(IMXIMN)+IMN,I=4IMN(2)12于是得到高能量阈值ITU和低能量阈值ITL为:ITU=⋅aITL,ITL=min(,II)12(3)a是一个经验常数,一般取5.2)分帧,加窗,将加窗语音帧存入长度为50ms的循环缓冲区.新数据从缓冲区头部进入,旧数据从缓冲区尾部抛弃.3)取出缓冲区中间的语音帧,也就是约为25ms处的语音帧,计算其平均幅度E.0()EI>TUI&(!sStart)判定浊音区开始,向缓冲区头部搜索精确起点.0FE=
8、argmin[()i>>ITL
9、Z()iIZCT](4)100i并记标志位IsStart=true,Ei()和Z(
此文档下载收益归作者所有