1 监督学习模型
1.1.1总结
1)语音识别以前使分步骤识别的,分为声学模型和语言模型,比如先GMM再HMM;
2)后面发展为端到端的,直接将语音信号转换成文字,比如LSTM+CTC目标函数。
语音识别基本和图片识别类似,都是从传统的模型到深度神经网络DNN,再到RNN、深度卷积网络CNN。
下面是一些模型列表:
1.混合高斯-隐马尔科夫模型 GMM-HMM
2.深度神经网络-隐马尔科夫模型 DNN-HMM
3.深度循环神经网络-隐马尔科夫模型 RNN-HMM
4.深度卷积神经网络-隐马尔科夫模型 CNN-HMM
5.n-GRAM模型
6.CTC
7.LFMMI(lattice free maximum mutual information)无词图最大互信息
8.连接时序分类-长短时记忆模型 CTC-LSTM
9.注意力模型 Attention
1.2GMM-HMM
混合高斯-隐马尔科夫模型 GMM-HMM。神经网络出现前的模型,20世纪80年初。
详见:语音识别GMM-HMMhttps://blog.csdn.net/zephyr_wang/article/details/127655618
1.2.1 DNN-HMM
详见:语音识别DNN-HMMhttps://blog.csdn.net/zephyr_wang/article/details/127655716
1.3GRU-CTC、BLSTM-RNN
利用循环神经网络可以利用语音上下文相关的信息,得到更加准确地信息,而GUR又能选择性的保留需要的长时信息,使用双向rnn又能够充分的利用上下文信号。
但该方法缺点是一句话说完之后才能进行识别,且训练相对cnn较慢
1.4FSMN
科大讯飞结合DNN和RNN特点,研发了前馈型序列记忆神经网络(feed-forward sequential memory network,FSMN)解决了双向GRU的参数过多和实时性较差的缺点,它利用一个记忆模块,包含了上下几帧信息,能够得到不输于双向GRU-CTC的识别结果。
1.5DFCNN
2016年,科大讯飞提出了一种使用深度卷积神经网络来对时频图进行识别的方法,就是全序列卷积神经网络DFCNN(DEEP fully convolutional neural network)。
DFCNN先对时域的语音信号进行傅里叶变换得到语音的语谱图,DFCNN直接将一句语音转化成一张图像作为输入。
1.6 DFSMN
DFSMN是FSMN的改进,引入的skip连接和记忆跨越
详见:普通话/汉语的语音识别:DFSMN-CTC-SMBR模型https://blog.csdn.net/zephyr_wang/article/details/110750418
1.7 百度Deep Speech 2
DeepSpeech2 采用了端到端的 ASR 技术,通过 HPC 技术等提高了训练速度。
2 非监督预训练模型
2.1 wav2vec
wav2vec系列工作由facebook AI Research团队提出,包括wav2vec、vq-wav2vec、wav2vec2.0,效仿nlp上的word2vec,是语音的一种通用特征提取器
1)WAV2VEC是语音识别方面的非监督预训练模型
参考:https://blog.csdn.net/zephyr_wang/article/details/127821501
2)VQ-WAV2VEC是WAV2VEC基础上的发展,VQ-WAV2VEC离散化后输入BERT模型,然后再输入声学模型AM。
参考:https://blog.csdn.net/zephyr_wang/article/details/127838261
3)wav2vec 2.0采用了预训练、fine-tune思路。
将语音x通过一个多层卷积神经网络进行encode成z,然后对z进行mask,如同BERT中的mask。然后输入到transformer网络构建c。构建c是基于连续语音表示,而不是离散的。而量化q主要用到了对比学习损失函数里,不像VQ-WAV2VEC是量化后才输入到BERT。
在预训练后,模型可以在标签数据上使用Connectionist Temporal Classification (CTC) loss进行fine-tune,应用于下游语音识别任务。
参考:https://blog.csdn.net/zephyr_wang/article/details/127851102
2.2 HuBERT
采用了一个更加直接的预测loss将声学单元(如MFCC)与mask预测部分区分开。
HuBERT效果超过了wav2vec 2.0。
参见:https://blog.csdn.net/zephyr_wang/article/details/127923998
3.语音识别工具包
1)kaldi:Kaldi 是一个语音识别工具。使用 C++ 开发,基于 Apache 许可证。
https://blog.csdn.net/zephyr_wang/article/details/127551806
2)wav2letter++:Facebook开源的,wav2letter++是完全使用C++编写的系统
3)百度的PaddleSpeech:
语音识别的以前一些工具集,如Kaldi、Fairseq S2T等都太复杂,比如Kaldi还得熟悉Perl、C++。由此,我们提出了PaddleSpeech,提供命令接口和便携式方法,方便语音相关开发应用。
此外,以前中文语音识别社区较少,PaddleSpeech既支持英文又支持中文。
PaddleSpeech不仅支持语音识别还支持语音合成。
详见:https://blog.csdn.net/zephyr_wang/article/details/128131407