音声認識エンジンKaldiは音響モデルにDNN-HMMモデルも使えます。RoboCup@Home2016世界大会ではTED学習済みDNNモデルを使いました。この記事はそのメモ。
- 環境
- ThinkPad T450
(CPU: Intel i7-5500U, GPU: nvidia 940m) - xubunut14.04.5
- Kernel 4.4.0-66-generic
- gcc/g++ 4.8.4
- ThinkPad T450
- 準備: Python用パッケージのインストール
- 非同期のネットワークライブラリtornadoのインストール
- pip install tornado
- Python用ウェブソケットプロトコルのインストール
- pip install ws4py == 0.3.2
- yamlのインストール
- pip install pyyaml
- JSONのインストール
- pip install simplejson
- 非同期のネットワークライブラリtornadoのインストール
- kaldiをソースコードからビルドする。
$ cd ~/src
$ git clone https://github.com/kaldi-asr/kaldi.git
$ cd ~/src/kaldi/src
$./configure --shared
上のコマンドでkaldi.mkファイルが生成されるので、その中のCXXFLAGSの$(EXTRA_CXXFLAGS)の後に-O3 -DNDEBUGをつける。ここでヘッダーファイルがないとエラーがでるときは~/src/kaldi/tools/INSTALLの指示に従って各種ライブラリをインストールする。
$ make depend
$ make -j 4
$ make ext
1時間ぐらい時間がかかる。 - kaldi-gstreamer-serverのインストール
$pip install ws4py==0.3.2
$ cd ~/src
$ git clone https://github.com/alumae/kaldi-gstreamer-server.git - gst-kaldi-nnet2-onlineのインストール
$ cd ~/src
$ git clone https://github.com/alumae/gst-kaldi-nnet2-online.git
$ sudo apt-get install gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-pulseaudio gstreamer1.0-plugins-ugly gstreamer1.0-tools libgstreamer1.0-dev
$ sudo apt-get install libjansson-dev
$ cd ~/src/gst-kaldi-nnet2-online/src
Makefileの中をKALDI_ROOT=/home/demulab/src/kaldi
と書き換える.
$ make depend
$ make
~/.bashrcに以下を追加
export GST_PLUGIN_PATH=~/src/gst-kaldi-nnet2-online/src
$ cd ; source .bashrc
次のコマンドを実行してプラグインに関する情報が表示されればOK
$ gst-inspect-1.0 kaldinnet2onlinedecoder - 英語のニューラルネットモデルTEDLIUMのダウンロード。サイズが1.5GBあるので空き容量に注意。
- cd ~/src/kaldi-gstreamer-server/test/models
- ./download-tedlium-nnet2.sh
- ~/src/kaldi-gstreamer-server/test/models/englishにtedlium_nnet_ms_sp_onlineディレクトリができているか確認する。
- 実行
- 端末を3つ開き、以下のサーバー、ワーカー、クライアントを起動する。
- サーバーの起動
- cd ~/src/kaldi-gstreamer-server
- python kaldigstserver/master_server.py –port=8888
- ワーカーの起動
- cd ~/src/kaldi-gstreamer-server
- python kaldigstserver/worker.py -u ws://localhost:8888/worker/ws/speech -c sample_english_nnet2.yaml
- クライアントの起動
- cd ~/src/kaldi-gstreamer-server
- python kaldigstserver/client.py -r 8192 test/data/bill_gates-TED.mp3
コメント