Ubuntu上安装并训练DeepSpeech
全程参照官方文档 ,仅少许浅坑。这篇文章算是摘要 + 翻译 + 注解吧。
前提条件
- Python 3.6
严格遵守,实测 3.8 版本会有诸多错误。
- Mac 或 Linux 环境
建议避过 Mac,缺失的依赖比 Linux 多很多,问题也多,我是半途放弃 Mac 转到 Ubuntu 的。可以通过启用 Windows 10 的 WSL 功能创建 Ubuntu 环境,可以使用所有的硬件能力。
- CUDA 10.0 / CuDNN v7.6 per Dockerfile.
这条为非必须,因为我是新手,直接用 CPU 训练的。
下载 DeepSpeech 源码
1 | git clone --branch v0.9.3 https://github.com/mozilla/DeepSpeech |
创建 Python 虚拟环境
使用默认的 venv
方式创建:
1 | python3 -m venv ~/tmp/deepspeech-train-venv/ |
激活虚拟环境
source ~/tmp/deepspeech-train-venv/bin/activate
然后下边的所有操作都应该在此虚拟环境中进行。
安装 DeepSpeech 依赖
1 | cd DeepSpeech |
后续如果有更新 DeepSpeech 源码,需要再次执行上边最后一句 pip3 install
命令,确保依赖对得上号。
这个过程中会遇到一个错误:
1 | ERROR: After October 2020 you may experience errors when installing or updating packages. This is because pip will change the way that it resolves dependency conflicts. |
依照错误提示卸载 numpy
再装一个指定版本的包即可:
1 | pip3 uninstall numpy |
然后安装一个 webrtcvad
的依赖包:
1 | sudo apt-get install python3-dev |
执行 DeepSpeech 预置脚本完成一次简单训练
跳转到 DeepSpeech 根目录 后执行以下脚本:
1 | ./bin/run-ldc93s1.sh |
上边脚本会下载语料,处理成 DeepSpeech 可识别格式,然后进行训练。下载的语料和处理后的数据都保存在 DeepSpeech/data/ldc93s1/
目录下。
DeepSpeech 要求必须用 16 bit 位深、单声道的音频进行训练、识别;且训练与识别所用的音频的采样率也必须相同。
几分钟就训练完了。但是这个脚本没有将训练后的模型保存成文件,可以打开脚本,给在最后边执行的 DeepSpeech.py
脚本添加一个参数:
1 | python -u DeepSpeech.py --noshow_progressbar \ |
在 /mnt/g/
目录下会生成一个 output_graph.pb
模型文件。
使用 Mozilla 提供的数据集
Mozilla 收集了很多语言的数据集,包括普通话 。下载下来的是一个 tar 压缩包,解压后得到一串 clips/*.mp3
文件和若干 tsv
文件。
执行 bin/import_cv2.py
脚本:
1 | bin/import_cv2.py /path/to/extracted/language/archive |
在 clips
目录下创建了 mp3
对应的 wav
文件,和若干 csv
文件。这些就是 DeepSpeech 可识别的输入了,参照上边 run-ldc93s1.sh
中 DeepSpeech.py
脚本的用法,就可以用这些数据集训练了。