VietASR论文阅读

概述

VietASR是一个针对小语种的ASR Pipeline,结合了HuBert和Zipformer,本质是HuBert对ASR的适配

对HuBert的改动

  1. VietASR使用Fbank直接进行掩码,替代音频+CNN。

HuBert示意图

  1. 修改损失函数

回顾,HuBert中

\[ L_m(f;X,M,Z)= \sum_{t\in M}logp_f(z_t|\tilde{X},t) \]

\[ p_f^{(k)}(c | \tilde{X}, t) = \frac{\exp(\text{sim}(A^{(k)} o_t, e_c)/\tau )}{\sum\limits_{c' =1}^{C} \exp(\text{sim}(A^{(k)} o_t, e_{c'})/\tau )} \]

一些符号说明
  • $ X = [x_1,..,x_T] $ 为T个frame的语音输入。

  • $ Z=[z_1,..,z_T] 为 $Acoustic Unit Discovery模型输出的hidden units。

  • \(z_t \in [C]\) 是一个C-class的变量,为语音的离散表示。

  • \(h\)是一个非监督的聚类模型,如k-means on MFCC。

  • \(f\)是HuBert预训练模型。

  • \(A^{(k)}\) 是第k个聚类的投影矩阵,乘以 \(o_t\) 之后变成C-class的离散变量。

  • \([o_1, ..., o_T]\) 为Bert的输出。

  • \(e_c\)\(c\) 的嵌入向量。

  • \(sim(·,·)\) 是两个向量之间的余弦相似度。

  • \(\tau\) 是logit scaling factor。

而VietASR修改了损失函数,从余弦相似度变为(论文中这里 \(f\) 是loss函数。\(z\)也不是类别,而是Bert预测的所有类别的softmax概率。这两个记号和HuBert中不同):

\[ f(\tilde{X}, c) = - \sum_{t \in \text{masked}} \log \frac{\exp(z_{tc_t})}{\sum_{i=1}^C \exp(z_{t,i})} \tag{1} \]

\[ o = \text{encoder}(\tilde{X}) = (o_1, o_2, \dots, o_T) \tag{2} \]

\[ z_t = A o_t / \tau = (z_{t1}, z_{t2}, \dots, z_{tC}) \tag{3} \]

其中,\(X_e\) 表示带掩码的输入,\(c\) 表示簇(cluster)标签,\(A\) 表示投影矩阵,\(\tau\) 为温度参数。

这种简化方式来自于李宏毅组的工作MELHUBERT: A SIMPLIFIED HUBERT ON MEL SPECTROGRAMS,优化了cos带来的大量运算,其本质是使用生成学习而非原来的对比学习,示意图如下。左侧为HuBert原始结构,右侧为改进后的结构:

VietASR与HuBert区别

Pipeline

  1. 在小规模有监督数据上训练一个Zipformer ASR模型,使用RNN-T loss。

  2. 对训练好的Zipformer的encoder输出应用k-means,作为HuBert标签。

  3. 使用上面的标签进行HuBert训练,采用cross-entropy优化。

  4. 使用pruned RNN-T loss对预训练的encoder微调。

VietASR Pipeline示意图


VietASR论文阅读
http://example.com/2025/02/19/VietASR论文阅读/
作者
Yujie Tu
发布于
2025年2月19日
许可协议