kaldi 在 mac 下的初体验

本贴最后更新于 2247 天前,其中的信息可能已经天翻地覆

背景

Kaldi 是使用人数最多的语音识别开源工具,而且在不断的更新[2]。

更多的背景介绍见[2],本文尝试编译 Kaldi 并且跑通一些小的例子。

源码编译

下载

git clone https://github.com/kaldi-asr/kaldi

编译 tools

参考 tools/INSTALL 文件

安装依赖包

brew install automake autoconf python3

检查下依赖情况

[note@abeffect tools]$ sh extras/check_dependencies.sh extras/check_dependencies.sh: all OK.

编译

make

结果

Warning: IRSTLM is not installed by default anymore. If you need IRSTLM Warning: use the script extras/install_irstlm.sh All done OK.

安装扩展

extras 目录下有多个扩展,可以选择性的安装。

编译 src

参考 src/INSTALL 文件

cd src ./configure --shared make depend -j 8 make -j 8

结果

echo Done Done

可执行文件见 latbin 目录

[note@abeffect src]$ ls latbin/ | grep -v cc$ | grep -v o$ Makefile lattice-1best lattice-add-penalty lattice-add-trans-probs lattice-align-phones lattice-align-words lattice-align-words-lexicon lattice-arc-post lattice-best-path lattice-boost-ali lattice-combine lattice-compose lattice-confidence lattice-copy lattice-copy-backoff lattice-depth lattice-depth-per-frame lattice-determinize lattice-determinize-non-compact lattice-determinize-phone-pruned lattice-determinize-phone-pruned-parallel lattice-determinize-pruned lattice-determinize-pruned-parallel lattice-difference lattice-equivalent lattice-expand-ngram lattice-interp lattice-limit-depth lattice-lmrescore lattice-lmrescore-const-arpa lattice-lmrescore-kaldi-rnnlm lattice-lmrescore-kaldi-rnnlm-pruned lattice-lmrescore-pruned lattice-lmrescore-rnnlm lattice-mbr-decode lattice-minimize lattice-oracle lattice-project lattice-prune lattice-push lattice-rescore-mapped lattice-rmali lattice-scale lattice-to-ctm-conf lattice-to-fst lattice-to-mpe-post lattice-to-nbest lattice-to-phone-lattice lattice-to-post lattice-to-smbr-post lattice-union linear-to-nbest nbest-to-ctm nbest-to-lattice nbest-to-linear nbest-to-prons

使用

原来 voxforge 例子中的语音库需要 12.6G 的空间,需要预留 20G 的空间来做实验[6]。

所以还是先从 yesno 来入门吧。

yesno

运行

[note@abeffect kaldi]$ cd egs/yesno/s5/ [note@abeffect s5]$ ./run.sh

结果

...... steps/diagnostic/analyze_lats.sh: see stats in exp/mono0a/decode_test_yesno/log/analyze_lattice_depth_stats.log local/score.sh --cmd utils/run.pl data/test_yesno exp/mono0a/graph_tgpr exp/mono0a/decode_test_yesno local/score.sh: scoring with word insertion penalty=0.0,0.5,1.0 %WER 0.00 [ 0 / 232, 0 in , 0 del, 0 ub ] exp/mono0a/decode_te t_ye no/wer_10_1.0

可视化

确保安装了 graphviz

brew install graphviz

语言模型可视化

../../../tools/openfst-1.6.5/bin/fstprint ./data/lang_test_tg/G.fst 0 0 2 2 2.30258512 0 0 3 3 2.30258512 0 2.30258512
../../../tools/openfst-1.6.5/bin/fstdraw ./data/lang_test_tg/G.fst | dot -T ps > g.ps

词典文件可视化

L.fst 文件

$ ../../../tools/openfst-1.6.5/bin/fstprint ./data/lang_test_tg/L.fst 0 1 0 0 0.693147182 0 1 1 0 0.693147182 1 1 1 1 1 1 3 2 0.693147182 1 2 3 2 0.693147182 1 1 2 3 0.693147182 1 2 2 3 0.693147182 1 2 1 1 0
../../../tools/openfst-1.6.5/bin/fstdraw ./data/lang_test_tg/L.fst | dot -T ps > 1.ps

L_disambig 文件

$ ../../../tools/openfst-1.6.5/bin/fstprint ./data/lang_test_tg/L_disambig.fst 0 1 0 0 0.693147182 0 2 1 0 0.693147182 1 1 1 1 1 1 3 2 0.693147182 1 3 3 2 0.693147182 1 1 2 3 0.693147182 1 3 2 3 0.693147182 1 1 4 4 1 2 1 5 0 3 2 1 0

timit

没有下载到完整的 timit 语料,放弃。。

原理

简单补充一下 yesno 的原理。

原始音频

共 60 个 wav 文件,如 waves_yesno/0_0_0_0_1_1_1_1.wav,内容为 yes, no 组成。

参考

  1. Kaldi Speech Recognition Toolkit: DFSMN
  2. 从声学模型算法总结 2016 年语音识别的重大进步丨硬创公开课
  3. LibriSpeech language models, vocabulary and G2P models
  4. LibriSpeech ASR corpus
  5. 【资源】最好用的 AI 开源数据集 Top 39:计算机视觉、NLP、语音等 6 大类
  6. 语音识别系统之 kaldi------voxforge 实例
  7. 语音识别系统 kaldi----实例说明
  8. 语音识别工具箱之 kaldi 介绍
  9. kaldi 中 FST 的可视化-以 yesno 为例
  10. kaldi yesno example
  11. yesno 孤立词识别 kaldi 脚本
  12. Kaldi-yesno 详解
  13. 语音识别及处理
  • 人工智能

    人工智能(Artificial Intelligence)是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。

    153 引用 • 280 回帖
  • speech
    5 引用 • 1 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...