14.6.1 音声認識の実行

まずは, ターミナルを二つ用意して,片方でJuliusMFTによる音声認識を実行し, もう一方でHARKによる音源分離を実行しよう. 実行するコマンドと実行例を,図14.33と 図14.34に示す. 音声認識の準備が終わっていないと音源分離結果が捨てられてしまうので, 先に図14.33を実行し,その次に 図14.34を実行する必要があることに注意. 実行が終わると,wav ディレクトリ以下に大量の wav ファイルが生成され, result.txt にJuliusMFT のログが保存されているはずなので確認しよう.

> julius_mft -C julius.jconf 2>&1 | tee result.txt
STAT: include config: julius.jconf
STAT: loading plugins at "/usr/lib/julius_plugin":
STAT: file: calcmix_heu.jpi  #0 [Gaussian calculation plugin for Julius.
                                                            (ADD_MASK_TO_HEU)]
     (中略)
----------------------- System Information end -----------------------------
Figure 14.34: JuliusMFT 実行例
> Recognition.sh 
 UINodeRepository::Scan()
 Scanning def /usr/local/lib/flowdesigner/toolbox
 done loading def files
 loading XML document from memory
 done!
 Building network  :MAIN
 TF = 1,INITW = 0,FixedNoise = 0
 SSMethod = 2LC_CONST = 0LC_Method = 1
 reading A matrix
 Try to read loc_tf.dat as HARK format.
 72 directions, 1 ranges, 8 microphones, 512 points
 done
 initialize
 Source 0 is created.
 Source 1 is created.
    (以下略)

Figure 14.35: HARK 実行例

wav ファイル達は処理の中間ファイルである. ファイル名の最初の文字列は処理の段階を,続く数字は定位された通し番号を表 す. GHDSS から始まるは音源分離結果, NR から始まるファイルは音源分離結果に含まれる漏れノイズを後処理で減らし た結果, そして WNから始まるファイルはそれに白色雑音を付加したものである. WNから始まるファイルのMSLS特徴量が抽出されて,JuliusMFT に送られる. 標準的な wav ファイルなので,適当なオーディオプレイヤーで聞いてみるとよ いだろう.

result.txt は文字コードが EUC-JPの 未加工の音声認識ログである. pass1_best: から始まる行が音声認識結果なので, 次のコマンドを実行すると,認識結果の料理名がたくさん表示されるはずだ.

grep pass1_best: result.txt | nkf 

トラブルシューティング

wav ファイルが生成されていないときは HARK が正しく動いていない. まずはファイルの確認をしよう. 表14.21 をもう一度確認して,ファイルがすべて揃っているかを確認しよう. wav ディレクトリに書き込み権限があるかも確認しよう. もしあれば,次は HARK のインストールが正しく行われているかを, レシピ: 3.1うまくインストールできないを 見ながら確認しよう.

result.txt に音声認識結果が無い場合は,JuliusMFT が正しく動いていない. まずは JuliusMFT がインストールされているかを確認しよう. julius_mft をコマンドラインで実行し, command not found と 表示されたらインストールされていない. 次に,表14.21 を確認して,ファイルが すべて揃っているかを確認しよう. 最後に,図14.34 のコマンドを間違えずに実行 しているかを再度確認しよう.

いずれの場合も,ログにエラーの原因が書かれているのでよく確認しよう.