基于Wenet的语音识别

基于Wenet的语音识别

​ 2022.5.7

带LM的方案:

现CTC/AED方案:

只在推理用:预训练的LM参与CTC解码,CTC解码完将n-best送入attention decoder,作为attention decoder的解码空间,二遍解码;

还可以有的方案:

  1. cold fusion:预训练LM参数不更新,与CTC/AED AM模型融合,只更新AM模型,然后推理解码CTC+LM,(不)送入attention decoder??(这里的更新am,要有领域wav+text时,更新才有效)

  2. shallow fusion:只在推理用:attention decoder解码时引入预训练LM分数,影响rescore路径;

(参考las:$\large s(y|x)=\frac{logP(y|x)}{|y|c}+\lambda logP{LM}(y)$)

  1. rescore,但是ctc n-best是给decoder输出每个符号的限制范围,不是只在ctc的beam条路径中选一条,而是decoder也可以做beam search

班博说:

  • 如果没有领域数据

    • 比如文言文出师表这种,即使am训练得再好,如果不依赖lm,那么ctc出来的n-best里就不会有文言文这条候选路径,那么即使后面怎么rescore都无效;

    • ctc解码过程中引入lm,出来的可能会有效,然后再可选加/不加rescore;

    • ctc解码过程中纯纯声学模型过程,语言模型有起一点作用但是很弱,我们对通用语料训练得到的am的唯一要求就是发音准确,对它没有语言模型的要求,甚至希望它能减少语言模型的依赖,因为后期要加领域数据训练的语言模型

      这里encoder+ctc之所以有一点语言模型作用(我一开始以为它是纯纯am,只是音到字的建模,没有字到字的建模),是因为不然发同音字,它出来的可以是任意字,而很不容易发出对的字,但是实际上大部分都是发对的字,说明有语言模型的作用在里头)

    • 更好的结合方式是,ctc解码纯纯声学模型,再用领域数据的语言模型rescore,这时候按字建模就不合适了,不然n-best可能都没那条路径,最好的就是按音素/音节建模,避开字建模,这样n-best好出来;

    • 字、词、声韵母、音素不同建模+领域TLG+领域rescoring

  • 如果有领域数据

    • 领域数据是弱标注时:字+领域TLG+领域rescoring

      (弱标注指的是有领域的音频但是没有标注,放到腾讯/百度/讯飞等开放平台上得到asr结果,如果多家都是一样的,则认为这个标注是对的,称为弱标注)

    • 领域数据是人工标注时:字+领域TLG+领域rescoring

  • 中英混:查看CTC出来的n-best(这个n可以很大),与标注文本之间的WER,如果n>1的第n条路径WER低于1-best,说明有提升的空间(说明候选路径里有通过rescore能校准的可能性,再去调研rescore方法),如果wer没有差别,说明此方法不可行,要探索其他方法

班博说:

  1. 跟业务确定现在的50小时数据是否为真实课堂场景数据

    • 如果业务反馈该数据可以代表真实环境,那么研究院没必要继续跟进
    • 如果业务反馈该数据不能代表真实环境,那么需要提供接近真实的场景测试数据
  2. 如果新的真实场景数据ASR结果较差,或者提高中英混效果,研究院可以研究的点

    • 字、词、声韵母、音素不同建模+领域TLG+领域rescoring
    • 第三方弱标注领域音频,训练字+领域TLG+领域resocring
    • 第三方人工标注领域音频,训练字+领域TLG+领域resocring

$\large y\in \mathbb R^{L\times e}$


encoder、decoder的输入都要加位置编码,

decoder最下面(第一个)的attention是mask attention,mask就是下三角矩阵,只看见previous,输入不是逐符号输入的,而是整句文本都输入,整句话提取embedding,然后做attention,一次到位,并不是我想象得那种第一个符号输出作为第二个符号的输入那样,

第二个attention,Inter-attention

训练耗时

4台8卡(32卡),1w小时,1个epoch 2.5小时,80个epoch大约8天

preview