我正在使用 KenLM 生成的语言模型从头开始训练 DeepSpeech(没有检查点),如 doc 中所述。 。该数据集是波斯语通用语音数据集。
我的配置如下:
- 批量大小 = 2(由于 cuda OOM)
- 学习率 = 0.0001
- 编号。神经元 = 2048
- 编号。纪元 = 50
- 火车组大小 = 7500
- 测试和开发集大小 = 5000
- 第 1 层到第 5 层的 dropout = 0.2(也实验了 0.4,结果相同)
训练和 val 损失在训练过程中逐渐减少,但几个时期后 val 损失不再减少。训练损失约为 18,val 损失约为 40。
在过程结束时,预测都是空字符串。有什么想法可以改进模型吗?
最佳答案
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
标志指定从何处加载检查点以执行迁移学习。
关于python - DeepSpeech 无法学习波斯语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67347479/