1

我正在使用使用 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 loss 约为 18,val loss 约为 40。

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

4

2 回答 2

2

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

这里有什么帮助是知道模型的 CER 和 WER 数字是什么?能够看到这些表明最佳行动方案是使用声学模型的超参数还是使用 KenLM语言模型。DeepSpeech PlayBook 的测试部分解释了不同之处。

您也可能需要对波斯数据集执行迁移学习。我假设波斯数据集是用Alefbā-ye Fārsi 编写的。这意味着您需要删除字母层才能从英语检查点(使用拉丁脚本)中学习。

有关如何执行迁移学习的更多信息在DeepSpeech 文档中,但本质上,您需要做两件事:

  • 使用--drop_source_layers 3标志删除源层,以允许从另一个字母表进行迁移学习
  • 使用该--load_checkpoint_dir deepspeech-data/deepspeech-0.9.3-checkpoint标志指定从何处加载检查点以执行迁移学习
于 2021-05-15T08:12:52.630 回答
0

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

于 2021-05-11T14:02:10.667 回答