语音识别2 -- Listen,Attend,and Spell (LAS)
LAS是Listen(Encoder),Attend,和Spell(Decoder)的简称
第一个步骤Listen(Encoder)
listen的作用是输入一段语音信号,输出一段向量,去掉语音中的杂序,只保留和语音有关的部分。
上图中acoustic features表示的是每一帧的声音信号。
listen进行encoder
RNN
将fliter沿着时间的方向扫过每一个acoustic features ,每一个fliter会吃一个范围的acoustic features进去得到一个数值,不同的fliter会产生不同的数值,最后生成的是一个向量。


listen的时候进行down sampling(降采样)
一段声音信号表示成acoustic features的时候太长,1秒钟的声音信号有100个向量,且相邻的向量之间包含的信息量也相差不大,所以在做语音识别的过程中,为了保持训练过程更有效率,就产生了down sampling.
减少RNN的运算量
pyramid RNN
Pooling over time
上图中每一层都是RNN。左边是将相邻两个加起来送到下一层,右边是在相邻两个之间选择一个送到下一层。 减少CNN和self-attention的运算量

第二个步骤Attention
两种常用的attention方式
dot-product attention

attntion 的过程

第三个步骤Spell
初始的做attention后spell
上图中输出distribute over all tokens就是对词典中每一个词汇生成一个概率,所有概率之和为1。具体输出什么词汇就看那个概率最大,概率最大的即为当前的输出。 再拿hidden state 中的继续去做attention

算出新的的值,经过softmax后值,最后用乘以得到作为下一次decode的输入。

上一次spell的输出(此处是c),上一个hidden state ,和decode的输入共同决定了hidden state 的值,然后将做一个attention,以此类推,...其示意图如下:

训练
teacher forcing

在训练过程中可能会存在一个问题,就是之后的输出和之前的输出有关,所以如果前面的输入错了的话,后面无论怎么训练都无法达到好的训练效果,因此在训练时加一个teacher forcing ,直接将上一时刻正确的结果作为下一次的输入,避免前面一错全错。



attention的一些知识
attention的不同用法

在attention的过程中,按照我们的想法,应该是从左到右,注意力慢慢转移,但是在实际运算中,注意力可能是随便乱跳的,这就和我们的初衷相违背。

现在在attention进行计算的时候,在和进行attention计算时,也要考虑与相邻的区域的取值。

补充
1.Beam Search
原始的输出是寻找当前步骤的最大值(类似于贪心算法),很容易陷入局部最优,刚开始很好,但可能最后的一条路径并不是概率最大的。假设每次只有两种情况A,B供选择。

LAS的局限性
- 1.LAS包含attention,所以需要encoder将所有的语音听完,这就导致无法听一部分就输出一部分,不能online。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)