语音之家

 找回密码
 立即注册
搜索
热搜: 算法 软件 硬件
查看: 273|回复: 0

端到端的语音识别

[复制链接]

14

主题

15

帖子

128

积分

注册会员

Rank: 2

积分
128
发表于 2019-8-13 18:08:02 | 显示全部楼层 |阅读模式
目前主流的语音识别方法是DNN-HMM算法, 该算法有两个缺陷。

1. HMM的马尔科夫假设帧的生成概率只跟当前状态有关,跟历史状态和历史帧无关。
2. DNN的声学模型用来求输出状态对应的后验概率。而语音的边界不好界定,这样每一帧给一个指定label很难做到准确。

另外发音字典是由人工设计, 也有可能引入错误。

现在常用的端到端的语音识别有两种, CTC和seq2seq

Connectionist temporal classification简称CTC,连接时序类分类
DNN声学模型需要在训练的数据准备阶段必须要对语音进行强制对齐。 CTC的引入可以放宽了这种一一对应的限制要求,只需要一个输入序列和一个输出序列即可以训练。有两点好处:不需要对数据对齐和一一标注;CTC直接输出序列预测的概率,不需要外部的后处理。
CTC引入了blank(该帧没有预测值),“s”对应的一整段语音中只有一个尖峰被认为是s,其他的认为是blank。对于一段语音,CTC最后的输出是音素的序列,不关心每一个音素对应的时间长度。
训练流程和传统的神经网络类似,构建loss function,然后根据BP算法进行训练,不同之处在于传统的神经网络的训练准则是针对每帧数据,即每帧数据的训练误差最小,而CTC的训练准则是基于序列(比如语音识别的一整句话)的。 即最句话的后验概率最大化。

seq2seq 是一个Encoder–Decoder 结构的网络,它的输入是一个序列(语音或者特征),输出也是一个序列(文本), Encoder 中将一个可变长度的信号序列变为固定长度的向量表达,Decoder 将这个固定长度的向量变成可变长度的目标的信号序列。
seq2seq模型的encoder非常简单, 就是RNN,可以是多层(simple-RNN,GRU,LSTM).
Dcoder训练的时候输入由两部分组成,一部分是encoder的last state,另一部分是target序列.Decoder 测试的时候输入也是由两部分组成,一部分是encoder的last state,另一部分是来自于上一个时刻的输出,直到某个时刻的输出遇到结束符.





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|bbs.chipintelli.com

GMT+8, 2019-11-21 11:14 , Processed in 0.050449 second(s), 25 queries .

快速回复 返回顶部 返回列表