博客
关于我
LAS:LISTEN, ATTEND AND SPELL
阅读量:435 次
发布时间:2019-03-06

本文共 2712 字,大约阅读时间需要 9 分钟。

LAS: Listen, Attend and Spell——基于神经网络的语音识别系统

LAS(Listen, Attend and Spell)是一种基于神经网络的端到端语音识别系统,能够直接将语音信号转录为文字。该系统由两个主要组件构成:收听器(Listener)拼写器(Speller)。收听器负责将原始语音信号转换为高层次的语音表示,而拼写器则利用注意力机制进行字符解码,生成最可能的文字序列。


模型结构

LAS的输入为一段语音信号,经过收听器处理后,输出一系列特征向量。拼写器则根据这些特征向量生成字符序列。具体而言:

  • 输入:语音信号 $\mathbf{x} = (x_1, \ldots, x_T)$,其中 $T$ 为语音的时长。
  • 输出:字符序列 $\mathbf{y} = (\langle\text{sos}\rangle, y_1, \ldots, y_S, \langle\text{eos}\rangle)$,其中 $y_i$ 表示第 $i$ 个字符,$\langle\text{sos}\rangle$ 和 $\langle\text{eos}\rangle$ 分别表示句子开始和结束标记,$\langle\text{unk}\rangle$ 表示未知字符。
  • LAS通过以下公式建模字符的条件分布:

    [ P(\mathbf{y} \mid \mathbf{x}) = \prod_{i} P(y_i \mid \mathbf{x}, y_{<i}) ]

    其中,$y_{<i}$ 表示前一个字符,$\mathbf{x}$ 表示输入语音信号。


    收听器(Listener)

    收听器是一个双向长短期记忆RNN(BLSTM),通过金字塔结构降低时间分辨率。在每一层,时间分辨率减少一半,这样即使输入语音信号较长(如数百到数千帧),模型处理起来也不会显得过于繁琐。具体来说,第 $j$ 层在第 $i$ 时间步的输出为:

    [ h_i^j = \text{BLSTM}(h_{i-1}^j, h_i^{j-1}) ]

    为了进一步减少时间分辨率,我们采用多层金字塔BLSTM(pBLSTM),将每一层的输出连接起来,再将其送入下一层。这种方法不仅降低了计算复杂度,还使得模型能够更好地捕捉数据中的非线性特征。


    下采样方法

    在语音识别任务中,下采样是一种非常重要的预处理方法。通过降低语音信号的时间分辨率,可以显著减少模型的计算负担。传统的RNN下采样方法(如Pyramid RNN)和CNN下采样方法(如Time-delay DNN)都可以应用于LAS模型。具体来说:

  • Pyramid RNN:通过将两个相邻的时间向量合并成一个新的向量,将输入的 $T$ 帧语音信号降低到 $T/2$ 帧。
  • Time-delay DNN:通过空洞卷积(dilated convolution)将语音信号的时间分辨率降低到原来的 1/T。
  • 对于 attention 类模型,通常会采用Truncated Self-Attention策略,以应对长语音序列中的计算复杂度问题。这种方法通过限制注意力范围(如只关注前后几帧)来加速训练和推理过程。


    拼写器(Speller)

    拼写器的核心组件是基于注意力机制的解码器。每个时间步,解码器状态 $s_i$ 和上下文向量 $c_i$ 的结合决定了下一个字符的概率分布。具体流程如下:

  • 注意力机制:在每个时间步,解码器状态 $s_i$ 与当前的语音特征向量 $\mathbf{h}$ 进行匹配,生成注意力权重 $\alpha_{i,u}$。通过 softmax 转换为概率分布,注意力权重用于加权求和生成上下文向量 $c_i$。
  • 解码过程:解码器状态 $s_i$ 通过 RNN(通常采用双层 LSTM)更新,生成下一个字符的概率分布。字符分布函数 CharacterDistribution 通过 MLP 模型实现。

  • 注意力机制的变体

    LAS模型中引入了两种注意力机制:

  • 点积注意力(Dot Attention):通过点积运算计算注意力权重 $\alpha$,输入向量 $h$ 和查询向量 $z$ 通过矩阵变换后进行计算。
  • 加性注意力(Additive Attention):将输入向量 $h$ 和查询向量 $z$ 通过矩阵变换后相加,通过激活函数生成注意力权重 $\alpha$。
  • 这两种注意力机制都可以应用于 LAS 模型,但具体选择哪一种取决于任务需求。


    局部感知注意力机制

    为了适应语音识别任务,LAS模型中引入了局部感知注意力机制。这种机制不仅考虑当前时间步的语音特征,还考虑前后几步的语音特征,生成更稳定的注意力权重。具体来说,时间步 $t=1$ 时的注意力权重 $\alpha_{1}^2$ 可以通过以下步骤计算:

  • 在时间步 $t=0$ 时,通过 Softmax 转换为注意力权重 $\alpha_0^{1,2,3,4}$。
  • 使用变换层将历史输入转换为当前时间步的注意力输入。
  • 根据位置关系,仅关注语音特征向量 $\mathbf{h}^2$ 附近的注意力权重 $\alpha$。

  • 解码与重定分

    在推理过程中,模型通过以下步骤生成最可能的字符序列:

  • 波束搜索(Beam Search):为了避免贪心解码的局限性,采用波束搜索策略,保留一定数量的最优路径。每次迭代都保留最可能的字符,逐步生成完整的字符序列。
  • 语言模型结合:为了提高生成的语句质量,将语言模型的概率与模型自动生成的概率结合起来,计算最终的字符分布。
  • 具体来说,字符的最终概率为:

    [ s(\mathbf{y} \mid \mathbf{x}) = \frac{\log P(\mathbf{y} \mid \mathbf{x})}{|\mathbf{y}|c} + \lambda \log P{\text{LM}}(\mathbf{y}) ]

    其中,$|\mathbf{y}|_c$ 表示字符序列的长度,$\lambda$ 是语言模型权重。


    局限性

    尽管 LAS 模型在语音识别任务中表现出色,但仍有一些局限性:

  • 离线性质:LAS模型需要听完整个语音信号后才能开始解码,无法实现一边听一边辨识。
  • 字母限制:LAS模型通常针对词母处理,难以直接应用于汉语等多字母语言。

  • 参考文献

    • 李宏毅. 《人类语言处理》. 2020.
    • LISTEN, ATTEND AND SPELL: A NEURAL NETWORK FOR LARGE VOCABULARY CONVERSATIONAL SPEECH RECOGNITION.

    转载地址:http://qfiyz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现greatest common divisor最大公约数算法(附完整源码)
    查看>>
    Objective-C实现greedy coin change贪心硬币找零算法(附完整源码)
    查看>>
    Objective-C实现GridGet算法(附完整源码)
    查看>>
    Objective-C实现half adder半加器算法(附完整源码)
    查看>>
    Objective-C实现hamiltonianCycle哈密尔顿图算法(附完整源码)
    查看>>
    Objective-C实现hamming code汉明码算法(附完整源码)
    查看>>
    Objective-C实现hamming numbers汉明数算法(附完整源码)
    查看>>
    Objective-C实现hammingDistance汉明距离算法(附完整源码)
    查看>>
    Objective-C实现hanning 窗(附完整源码)
    查看>>
    Objective-C实现hanoiTower汉诺塔算法(附完整源码)
    查看>>
    Objective-C实现hardy ramanujana定理算法(附完整源码)
    查看>>
    Objective-C实现harmonic series调和级数算法(附完整源码)
    查看>>
    Objective-C实现harris算法(附完整源码)
    查看>>
    Objective-C实现HashTable哈希表算法(附完整源码)
    查看>>
    Objective-C实现haversine distance斜距算法(附完整源码)
    查看>>
    Objective-C实现heap sort堆排序算法(附完整源码)
    查看>>
    Objective-C实现heaps algorithm堆算法(附完整源码)
    查看>>
    Objective-C实现heap堆算法(附完整源码)
    查看>>
    Objective-C实现Heap堆算法(附完整源码)
    查看>>
    Objective-C实现hexagonal numbers六边形数算法(附完整源码)
    查看>>