使用 Transformer 进行语音识别
0. 视频理解与字幕
# 下载demo视频
!test -f work/source/subtitle_demo1.mp4 || wget -c https://paddlespeech.bj.bcebos.com/demos/asr_demos/subtitle_demo1.mp4 -P work/source/
import IPython.display as dp
from IPython.display import HTML
html_str = '''
<video controls width="600" height="360" src="{}">animation</video>
'''.format("work/source/subtitle_demo1.mp4 ")
dp.display(HTML(html_str))
print ("ASR结果为:当我说我可以把三十年的经验变成一个准确的算法他们说不可能当我说我们十个人就能实现对十九个城市变电站七乘二十四小时的实时监管他们说不可能")
Demo实现:https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/automatic_video_subtitiles/
1. 前言
1.1 背景知识
语音识别(Automatic Speech Recognition, ASR) 是一项从一段音频中提取出语言文字内容的任务。
目前该技术已经广泛应用于我们的工作和生活当中,包括生活中使用手机的语音转写,工作上使用的会议记录等等。

(出处:DLHLP 李宏毅 语音识别课程PPT)
1.2 发展历史
- 早期,生成模型流行阶段:GMM-HMM (上世纪90年代)
- 深度学习爆发初期: DNN,CTC[1] (2006)
- RNN 流行,Attention 提出初期: RNN-T[2](2013), DeepSpeech[3] (2014), DeepSpeech2 [4] (2016), LAS[5](2016)
- Attetion is all you need 提出开始[6]: Transformer[6](2017),Transformer-transducer[7](2020) Conformer[8] (2020)

目前 Transformer 和 Conformer 是语音识别领域的主流模型,因此本教程采用了 Transformer 作为讲解的主要内容,并在课后作业中步骤了 Conformer 的相关练习。
2. 实战:使用Transformer进行语音识别的流程
CTC 的输出之间相互独立 P ( Y ∣ X ) P(Y \mid X) P(Y∣X),每一帧利用上下文的信息的能力不足。
而 seq2seq(Transformer,Conformer) 的模型采用自回归的解码方式 P ( Y n ∣ X , Y < n ) P(Y_n \mid X, Y_{<n}) P(Yn