DeepSpeech 无法学习波斯语

时间:2021-05-01 14:45:27

标签: python tensorflow speech-recognition farsi mozilla-deepspeech

我正在使用 doc 中所述的使用 KenLM 生成的语言模型从头开始训练 DeepSpeech(没有检查点)。该数据集是波斯语通用语音数据集。

我的配置如下:

  1. 批量大小 = 2(由于 cuda OOM)
  2. 学习率 = 0.0001
  3. 编号。神经元 = 2048
  4. 编号。纪元 = 50
  5. 训练集大小 = 7500
  6. 测试和开发集大小 = 5000
  7. 第 1 层到第 5 层的 dropout = 0.2(也实验了 0.4,结果相同)

Train 和 val 损失在训练过程中减少,但经过几个 epochs val 损失不再减少。 Train loss 大约为 18,val loss 大约为 40。

过程结束时的预测都是空字符串。任何想法如何改进模型?

2 个答案:

答案 0 :(得分:0)

也许您需要降低学习率或使用学习率调度程序。

答案 1 :(得分:0)

Common Voice 中的波斯语数据集有大约 280 小时的经过验证的音频,因此这应该足以创建一个比您报告的准确度更高的模型。

了解模型的 CER 和 WER 数字有什么帮助?能够看到这些表明最好的行动方案是使用 声学 模型的超参数还是 KenLM 语言 模型的超参数。区别是explained here in the testing section of the DeepSpeech PlayBook

您也可能需要在波斯数据集上执行迁移学习。我假设波斯语数据集是用 Alefbā-ye Fārsi 编写的。这意味着您需要删除字母层才能学习 English checkpoints(使用拉丁文字)。

有关如何执行迁移学习的更多信息是in the DeepSpeech documentation,但本质上,您需要做两件事:

  • 使用 --drop_source_layers 3 标志删除源层,以允许从另一个字母表进行迁移学习
  • 使用 --load_checkpoint_dir deepspeech-data/deepspeech-0.9.3-checkpoint 标志指定从何处加载检查点以执行迁移学习
相关问题