音声認識エンジンKaldiでTED学習済みのDNNモデルを使うためのメモ

音声認識エンジン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
  • 準備: Python用パッケージのインストール
    • 非同期のネットワークライブラリtornadoのインストール
      • pip install tornado
    • Python用ウェブソケットプロトコルのインストール
      • pip install ws4py == 0.3.2
    • yamlのインストール
      • pip install pyyaml
    • JSONのインストール
      • pip install simplejson
  • 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

 

コメントを残す

メールアドレスが公開されることはありません。