当前位置:   article > 正文

Stanford CS224n 第十二讲:语音处理的端对端模型

端对端模型

目录:
1. 传统的语音识别系统
2. 使用端到端(end-to-end)系统的原因
3. Connectionist Temporal Classification(CTC)
4. Listen Attend and Spell(LAS)
5. LAS的一些改进方法
6. 语音识别一些其他的研究方向

\newline
\newline
今天这节课讲的是端到端的语音处理方法的概述,由Navdeep来讲语音识别,讲课的时候他就职于英伟达。下面就来看看语音识别都有哪些内容:

1. 传统的语音识别系统
先来看一看语音识别系统的基本定义:
在这里插入图片描述
其实就是把语音信号转换成它的文本表示的一种模型(系统)。一句话搞定!


那么为什么要用到ASR(语音识别系统呢)?
我觉得就是让人们可以通过语音和人或机器交流,这种最友好方便的方式交流。比如说小伙伴们在玩儿王者荣耀时候的语音转文字,是不是很方便(不管是喷人,或者召集队友==)


下面就是经典的语音识别模型:
在这里插入图片描述
传统的语音识别模型是用来构造生成模型的,其中上面每一个模块都使用不同的统计模型。
那么我们来看看上面模型是怎么工作的:
(1)首先接收到语音,通过最左边模块(从左往右)生成他的特征序列X;
(2)然后通过右边三个模块(从右往左),并使用一些好的搜索方法,找到什么样的序列Y会使(1)中产生的特征序列X概率最高。


下面我们来看看现在的语音识别系统被改成了什么样子~~
在这里插入图片描述

随着时间的推移人们注意到,如果用神经网络替换传统语音识别模型的每一个模块的话,整个系统效果会更好。

2. 使用端到端(end-to-end)系统的原因
但是改进版的ARS的多模块有多个目标函数,那么训练起来可能就会有一些难度。因此,出来了后面的端到端模型。
(1)Connectionist Temporal Classification(CTC)
(2)Listen Attend and Spell(LAS)
至于端到端模型的定义,可以参考这儿(Click Here
语音识别中,理想的端到端模型如下,直接建模 p(y|x)
在这里插入图片描述

3. Connectionist Temporal Classification(CTC)

CTC的模型图如下:
在这里插入图片描述
由上面模型图可以知道模型的工作流程如下:
(1)通过对语音信号处理,得到特征 x t x_t xt
(2)将特征输入到双层的RNN(bi-RNN);
(3)每个时刻的 x t x_t xt对应一个输出隐向量 v t v_t vt,其中 v t v_t vt的大小为语料库的大小|V|;
(4)对隐向量 v t v_t vt做softmax运算,就可以得到t时刻对应语料库中每个语料概率的大小;
(5)通过一定的算法解码过程。


上图中我们可以看到语料库中有一个token为 &lt; b &gt; &lt;b&gt; <b>,其实是由于语音片段(帧)切割时的随意性,可能导致一个字符c被切割为多个帧,每个帧都输出c。为了区分字符与字符的界限,所以引入空格分隔符。在解码的时候还需要限制字符只能转移到相同的字符,或者空格。效果如下:
在这里插入图片描述
其中,出现连续的c表示,此处传入的 x 1 和 x 2 x_1和x_2 x1x2语音信号特征都是在发c这个音,即c这个发音的语音信号被分成了两个时刻,就好比我们说c的时候,可能发音的时间会有1秒,但是模型是每0,5秒切割一次语音信号,所以两个信号都在发c这个音。


用CTC模型的两个具体结果如下:
在这里插入图片描述
从效果中我们可以看到识别结果还可以,但是美中不足的就是会产生拼写错误。此时Google改进方法是:
(1)通过在训练时集成语言模型进去修正了这些问题;
(2)不再使用字符级别,而是使用单词级别的大词表,识别出可能的单词后,用语言模型挑出最可能的句子。
但是显然改进后的CTC使用了语言模型的辅助,因此不再是纯粹的end-to-end模型。
在这里插入图片描述

4. Listen Attend and Spell(LAS)
LAS其实是一种sequence to sequence 模型(还加入了attention机制),前面我们讲翻译模型的时候也讲到过,所以这一部分理解起来还是比较简单的。
先来看一下模型图:
在这里插入图片描述
由上图我们可以看到,LAS是基于encoder-decoder的模型,还加入了注意力机制。其工作流程如下:
(1)我们是将语音信号的特征输入到双向RNN中(encoder部分)
(2)做attention,在不同的时刻关注输入的不同部分(decoder部分)
(3)解码


关于LAS模型的具体细节图如下:
在这里插入图片描述
其中一个值得注意的细节是这里的encoder是树形的,因为对于较长的语音来讲,每个时刻都要计算softmax,效率不高、模型注意力被分散。因此把相邻的一些输入合并一下,提高了效率和效果。


下面说一下LAS的一些缺点:
(1)必须要整个语音文本才能转换,attention机制
(2)attention机制需要巨大的计算量
(3)输入的长度对模型效果影响较大,如下图:
在这里插入图片描述

5. LAS的一些改进方法
上面提到了LAS的一些缺点,下面就来介绍一些LAS的提升效果的方法。
(1)在线seq2seq模型
(2)编码器中加入卷积层
(3)目标粒度的选择
(4)处理词语分界处的错误自信导致搜索时的错误
(5)处理提前终止现象

5.1在线seq2seq模型
在线seq2seq模型,顾名思义,就是希望能够即时产生输出,而不依赖于整个语音信号特征。
其模型图如下:
在这里插入图片描述
其实就是将输入截成定长的几段,每一段产生一些输出。这样就可以做到即时输出。输出完了以后任然需要进行分配,即哪几个字母属于一个单词,课程中说道可以采用动态规划解决。


其实验结果如下:
在这里插入图片描述
效果图说明有attention机制的模型不受窗口大小影响。没attention机制的模型窗口越大,效果越差。

5.2 编码器中加入卷积层

LAS模型中我们采用树形encoder的时候,把相邻的一些输入合并一下,提高了效率和效果。
而此处的思路是,不简单的将输入合并,而是将其进行卷积,然后再输入到encoder,模型图如下:
在这里插入图片描述
这样做的效果我就不展示了,处理后的输入肯定比简单拼接效果更好。

5.3 目标粒度的选择
其实就是语音识别文本,识别后的粒度大小,有如下几种:
在这里插入图片描述
还有更符合语音特点的粒度大小,那就是n-gram(n代表最大n个字符组合成一个)
在这里插入图片描述
不同粒度大小,效果如下:
在这里插入图片描述
对于end to end模型来说,会让模型决定n-gram的分割:
在这里插入图片描述

5.4 处理词语分界处的错误自信导致搜索时的错误
在这里插入图片描述
如果在开头困惑度不是很高,那么后面搜索起来就会比较顺利,但是如果刚开始模型就比较困惑,不确定,那么后面的搜索就可能出现搜索错误。
解决办法是通过惩罚softmax输出概率1来Entropy Regularization正则化模型。

5.5 处理提前终止现象
模型对于生成很长的输出会进行惩罚,因此很长的输入出现提前终止的情况,如下图:
在这里插入图片描述
解决办法就是在预测时未处理的输入越多,惩罚越大。

6. 语音识别一些其他的研究方向
(1)多源语音信号的识别(鸡尾酒舞会问题)
能够在一个人,不同麦克风录制的语音中识别出来,各个麦克风中的话。
能够在多人语音中识别出不同人的话。
在这里插入图片描述
(2)同声传译问题
打个比方就是,你说的是法语,我先讲法语识别成文本,然后再翻译成英文。
在这里插入图片描述

这一节课看起来很有意思,就是有些名词或者概念没咋听说过,理解起来有一定难度。目前也没有做过有关语音方面的问题,权当是给自己科普了吧。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/629793
推荐阅读
  

闽ICP备14008679号