0%

利用TTS合成语音增强ASR识别专有行业名词的准确率

高度数据驱动的端到端ASR系统在应用到实际业务场景中往往识别特定行业名词的准确率不高,如muji外呼中“无印良品”这个名词经常会识别错误。传统混合ASR模型可以修改解码过程和语言模型(LM)即可以达到快速更新,从而可以较准确的识别特定行业专有名词。但是针对端到端ASR模型修改就比较麻烦了,本文整理并验证了利用TTS合成语音来增强ASR识别专有行业名词的准确率。

一、增强ASR识别专有名词的可行方法

  • 简单粗暴的方法:
  1. 标注部分业务数据集,可以利用迁移学习,也可以和通用数据一起训练;
  2. 标注大量业务数据,从头训练模型(一般不太可能,也不建议)。
  • 结合传统hybrid模型(如WeNet2.0中利用了WFST解码):
  1. 在解码过程加入热词
  2. 加入语言模型
  • 利用TTS合成语音进行迁移学习

二、利用TTS合成语音迁移学习详解

  1. 合成语音和真实语音一同训练

对合成数据和真实数据一起微调可以防止模型忘记真实音频。有相关文献证实了,在不做任何正则化迁移学习中,真实语音占比70%,合成语音占比30%可以达到比较好的结果。

||实验结果||

1
利用业务标注数据集(真实数据)进行迁移学习比利用TTS合成语音(数据增强)要好,这个也符合常识[1]。但是换成多说话人TTS,增加不同语速和音调的调整或许可能会更毕竟业务标注数据集结果。
  1. 迁移学习中冻结 Encoder 参数

可以有效减少对原有模型的过调整,要比上述方法1提高了更多专有名词的识别率,同时也没有降低原有模型的识别率。

  1. 迁移学习中冻结 Encoder 参数,同时正则化Decoder参数

这种方法识别专有名词的准确率会提升,但是并没有第二种方法提升的高。优点是可以能稳定保持原有模型的性能。

||总结以下||

1
需求不同,选择的方法也不同。比如我更在乎专有名词识别的准确率,可以接受原有模型准确率的下降。我就会更多选择第二种方法。当然,迁移学习用的合成数据的规模,迁移学习在什么时候停止等问题,也会严重影响到最终的结果。

三、实际验证

以下是我针对业务数据进行的验证,利用espnet框架完成。

  1. 利用 AISHELL3 训练的218多说话人 TTS,合成100*218句 “无印良品”,100是调整语速和音调的;
  2. 利用 wenetspeech 作为基础模型进行 迁移学习。

迁移学习后模型:(1000句,47句包含“无印良品”,正确45,准确率为95.7%)

1
2
3
4
5
6
7
8
9
10
11
12
13
,-------------------------------------------------------------------.
| hyp_test_muju.txt |
|-------------------------------------------------------------------|
| SPKR | # Snt # Chr | Corr Sub Del Ins Err S.Err |
|--------+----------------+-----------------------------------------|
| 202 | 1000 14919 | 92.4 6.6 1.0 0.5 8.2 51.0 |
|===================================================================|
| Sum/Avg| 1000 14919 | 92.4 6.6 1.0 0.5 8.2 51.0 |
|===================================================================|
| Mean |1000.0 14919.0 | 92.4 6.6 1.0 0.5 8.2 51.0 |
| S.D. | 0.0 0.0 | 0.0 0.0 0.0 0.0 0.0 0.0 |
| Median |1000.0 14919.0 | 92.4 6.6 1.0 0.5 8.2 51.0 |
`-------------------------------------------------------------------'

迁移学习前模型:(1000句,47句包含“无印良品”,正确13,准确率为27.7%)

1
2
3
4
5
6
7
8
9
10
11
12
13
,-------------------------------------------------------------------.
| old_hyp_test_muju.txt |
|-------------------------------------------------------------------|
| SPKR | # Snt # Chr | Corr Sub Del Ins Err S.Err |
|--------+----------------+-----------------------------------------|
| 202 | 1000 14919 | 93.7 5.4 0.9 0.7 7.0 44.9 |
|===================================================================|
| Sum/Avg| 1000 14919 | 93.7 5.4 0.9 0.7 7.0 44.9 |
|===================================================================|
| Mean |1000.0 14919.0 | 93.7 5.4 0.9 0.7 7.0 44.9 |
| S.D. | 0.0 0.0 | 0.0 0.0 0.0 0.0 0.0 0.0 |
| Median |1000.0 14919.0 | 93.7 5.4 0.9 0.7 7.0 44.9 |
`-------------------------------------------------------------------'

四、参考文献

[1] Using Synthetic Audio to Improve the Recognition of Out-Of-Vocabulary Words in End-To-End ASR Systems.