【问题标题】:DeepSpeech failed to learn Persian languageDeepSpeech 无法学习波斯语
【发布时间】:2021-07-24 14:22:31
【问题描述】:

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

我的配置如下:

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

训练和验证损失在训练过程中减少,但在几个 epochs 之后验证损失不再减少。 train loss 约为 18,val loss 约为 40。

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 这是一个问题,而不是一个答案。可以作为评论。
    【解决方案2】:

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

    了解模型的 CER 和 WER 数据有什么帮助?能够看到这些表明最佳行动方案是使用 acoustic 模型的超参数还是使用 KenLM language 模型。区别是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 标志指定从哪里加载检查点,并在哪里执行迁移学习

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      相关资源
      最近更新 更多