ASR语音识别
ASR:将语音信息转为文本
ASR语音识别入门
在建立起电话连接后,首先要将客户语音识别为文字才能进入算法流程。哪如何实现客户语音到文字的转换呢,这里就使用到了ASR语音识别技术。
声音是一种波,即为声波,我们传统的MP3文件都是以压缩存储声波信息,但是实际播放时都需要转换成波形来处理。
获得声波后,要对声波进行处理,就需要将声波切片,我们以25MS为一帧,每隔10ms插一帧,因此每两个帧之间有15ms的重叠帧。
分帧后,语音就变成了一小段,每一帧由于过短,因此波形在时域上几乎没有描述能力。我们需要将每一帧的波形做变换,常见的一种变换方法是提取MFCC特征,既根据人耳的生理特征,把每一帧的波形变成一个多维向量。利用多维向量来存储波形信息,这个过程叫做声学特征提取。实际应用时,可以采取多种方式获取声学特征而不仅限于MFCC。
此时我们将所有多维向量拼成了这段语音的声学特征矩阵。接下来就是要将其变为文本了。
这里需要有两个概念引入。
1.音素:单词的发音由音素构成。对英语而言,常用的音素集合是卡内基梅隆大学的一套39个音素构成的音素集。汉语的则是用全部声母与韵母作为音素集,另外汉语识别还分为有调无调。
2.状态:简单而言就是音素更细致的语音单位,通常一个音素有三个状态。
语音识别的三个过程
- 1:把帧识别为状态(难点)
- 2:把状态组合为音素。
- 3:把音素组合成单词
每一帧对应一个状态,而每一帧对应什么状态,这里用到了声学模型。声学模型用到了机器学习的方法,通过大量语音数据的训练,来获得每一帧对应的状态和状态对应的概率。然后通过声学模型我们获得了每一帧对应的各个状态的概率,取最大概率的状态。
将状态组合为音素,然后将音素放入隐马尔科夫模型中进入校验,然后就可以获得文本。
隐马尔科夫模型
1:构建一个状态网络
2:从状态网络中寻找与声音最匹配的路径
状态网络中,我们需要把文字的状态路径加入预先设置的网络中,然而这里就需要我们已经录入足够的文本内容,然后才能将音频校验到合适的文本,若目标文本不存在路径中,则无法识别到。但是如果目标文本过多,这就会导致查询的命中率降低。因此要选择合适大小的状态网络。
搭建状态网络,是由单词级网络展开成音素网络,再展开成状态网络。语音识别过程其实就是在状态网络中搜索一条最佳路径,语音对应这条路径的概率最大,这称之为解码。路径搜索的算法是一种动态规划剪枝的算法,称作Viterbi算法,用于寻找全局最优路径。这里又用到了三个概率:
1.观察概率:每帧和各个状态对应的概率。
2.转移概率:每个状态转移到自身或转移到下个状态的概率。
3.语言概率:根据语言统计规律得到的概率。
其中前两种,根据状态网络从声学模型中获取。语言概率则是利用机器学习从大量的文本中训练出来,可以利用某门语言本身的统计规律来帮助提升识别正确率。