文章目录

  • 引言
  • 一、语音识别概述
    • 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在整个语音识别中,处于一个怎样的地位。

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

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

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

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

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

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

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

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

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

  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的音素。如图所示:

使用CTC训练声学模型:

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

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

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

2、Attention(注意力机制)

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

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

Attention模型:

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

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(剪枝搜索)方法来消除不规则的序列与标签的对齐。

2、ESPNet 实现ASR的具体流程

ESPNet实现ASR包含以下流程:

  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语言模型进行打分:


参考文献

[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语音识别——原理、实现过程相关推荐

  1. 语音识别的原理_语音识别原理_语音识别原理框图 - 云+社区 - 腾讯云

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 深入浅出地介绍了基于hmm的语音识别的原理,不注重公式的细节推导而是着重阐述公式背 ...

  2. Kaldi(A1)语音识别原理

    Ref 强烈建议先看完以上资料 语音识别的原理 语音识别的过程可以理解为找路: 一个朋友告诉你他从杭州站走到杭州东经过了水.桥.广场,想让你猜猜他走的是哪条路,你该怎么办呢? 那我们就找这些特征所对应 ...

  3. (一)关于NLP的概念和处理过程

    关于NLP的概念和处理过程 一.自然语言处理(Natural Language Processing) (1)自然语言处理是计算机科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自 ...

  4. 30年时间让科技与人对话,什么是机器人语音识别原理

    电销机器人核心技术是语音是识别,了解一台机器人语音识别原理,可以说就能知道电话机器人好不好用,能否帮助企业完成拓客需求. 作为人工智能的产物,电销机器人还蒙着一层神秘的色彩.电销机器人如何做到语音识别 ...

  5. NLP( 包括语音识别)

    自然语言处理(NLP),广义上来讲包括对各种形式的自然语言的处理,即既包括文本,也包括语音.不过,因为对语音的处理涉及信号处理,跟文本处理的感觉不太一样,所以常常把语音单独拿出来说.这样,狭义的 NL ...

  6. 【AI 全栈 SOTA 综述 】这些你都不知道,怎么敢说会 AI?【语音识别原理 + 实战】

    章目录 前言 语音识别原理信号处理,声学特征提取识别字符,组成文本声学模型语言模型词汇模型 语音声学特征提取:MFCC和LogFBank算法的原理 实战一 ASR语音识别模型系统的流程基于HTTP协议 ...

  7. 基于OpenSeq2Seq的NLP与语音识别混合精度训练

    基于OpenSeq2Seq的NLP与语音识别混合精度训练 Mixed Precision Training for NLP and Speech Recognition with OpenSeq2Se ...

  8. 两个简单的Demo示例向读者展示Flash和ASP.NET交互原理以及过程

    ASP.NET与FLASH交互学习了ASP.NET的基础知识之后,终于等到学习交互的时候了.请大家和我一起来进行让人激动的交互吧!本章我将用两个简单的Demo示例向读者展示Flash和ASP.NET交 ...

  9. 计算机指纹识别的原理步骤,指纹识别原理和过程

    指纹识别概念 指纹识别是生物识别的一种.不过其所分析的对象是指纹特征.指纹特征是最早被发现和应用的,所以指纹识别的历史较之其它识别技术要悠久的多.出现自动化的指纹识别系统到现在,目前的指纹识别技术已经 ...

最新文章

  1. 技巧:两部解决U盘安装windows 7
  2. S - 母牛的故事(递推)
  3. 公钥和私钥的简单通俗说明
  4. MySQL 面试必备:又一神器“锁”,不会的在面试都挂了
  5. chmod、chown函数的使用
  6. ShopXO 开发文档
  7. 当你已经23~男生女生都该看
  8. DBMS连接不上 —— 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。
  9. 兄弟连mysql数据库_兄弟连学python-------MySQL数据库基础知识
  10. 【更新】Navicat Monitor v1.7的新功能说明
  11. html实现开关,使用纯css实现开关效果
  12. no such file or directory : 'users/shikx/xxx/xxx/Appirater.m'
  13. meanShift算法用于目标跟踪的优缺点
  14. 七月算法机器学习 9 推荐系统与应用
  15. matlab与maple互联,编程语言与Maple联合使用教程
  16. 阿里聚合直播盒子APP源码™ AlijuheCMS Build Demo 20190206
  17. 使用Logisim软件实现一位全加器,四位串行加法器,四位并行加法器。
  18. 错误java.lang.NoClassDefFoundError: org/jaxen/VariableContext
  19. 怎样用计算机命令提高网速,老司机教你电脑网速慢怎么办
  20. RestTemplate设置Headers

热门文章

  1. 螺杆支撑座如何避雷要害
  2. linux系统常用命令列举
  3. 用html制作一个音乐排行榜,用html制作音乐贴(一)
  4. Nova Conductor服务
  5. 湖北武汉电信机房详细介绍
  6. 华为openEuler(EulerOS)系统 设置yum源
  7. 华为云服务器EulerOS镜像源设置方法
  8. 沉痛悼念孙吉贵老师.........
  9. 晋升PPT这样写,帮你提高晋升概率
  10. 阿里云服务器Intel Xeon Platinum 8269CY(Cascade Lake)处理器CPU性能评测