【NLP】ESPNet语音识别——原理、实现过程

文章目录

    • 引言
    • 一、语音识别概述
      • 1、模板匹配,例如:DTW(动态时间规整)
      • 2、统计模型,例如:GMM-HMM(混合高斯模型和马尔科夫模型)等
      • 3、深度学习,例如:DNN-HMM、End-to-End(端到端)
    • 二、端到端的语音识别
      • 1、CTC(连接时序分类)
      • 2、Attention(注意力机制)
      • 3、Attention与CTC
    • 三、ESPNet
      • 1、ESPNet 架构
      • 2、ESPNet 实现ASR的具体流程
    • 参考文献

引言

本文的主旨:

  • 阐述 ESPNet (end-to-end speech processing toolkit)进行端到端语音识别的基本原理、实现方法和主要流程。

作者的话:

  • 由于之前没有接触过NLP,对其中的很多概念都不清楚,所以将会从NLP的发展历史开始,从基础开始,逐渐阐述NLP方法的一代代进步,按照一个顺序的结构,最终讲到今天的主题——ESPNet;
  • 所以我预计,大量的篇幅可能都是ESPNet的基础知识;

本文逻辑:

  • 语音识别(ASR)的发展历史;
  • ASR的三大方法,引出深度学习法;
  • 详解深度学习中的端到端是什么?
  • 由端到端引出ESPNet,并详解ESPNet。

一、语音识别概述

虽说概述这一部分和ESPNet本身没有什么直接联系,但本着一个学习的过程,还是把自己前期做的调研中有价值的部分写上,来让读者明白ESPNet在整个语音识别中,处于一个怎样的地位。

【NLP】ESPNet语音识别——原理、实现过程_第1张图片

从1950s至今,可以总结出三大类语音识别方法:

1、模板匹配,例如:DTW(动态时间规整)

  • 模板匹配使用动态规划的思想,将两段不等长的语音化为等长语音,之后便于上下匹配波形;

  • 简单来说:我有一个模板库,通过获取一段语音的波形图象与模板库进行比对,来进行语音的匹配;

  • 模板匹配比较适合小词汇量、单独词的识别;但的识别效果过分依赖于端点检测,不适合用于连续语音识别。

2、统计模型,例如:GMM-HMM(混合高斯模型和马尔科夫模型)等

统计模型语音识别系统通常有如下模块:

  1. 信号处理和特征提取模块:从输入的语音信号中提取特征,用于声学模型的建模以及解码过程。
  2. 声学模型:通常的语音识别系统大都使用隐马尔科夫模型对词,音节、音素等基本的声学单元进行建模,生成声学模型。
  3. 语言模型:语言模型对系统所需识别的语言在单词层面上进行建模。判断出那个词是最适合出现在当前句中。目前大多数语音识别系统普遍采用统计语言模型,其中大都是基于统计的N元语法(N-gram)模型及其变体。(我觉得也是基于概率的还是比较好的)
  4. 发音词典/词汇表:发音词典包含系统所能处理的单词的集合,并标明了其发音。通过发音词典得到声学模型的建模单元和语言模型建模单元间的映射关系,从而把声学模型和语言模型连接起来,组成一个搜索的状态空间用于解码器进行解码工作。
  5. 解码器:解码器是语音识别系统的核心之一,负责读取输入的语音信号的特征序列,再由声学模型、语言模型及发音词典生成的状态空间中,解码出以最大概率输出该信号的词串。

【NLP】ESPNet语音识别——原理、实现过程_第2张图片

个人理解,基于统计模型的语音识别,其流程如下:

  1. 语音的输入:一段语音——我是机器人.mp3(当然不一定是mp3具体这个格式)

  2. 特征提取:提取特征向量,将数据变化为——[1 2 3 4 56 0 …]

  3. 声学模型:[1 2 3 4 56 0]-> w o s h i j i q i r e n

  4. 字典:wo——我、窝… ;shi——是、时…;ji——及、机…;qi——其、期、器…;ren——人…

  5. 语言模型:我:0.0786, 是: 0.0546,我是:0.0898,机器:0.0967,机器人:0.6785;

  6. 输出文字:我是机器人。

3、深度学习,例如:DNN-HMM、End-to-End(端到端)

  • 深度学习模型中,覆盖从DNN到RNN、CNN、LSTM、GRU、TDNN、End-to-End等模型(这些模型我就不一一细讲了…),本文所要讲的ESPNet,就属于最后一种——端到端模型。

二、端到端的语音识别

  • 传统的机器学习中,往往包含多个独立的模块。以NLP问题举例——包括分词、标注、分析句法和语义等部分。每一个模块的输出好坏会影响下一个结果,从而影响整个训练的结果,这是非端到端;
  • 而在E2E只分为输入端的语音特征和输出端的文本信息。输入经过一个 RNN 生成一个向量(这一步类似计算 sentence embedding),之后用另一个 RNN ,从向量中解码出我们需要的文本信息;第一个过程称之为 encoding,第二个过程称之为 decoding,整个模型不需要词对齐,不需要额外的语言模型。这就是端到端;
  • E2E将传统语音识别系统的三大部分——发音词典、声学模型和语言模型,被融合为一个E2E模型,直接实现输入语音的文本化;
  • Encoder-Decoder 模型虽然在结构上很简单且大部分序列到序列的预测问题,都可以使用该模型,这个序列甚至没有必要是语音,图像或者文字同样适用。

E2E模型通常包含以下的具体模型:

  1. CTC:主要负责声学模型的训练(补充,引用微软亚洲研究院的资料,CTC是最早的端到端ASR模型);
  2. RNN-T:为了联合优化声学模型与语言模型,由于RNN-T是针对每帧输入特征进行预测输出,即不用等语音全部说完再出结果,因此可应用于流识别,特别是在嵌入式设备。
  3. Attention:主要负责声学部分训练;
  4. Transformer:并行计算的特征提取器(主要可用于提取声学特征)。

由于接下来的ESPNet模型中,主要使用了CTC和Attention来进行训练和解码,所以我会主要介绍这两部分:

1、CTC(连接时序分类)

  • CTC算法全称叫:Connectionist temporal classification。顾名思义,是用来解决时序类数据的分类问题。在训练声学模型的时候,能够自动对齐输出标签和输入序列,不再像DNN-HMM模型那样需要对齐标注。

标注对齐与传统声学模型训练:

  • 传统语音识别的声学模型训练,对于每一帧,需要知道对应的label才能进行有效的训练。而且,在训练数据之前需要做语音对齐的预处理,而对齐的过程需要进行反复多次的迭代,来确保对齐更准确,是一个比较耗时的工作;
  • 不对数据进行调整处理,那就意味着不能用一些简单方法进行训练,所以必须进行标注对齐操作;
  • 举例什么是对齐标注:如果我的发音为“你好”,第1,2,3,4帧对应n的发音,第5,6,7帧对应i的音素,第8,9帧对应h的音素,第10,11帧对应a的音素,第12帧对应o的音素。如图所示:
    【NLP】ESPNet语音识别——原理、实现过程_第3张图片

使用CTC训练声学模型:

  • 与传统的声学模型相比,CTC可让网络自动学会对齐,适合语音识别和书写识别等任务;
  • 至于有关于CTC具体的原理,毕竟本文是介绍ESPNet的文章,同时CTC中涉及损失函数、前向后向算法等大量数学内容。篇幅有限,我在这里就不阐述了。

总而言之,CTC最核心的特点是

  • CTC中的前向后向算法可以令输出序列和输入序列自动按时间顺序对齐;
  • 但缺点是,为了提高效率,CTC做出了重要的独立性假设——不同帧的网络输出有条件地独立。同时从CTC模型中获得良好的性能,往往还需要使用外部语言模型;
  • 它和接下来介绍的Attention模型各有优点,最终会相互结合,并被ESPNet所使用。

2、Attention(注意力机制)

在介绍Attention之前,要简单介绍一下Encoder-Decoder,它是 NLP 领域里的一种模型框架(而不是特质某一类算法/模型),被广泛用于机器翻译、语音识别等领域。

  • Encoder是将输入的音频,转化为向量,方便之后的数学计算;
  • Decoder是将数学化的数据,最终输出为我们最终的ASR目标——文字。

【NLP】ESPNet语音识别——原理、实现过程_第4张图片

Attention模型:

  • 而Attention 模型的特点是 Eecoder 不再将整个输入序列编码为固定长度的中间向量 ,而是编码成多个向量(或者说一个向量的序列),并为不同的向量根据实际需要赋予不同的权重,以此来影响输出结果;
  • 当然,以上Encoder和Decoder是为了引出Attention,Attention本身并不一定要在 Encoder-Decoder 框架下使用的,他是可以脱离 Encoder-Decoder 框架的。

【NLP】ESPNet语音识别——原理、实现过程_第5张图片

3、Attention与CTC

  • 首先这两个模型负责的都是声学部分的训练,和语言模型没有关系;
  • 相比于CTC模型,Attention模型的对齐关系没有先后顺序的限制,完全靠数据驱动得到;
  • 因此CTC和Attention模型各有优势,可把两者结合来,构建Hybrid CTC/Attention模型,采用多任务学习,通过CTC避免对齐关系过于随机,以加快训练流程。

三、ESPNet

介绍了很多基础知识,终于要讲到今天的正题——ESPNet了:

  • ESPNet是一套基于E2E的开源工具包,可进行语音识别等任务。从另一个角度来说,ESPNet和HTK、Kaldi是一个性质的东西,都是开源的NLP工具;
  • 引用论文作者的话:ESPnet[1]是基于一个基于Attention的编码器-解码器网络,另包含部分CTC组件;
  • 个人理解:在ESPNet出现之前,已经出现了CTC、Transformer等端到端ASR模型,ESPNet以这两种模型为核心,将这两个模型串了起来,利用二者优点,并外加了Kaldi等数据准备、特征提取的工具,最终封装成一个ASR的工具包,命名为ESPNet。

1、ESPNet 架构

ESPNet中使用了ATT+CTC的架构,其可分为两大部分[2]

1、Shared encoder(共享编码器):

  • 包括了VGG卷积网络和BLSTM(双向长短时记忆网络)层,来完成语音到向量的转化。

2、Joint Decoder(联合解码器):

  • 联合解码器实现向量到最终文本结果的输出;
  • 联合解码器包括CTC(负责标签和序列的自动对齐)、Attention(为不同序列赋予不同权重)和RNN-LM(语言模型,生成最优字词句);
  • 其中CTC和Attention二者共同使用一个Loss来使模型收敛,最终的损失函数LossMTL为CTC损失函数和Attention损失函数的加权求和;在这里插入图片描述
  • 联合解码中,使用one-pass beam search(剪枝搜索)方法来消除不规则的序列与标签的对齐。

【NLP】ESPNet语音识别——原理、实现过程_第6张图片

2、ESPNet 实现ASR的具体流程

ESPNet实现ASR包含以下流程:

【NLP】ESPNet语音识别——原理、实现过程_第7张图片

  1. 数据准备:下载数据与解压缩数据;

  2. 特征提取:使用Kaldi(Kaldi也是个开源ASR工具)来提取语音特征,输出为80维的FBank特征,加上3维的pitch特征,总共83维。然后进行均值归一化,让网络更容易对语音特征进行学习;

  3. 转换数据格式:将中间数据转化为JSON格式;

  4. 语言模型的训练:语言模型使用的RNN-LM模型,其中RNN-LM训练有无字的字符序列水平知识。尽管注意解码器暗含像等式中一样包含语言模型。 RNN-LM概率用于与解码器网络一起预测输出标签。基于注意力的解码器会先学会使用LM。此外,RNN-LM可以与编码器一起训练解码器网络

  5. 声学模型的训练:使用字典、训练集和测试集,基于CTC模型、Attention的架构和Transformer的解码器进行声学部分的训练;

  6. 识别与打分:联合Transformer模型、CTC模型和RNN语言模型进行打分:在这里插入图片描述

【NLP】ESPNet语音识别——原理、实现过程_第8张图片
【NLP】ESPNet语音识别——原理、实现过程_第9张图片

参考文献

[1] Shinji Watanabe, Takaaki Hori, Shigeki Karita, Tomoki Hayashi, Jiro Nishitoba, Yuya Unno, Nelson Enrique Yalta Soplin, Jahn Heymann, Matthew Wiesner, Nanxin Chen, Adithya Renduchintala, and Tsubasa Ochiai, “ESPnet: End-to-End Speech Processing Toolkit,” Proc. Interspeech’18, pp. 2207-2211 (2018)
[2] Suyoun Kim, Takaaki Hori, and Shinji Watanabe, “Joint CTC-attention based end-to-end speech recognition using multi-task learning,” Proc. ICASSP’17, pp. 4835–4839 (2017)
[3]《语音识别:原理与应用》 厦门大学智能语音实验室
[4]《语音识别》,洪青阳,李琳著,出版社:北京:电子工业出版社
[5] https://github.com/espnet/espnet(ESPNet的gitHub首页)
[6] https://www.msra.cn/zh-cn/news/features/e2e-asr-paper-list(微软亚洲研究院)
[7] 什么是端到端(end2end)的学习? https://blog.csdn.net/alawaka2018/article/details/80388808
[8] Shinji Watanabe, Takaaki Hori, Suyoun Kim, John R. Hershey and Tomoki Hayashi, “Hybrid CTC/Attention Architecture for End-to-End Speech Recognition,” IEEE Journal of Selected Topics in Signal Processing, vol. 11, no. 8, pp. 1240-1253, Dec. 2017

你可能感兴趣的:(NLP,ESPNet,语音识别,ASR)