浅论自动语音识别结构与原理

(整期优先)网络出版时间:2018-10-20
/ 3

浅论自动语音识别结构与原理

黄淑彤

学校:当阳市第一高级中学,学校地址:湖北省宜昌市,学校邮编:444100

关键词;自动语音识别;人工智能;语音识别涉及的三大算法

1.语音识别系统的发展历程

语音即声音,自动语音识别(ASR)简言之就是:听到人类发出的语音指令后,计算机通过将声音中包含的信息转化为的一系列计算机可理解的参数,之后再进行处理,做出人类所需要的反应的一种智能技术[1]。为了在与计算机交互时同与人类说话一样容易,科学家做出了巨大努力。其中历史性的两大里程碑事件一是戴维斯实验室研发的英文十英文字符语音参数实验系统,二是毕业于卡内基梅隆大学的李开复开拓出了容纳更广的词汇量的语音识别系统sphinx,还为此前种种难题,如不间断语音非特定人语音、声线不平、语音信息模糊等问题提供了解决方案,从此成为如今大多数进入语音识别领域的工作者的必备知识[1]。

追根朔源语音识别是从贝尔发明电话时期初露锋芒的,伴随着1876年电话的发明,语音识别的一系列有关声音的参数如声带振动的频率,振幅,声速等相关影响因素都被予以高度关注及探索,从此为语音研究铺下了良好的基础[1]。紧随其后的是诞生于1946年的计算机,它开创了电子信息新时代,随着计算机发展愈加完善,该技术成为语音识别进步的巨大动力[1]。语音识别的原理是离不开模型的,譬如声学模型,语言模型,概率模型等都是语音识别时的工具,这就如同一串拼音对应多个词组一样,我们要在一段语音中找到概率最大的音频,则需要一些算法来得到转化后的可懂序列[3]。这个过程涉及到一些数据信息的获取和处理,具体技术即下文介绍的语音信号接收操作及三大算法。

2.语音信号接收

作为技术突破的第一步,语音信号的接收是最先发展和突破的,在历史上探索历程也是最漫长的,整个操作过程有重要的两步,即静音切除和分帧操作。

2.1静音切除

静音切除是与语音有关的必要部分比如声码器,声码器在军事领域运用最为广泛,其工作原理是通过声音震动带来的频率变化转化为数字信号,其中只保留必要的关键词,剪切掉的多余部分作为推测信号会在释放时被重新填补,再通过力传感器产生同按键生压一样的效果,解放双手就能做到发出准确的指令[2][5]。但如果一段音频的时间过长,那么收集其声音参数形成的数据就会很大,这时切除无用信号就显得尤为重要,静音切除用到的基本技术是VAD(virturaladdressdescripter),它的工作原理是在虚拟的语音环境中识别出指令者声音信息流的停顿空白期,这一段并不含信息源,完全可省略,同开头结尾部分文件头一起还原语音时,与有用信息一起通过语音分组待还原[3][5]。

2.2分帧操作

分帧操作首先是为了分辨频率信号的分布情况,其次是对语音信号进行隔离,一段一段的语音分成组累叠储存比一整段数据携带更为方便,也能够使运作效率提高。而分帧操作时使用的必须是一段平稳清晰的声音帧,为了分清各个频率情况的分布,这里要用到“傅里叶变换”,结合窗函数,收集一系列经过函数加工后得到的声音参数比如声速、声波频率、振幅、声波的波峰波谷等音频信号,利用移动窗函数给各帧函数确定下坐标参数。这里的傅里叶变换是指将满足一定条件的某个函数表示成三角函数,正弦余弦函数等一系列普通可懂函数,之后在同一些积分线性函数相组合结合。从而提高分辨率,两边的幅度下降之后,确定下了秒数之后就可以开始变换了[3]。

3.语音识别的核心三大算法

模式匹配即匹配字符串(一串字符序列),在主串(比对串)中对子串(待匹配串)进行定位,其实串在计算机是凭借各字符在字符表中的前后位置顺序进行比较的,常用字符也是指对应字符在对应字符集中的序号,正如语音识别中模式匹配需要找到对应格式,字串也要找到指定位置,再填补,增删之后才可使用[6]。模式匹配是使串的长度和对应位置相对应,从而达到使语音匹配正确的目的。

3.1朴素模式算法(BF算法)

朴素模式算法即依次全部历遍完串直到全部匹配成功,如下表按照上下箭头进行匹配,如果匹配不成功,则接着下一个进行匹配直到待匹配串完全一一对应才算完全成功。其实在BF算法中称P为模式字符串,而T为目标字符串,字符的对应成功就代表着P在T中完全一一对应了[6]。譬如给出T串:ABHOMEWORKEPP串:HOMEWORK,在匹配时可以明显发现前面的元素字串无法一一对应时箭头显现红色,后面无对应的箭头显示白色,在这样的情况下,根据朴素模式算法知道,接下来要向后移动模式串P,而T串不动再进行一次匹配,如下图,第二个图对应第二次匹配的过程依然没完成百分之百的对应,接着重复前面的操作得到的第三个图就是对应成功了,且成功对应的串都是用绿色箭头表示的,接着可以直接输出串的位置,序号等参数,从而定下匹配的串,这样朴素模式算法就算完成了。

图3.1-1BF算法实例

由于每次大量的串都要完成单独匹对,一旦出现不匹配的就要重头开始,所以会导致朴素模式算法的时间复杂度很高,而在进行模式匹配时当然是时间复杂度越小越好,所以为了降低时间复杂度,减少运行重复的次数,避免因耗时过长而导致效率过低,于是提出了KMP算法。

3.2KMP算法

KMP算法是为了避免前面都匹配成功而在结尾处发现并不匹配而花去大量时间以及重复遍历的情况,KMP算法(克鲁特-莫里斯-普拉特算法)就是在低效率的朴素模式算法上的改进[9]。首先其实现针对的是子串的特殊情况,也就是在首字母X与后面的yzw都不相等的前提下经过第一次匹配可知下一次首字母X就不用再与原来字母y匹配成功的字符在进行一次比对了,因为X一定与之不等,从而可知,后续原本朴素匹配必定要全浏览挨个对照的步骤完全可省略,只选取第一次的数组就可以了,否则就出现了多余的判断,这样大大节省了计算机的工作时间[8]。

上述是特殊情况,而针对一般情况,比如一段匹配串后面并不是完全与前面不同,仍存在重复时的情况,在一字串的字符不是完全不重复时,假若之后的字母恰好隔开的不远就重复了而其他又是特殊情况时该如何处置呢?这就要引入‘Next数组’新定义了,且描述该串中各个字符的变化量时用j值来表示,即通过j值等于1,2,3,4,5等数来预先知晓后面有多少字符与该字符相等,在运行时还有i值,这个i值代表的是每个元素在主串中的位置,比如当i=7时就表示这个元素是第7个。由于i值不可发生变化,要简化算法就只能通过j值的变化来实现了,j值与T串没有很大的关系,是可以人为设定的,j值的大小是由前面和后面的相似度决定的,比如P=12345这样就表示相似度为1,因为没有任何重复的字符。而比如P=124512中有‘12’相似,故这时J值等于3,我们把某一串中每个位置的j值的改变用‘next’数组定义,该数组‘next’的长度就是这一段串的长度,next函数的定义如下:

(公式3-1)

(1)NEXT数组

要正确的推导出串的操作举例如下:

1)当j=1时,next[1]=0;

2)当j=1时,只有一个元素a,无相似度,故next[2]=1;

3)当j=3时同上知next[3]=1;

4)当j=4,这时有三个元素a,v,a出现了相似度即a=a,经过定义第二条可以知道next[4]=2;

依此类推,可以推得next[j]的值等于012123111;

.....

5)结束

这时可以累计前面的实例得出结论,即若前后有单独的字符串有相似度则j值等于2,而若前后有两个字符元素相等则j值等于3,若有n个元素具有相似度则k值等于n-1

表3.2-1NEXT数组实例

(2)NEXTVALL数组

尽管KMP算法已经是在朴素算法上的一种改进了,但是KMP仍然是存在不足的,它并非是完全的简略,仍然有多余的匹配操作,假设给定了一个数组P=rootandbook,前后都有‘oo’重复,这时如果用一个特定容纳符号来容纳这个重复的‘oo',接着用这个符号代表前面已经匹配好的数组,接着就可以再进一步省略掉不必要的操作,这样就更简洁了。所以科学家又在KMP算法上做出了进一步的改进,引入nextval数组,nextval算法在原理上仍然是离不开next数组的,算法过程是计算next的值,其中nextval数组代表了这个数组,且其基本对应法则如下:

实例说明:

1)当j=1时,nextval[1]=0,这时next的值也等于0;

2)当j=2时,nextval[2]=next[2]=1由法则可知这时第二位v与第一位e的不相等,故遵守第二条法则直接保守本位相同,nextval等于next值;

3)当j=3时,nextval[3]=next[1]=0,这是因为第三位e等于第一位e,故满足第一条对应定义即natural值等于next值;

4)当j=4时,nextval[4]=next[2]=1,这是因为第四位v与第二位v相等同理也满足第一条定义;

......依此类推得出对应的nextval的一整串值。

5)结束

表3.2-2NEXTVALL数组实例

如上所述,得到的了取代数组nextval,这样就直接可以使用并省略了。

3.3HMM模型

HMM模型(又称为隐马尔可夫模型)是一种基于概率的统计模型,其原理是根据已知的可见状态量来推测未知的隐含状态量.语音识别中为了进行语音解码并提高语音识别中的识别准确率,HMM模型运用较广,在算法中其目的是找到已知状态A与已知状态B的转换概率,这个概率是可求有限的,多组概率综合,最后得出隐含状态和已知状态的输出概率。转化到语音识别中,即在提取音素合成语音的时候,计算机模拟出所有的输出概率及转化概率,最终选出概率最大的那组数据确定下来从而识别对应的语音数据。基于马尔可夫性质,隐含状态量既然都不可观测则一定有相互联系的地方,故利用极大似然状态估计来解决语音识的解码问题[10]。

极大似然估计﹙MLE),即在已有的多个样本值中,找到发生概率最大的估计值,过程中需要对参数进行求导,且要解方程组,使概率最大化,这其中也要用到最小二乘法,即将与实际值差距最小的估计值找出,该估计值与实际值满足关系:a表示实际值,b表示估计值,则有﹙a-b﹚的平方取到最小,即为最小二乘,将z这个平方值进行求导得到一阶导数2﹙a-b﹚,后续求得极值[11]。

参考文献

[1]探索语音识别技术的前世今生[J].科技导报,2016,34(09):76-77.

[2]韩纪庆.声学事件检测技术的发展历程与研究进展[J].数据采集与处理,2016,31(02):231-241.

[3]罗海涛.语音信号的前期处理[J].福建电脑,2018,34(05):91-92.

[4]王海坤,潘嘉,刘聪.语音识别技术的研究进展与展望[J].电信科学,2018,34(02):1-11

[5]赵英娣,李冠宇,张丹烽.语音识别声学模型发展现状综述[J].科技风,2017(22):76

[6]李萍,赵润林.模式匹配算法的研究与实现[J].电脑知识与技术,2017,13(18):25-26.

[7]蔡婷,杨卫帅.一种改进的字符串模式匹配算法[J].物联网技术,2017,7(07):89-91+95

[8]王晓波.基于KMP算法Next数组的分析与优化[J].电子世界,2017(20):196+198

[9]陈子轩.基于KMP算法的next数组[J].电脑知识与技术,2017,13(03):66+82

[10]付维.基于HMM的机器人语音识别系统的研究[D].武汉科技大学,2011.

[11]赵军圣,庄光明,王增桂.极大似然估计方法介绍[J].长春理工大学学报,2010,5(06):53-54.