构建DeepSpeech模型scorer的lm二进制文件报非零退出状态1如何解决
问题复现
执行如下构建命令时出现报错:
!python /content/DeepSpeech/data/lm/generate_lm.py \ --input_txt /content/transcripts.txt \ --output_dir /content/scorer/ \ --top_k 50000 \ --kenlm_bins /content/kenlm/build/bin/ \ --arpa_order 5 --max_arpa_memory "95%" --arpa_prune "0|0|1" \ --binary_a_bits 255 --binary_q_bits 8 --binary_type trie
完整报错信息:
subprocess.CalledProcessError: Command '['/content/kenlm/build/bin/build_binary', '-a', '255', '-q', '8', '-v', 'trie', '/content/lm_filtered.arpa', '/content/lm.binary']' returned non-zero exit status 1.
报错原因
lm_filtered.arpa文件异常:生成ARPA文件阶段已经失败,文件为空或内容损坏,多数由输入transcripts.txt格式异常、包含特殊字符、语料词汇量远低于设置的--top_k 50000阈值导致。- Kenlm工具编译异常:
build_binary工具编译时缺少zlib、bz2等依赖库,无法正常解析ARPA文件。 - 内存不足:5阶ARPA生成占用内存过高,设置的
--max_arpa_memory "95%"超出运行环境可用内存,生成的ARPA文件不完整。 - 参数配置冲突:
--binary_a_bits 255、--binary_q_bits 8参数超出当前ARPA文件支持范围,或--arpa_prune "0|0|1"剪枝规则导致ARPA结构异常。 - 权限问题:
build_binary文件没有可执行权限,或/content/目录无写入权限。
解决方案
- 先校验ARPA文件有效性:执行
ls -lh /content/lm_filtered.arpa查看文件大小是否大于0,执行head /content/lm_filtered.arpa确认文件头为标准Kenlm ARPA格式。如果文件异常,先检查输入transcripts.txt为纯文本无乱码,再调低--top_k参数至10000~20000匹配语料实际词汇量。 - 校验Kenlm编译状态:单独执行
/content/kenlm/build/bin/build_binary -h,如果无帮助信息输出,先安装依赖apt install -y libz-dev libbz2-dev liblzma-dev后重新编译Kenlm。 - 降低ARPA生成资源消耗:将
--arpa_order从5调低至3,--max_arpa_memory调整为"75%",剪枝规则改为--arpa_prune "1|1|1"减少文件体积。 - 调整二进制转换参数:将
--binary_a_bits调低至250,--binary_q_bits调低至6,降低参数要求。 - 修复权限:执行
chmod +x /content/kenlm/build/bin/*给Kenlm工具添加可执行权限,确认/content目录可正常读写。 - 调整完成后重新运行构建命令即可。
内容的提问来源于stack exchange,提问作者Danish Bansal
相关产品推荐
相关产品推荐

