トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索   ヘルプ   最終更新のRSS

JuliusとJulian

Last-modified: 2014-07-18 (金) 05:03:48
Top / JuliusとJulian
  • 最終更新 : 2014/07/08

大語彙連続音声認識エンジン Julius

インストール(Windows)

はじめに

  • 以下を実行する前に、Cygwin と、Perlの実行環境 のインストールをすませておきます。
    • 任意 : Cygwinのbinフォルダのパスを環境変数に加えておくと、コマンドプロンプトから使えるので便利です(変数名は"path"、値はbinフォルダのパス、参考)。
  • 任意の場所(たとえば、Cygwinのホームディレクトリ直下)にJulius用フォルダ(以下、「JULIUS/」)を作っておきます。

基本セット(バイナリ)

  • Juliusの基本プログラム、コンパイル済み
    • 設定ファイルで多くの設定を変えられるので、たいていの場合バイナリで大丈夫のはず。
  • Julius 公式 から、まずは Windows版Juliusのバイナリファイル をダウンロードして解凍します。 julius_1.JPG
    • julius-4.3.1-win32bin.zip(2014年07月08日時点)をダウンロードしました。
    • 解凍した julius-4.3.1-win32bin フォルダの中身を、JULIUS/ 以下にコピーします。
      julius_004.jpg
      • 任意 JULIUS/bin フォルダのパスを環境変数に加えておくと、cdコマンドなしでJuliusコマンドを実行できるので便利です。
  • サンプルを動かしてみたいときは、続いてディクテーション実行キットをダウンロードします。

基本セット(ソースコード)

ディクテーション実行キット

  • 音声認識を実行するのに必要なアーカイブとサンプルの入ったセット
  • Juliusディクテーション実行キット をダウンロードして解凍します。
    • juliusトップ → ダウンロード → ディクテーションキット → Windows版 DNN版Juliusディクテーション実行キット v4.3.1(2014年07月08日時点)
    • 中身は最小限のモデル(不特定話者音響モデル + 汎用言語モデル)および Juliusの 実行バイナリ
  • ダウンロードしたZIPファイルを解凍してできた dictation-kit-v4.3.1-win の中身のうち、以下のファイルとフォルダを JULIUS/ 以下に上書きします(00readme.txt より一部引用)
    model/         : 音響モデルと言語モデル
    main.jconf     : GMM版・DNN版の共通設定ファイル
    am-gmm.jconf   : GMM版の音響モデル・入力設定ファイル
    am-dnn.jconf   : DNN版の音響モデル・入力設定ファイル
    dnnclient.conf : DNN版の特徴量変換設定ファイル
    • 必要に応じてマニュアル類(00readme.txt、HOWTO.txt、HOWTO-dnn.txt、LICENSE.txt、TROUBLE.txt)もコピーしてください。*2

単語・音素セグメンテーションキット

  • 自動ラベリング(音声データの何秒から何秒が何の音素かを出力)するためのキット
  • 単語・音素セグメンテーションキット をダウンロードして解凍します。
    • juliusトップ → ダウンロード → 応用キット → 単語・音素セグメンテーションキット segmentation-kit-v4.0.tar.gz をダウンロードして解凍(2014年07月08日時点)*3
    • 解凍してできたフォルダ julius4-segmentation-kit-v1.0 の中身のうち、以下のファイルとフォルダを JULIUS/ 以下に上書きします(00readme.txt より一部引用)
      segment_julius4.pl : セグメンテーション実行スクリプト
    • ディクテーション実行キットをインストールしていない場合は、models/(音響モデル)以下を JULIUS/model/phone_m 以下にコピーして下さい。また、必要に応じてサンプル、マニュアル類(sample/、00readme.txt、00readme-ja.txt)もコピーしてください。*4

記述文法音声認識実行キット(旧Julian)

  • 決められた文法に沿った発話のみ認識させるためのキット
  • Julius記述文法音声認識実行キット より、Windows版 Julius 記述文法音声認識キット v4.2 → grammar-kit-v4.2-win.zip をダウンロードして解凍(2014年07月08日時点)
    • 解凍してできたフォルダ grammar-kit-v4.2-win の中身のうち、以下のファイルとフォルダを JULIUS/ 以下に上書きします(00readme.txt より一部引用)
      bin/scoring        : 認識率算出ツール
      model/phone_m      : 音響モデル
      SampleGrammars     : 認識用文法のサンプル
      hmm_mono.jconf     : 動作設定ファイル(モノフォンモデル)
      hmm_ptm.jconf      : 動作設定ファイル(PTM音響モデル)
      segment_julius4.pl : セグメンテーション実行スクリプト
    • 必要に応じてサンプル、マニュアル類(testfile.jconf、testmic.jconf、doc/、00readme.txt、HOWTO.txt)もコピーしてください。*5

孤立単語認識キット

  • Julian と組み合わせて、単独発話された単語を認識するためのセット
  • Julius 応用キット より、孤立単語認識キット → julian-isoword-kit-v2.0.tar.gz をダウンロードして、解凍します。
    • 2014/07/08 時点では本キットはなくなっています。
  • http://sourceforge.jp/ より、直接 julian-isoword-kit-v2.0.tar.gz をダウンロードして、解凍します。*6
    • 解凍してできたフォルダ julian-isoword-kit-v2.0 の中身のうち、以下のファイルとフォルダを JULIUS/ 以下に上書きします(HowTo.txt より一部引用)
      make_dict.pl       : 単語リスト→認識辞書生成スクリプト
      etc/ と sample/ の中身を JULIUS/SampleGrammars/isoword 以下にコピー
    • 必要に応じてマニュアル(HowTo.txt)もコピーしてください。設定ファイル jconf.julian はコピー不要です。

インストール(Linux)

基本セット(バイナリ)+ディクテーション実行キット

  • JULIUS/ディレクトリを作っておきます。
    mkdir julius-linux
  • Julius 公式 からLinux版Juliusのバイナリファイルをダウンロードして解凍します。
    • julius-4.1.3-linuxbin.tar.gz(2009年11月12日時点)をダウンロードしました。
    • JULIUS/ディレクトリに、解凍した julius-4.1.3-linuxbin ディレクトリの中身を入れます。
  • 続いてディクテーション実行キットをダウンロードします。
    • juliusトップ → ダウンロード → ディクテーションキット → Linux版 Juliusディクテーション実行キット v3.2(2009年11月12日時点)
    • 中身は最小限のモデル(不特定話者音響モデル + 汎用言語モデル)および Juliusの 実行バイナリ
  • ダウンロードしたZIPファイルを解凍してできた dictation-kit-v3.2 のうち、以下のファイルとディレクトリを JULIUS/ディレクトリ以下に上書き
    model/         : 音響モデルと言語モデル
    fast.jconf     : 通常版設定ファイル
    HOWTO.txt      : 認識システムの起動と動作
    light.jconf    : 簡易版設定ファイル
    TROUBLE.txt    : うまく認識できないときは

Julian(記述文法音声認識実行キット)+孤立単語認識キット

  • juliusトップ → ダウンロード → 文法認識キット → Linux版 Julian 記述文法音声認識キット v3.1
  • ダウンロードしたZIPファイルを解凍してできた julian-kit-v3.1 のうち、以下のファイルとディレクトリを JULIUS/ディレクトリ以下に上書きします。
    bin/julian.exe : julian本体
    SampleGrammars : 認識用文法のサンプル
    sample.wav     : 音声データのサンプル
    hmm_mono.jconf : 動作設定ファイル(モノフォンモデル使用)
    hmm_ptm.jconf  : 動作設定ファイル(PTM音響モデル使用)
    testfile.jconf
    testmic.jconf
    HOWTO.txt      : 起動方法と使い方(リネームしてから上書き)
  • 続いてJulius 応用キットより、孤立単語認識キット → julian-isoword-kit-v2.0.tar.gz をダウンロードして解凍します。
    • 解凍してできたフォルダ julian-isoword-kit-v2.0 を JULIUS/ディレクトリに入れます。
      julius_006.jpg

音声認識を実行してみる

マイクで喋った音声を認識させる

  • 基本セットディクテーション実行キットをインストールします。
  • JULIUS/main.jconf をコピーし、 main_mic.jconf を作り、以下を書き換えます(2014年07月08日現在)。
    34行目  #-h model/phone_m/jnas-tri-3k16-gid.binhmm
          > -h model/phone_m/jnas-tri-3k16-gid.binhmm
    229行目 #-input mic		# マイクから直接入力
          > -input mic		# マイクから直接入力
    333行目 #-charconv from to	# 出力文字コード変換を行う
          > -charconv "utf-8" "sjis"	# 出力文字コード変換を行う
  • PCにマイクを接続して、コマンドプロンプト(Cygwin)で以下のように入力します。
    cd JULIUS/
    bin\julius-4.3.1.exe -C main_mic.jconf
  • julius が起動して、マイク入力モードで待ちうけ状態になったら、成功です。
    julius_007.jpg

音声ファイルを認識させる(標準入出力からWAVファイルを指定)

  • 基本セットディクテーション実行キットをインストールします。
  • JULIUS/main.jconf をコピーし、 main_file.jconf を作り、以下を書き換えます(2014年07月08日現在)。
    34行目  #-h model/phone_m/jnas-tri-3k16-gid.binhmm
          > -h model/phone_m/jnas-tri-3k16-gid.binhmm
    225行目 #-input rawfile		# 音声波形データファイル(フォーマット自動判別)
          > -input rawfile		# 音声波形データファイル(フォーマット自動判別)
    276行目 #-smpFreq 16000		# サンプリング周波数(Hz)
          > -smpFreq (認識させたいファイルの値)
    333行目 #-charconv from to	# 出力文字コード変換を行う
          > -charconv "utf-8" "sjis"	# 出力文字コード変換を行う
    • 音声ファイルの形式は 16bit、16kHz
      • 16kHz以外のファイルは -smpFreq オプションで周波数値を指定する
      • 音声ファイルのサンプリング周波数を調べるには、wavesurfer で開いて、波形画面を右クリック → Properties → Sound
  • コマンドプロンプト(Cygwin)でjuliusを起動します。
    cd JULIUS/
    bin\julius-4.3.1.exe -C main_file.jconf
    • ファイル入力モードで待ちうけ状態になったら、成功です。
      enter filename->

決まった形式の音声認識(旧Julian)

  • 基本セットディクテーション実行キット記述文法音声認識実行キットのインストールが終わっている状態で、PCにマイクを接続して、コマンドプロンプト(Cygwin)で以下のように入力します。
    cd JULIUS/
    bin\julius-4.3.1.exe -C SampleGrammars\fruit\testmic.jconf
    • 終了は、 Ctrl を押しながら X + C
    • マイクに音声を入れて「(果物)(数)個ください」などと出たら、成功です。
  • SampleGrammars 以下の各フォルダに文型のサンプルとマニュアルがあるので、参考にして下さい。

孤立単語認識

  • -w オプションを指定して辞書を指定し、Julius を実行することで孤立単語認識ができます。
    • JULIUS/main.jconf をコピーし、 main_isoword1.jconf を作り、以下を書き換えます(2014年07月08日現在)。
      23行目  -d model/lang_m/bccwj.60k.bingram
            > #-d model/lang_m/bccwj.60k.bingram
      28行目  -v model/lang_m/bccwj.60k.htkdic
            > -w model/lang_m/bccwj.60k.htkdic
      229行目 #-input mic		# マイクから直接入力
            > -input mic		# マイクから直接入力
      333行目 #-charconv from to	# 出力文字コード変換を行う
            > -charconv "utf-8" "sjis"	# 出力文字コード変換を行う
    • PCにマイクを接続して、コマンドプロンプト(Cygwin)で以下のように入力します。
      cd JULIUS/
      bin\julius-4.3.1.exe -C main_isoword1.jconf
    • このモードでは、何を喋っても認識結果は単単語(孤立単語)になります。
      julius_008.jpg
  • 孤立単語の辞書を自作する場合は、孤立単語認識キットもインストールして下さい。
    • サンプルの単語リスト JULIUS/SampleGrammars/isoword/station_wordlist.txt から辞書を生成する場合、コマンドプロンプト(Cygwin)で以下のように入力します*7
      perl make_dict.pl SampleGrammars/isoword/station_wordlist.txt > SampleGrammars/isoword/station.dict
      • 辞書ファイル station.dict ができました。*8
  • 続いて、JULIUS/main.jconf をコピーし、 main_isoword2.jconf を作り、以下を書き換えます(2014年07月08日現在)。
    23行目  -d model/lang_m/bccwj.60k.bingram
          > #-d model/lang_m/bccwj.60k.bingram
    28行目  -v model/lang_m/bccwj.60k.htkdic
          > -w SampleGrammars/isoword/station.dict
    229行目 #-input mic		# マイクから直接入力
          > -input mic		# マイクから直接入力
  • PCにマイクを接続して、コマンドプロンプト(Cygwin)で以下のように入力します。
    cd JULIUS/
    bin\julius-4.3.1.exe -C main_isoword2.jconf
    • 例えば、「新倉敷」と発声したときの結果は... julian1.png
  • 文字化けしていますが、phseq1 の出力をみると、認識はうまくいっているようです。

音響モデル

日本語話し言葉コーパス(CSJ)の音響モデルに差し替える

音響モデルを構築する

言語モデル

日本語話し言葉コーパス(CSJ)の言語モデルに差し替える

辞書に単語を追加する(Julius 連続音声認識)

  • まず、辞書ファイルの所在を確認します。
    • julius.exe 起動時に指定する .jconf ファイルを開いて、「## 単語辞書ファイル」の下の行に書いてあるファイルが辞書ファイルです。
    • デフォルトでは (Juliusのインストールフォルダ)/model/lang_m/web.60k.htkdic が辞書ファイルです。
  • 辞書ファイルを開いて、新しい単語の行を追記します。
    • フォーマットは以下のとおりです。*9
      単語表記 [出力文字列] 音素列
      • タブで区切ります。
      • 単語表記は、「OBJECT」など任意の文字列で問題ないようです。*10
    • 追記の例(イキアタリバッタリサイキンメーカー)
      julius_001.jpg
    • 孤立単語認識の辞書構築で使った make_dict.pl (孤立単語認識実行キットに付属)を使えば、ひらがなから音素表記に自動変換してくれます。
  • 認識を実行します。
    • うまくいけば、正しく認識されます。
      julius_002.jpg
    • エラーの例(missing phones)
      julius_003.jpg
      • 辞書ファイルの「音素列」を正しい表記にしていないことが原因です(ここでは、Nをnと誤記していました)。make_dict.plを使うか、辞書ファイルのその他の単語を参考にして、正しく書いてください。

入出力関係

長い音声ファイルを認識させるとき

  • Juliusのデフォルトでは1ファイル=1発話として扱うため、長い音声を最後まで認識できないので、 -cutsilence オプションをつけます(B3M君のレポートより)*11

WAVファイルのリストを順番に認識する

  • Juliusの実行時に引数としてファイル名を指定したい場合*12
  • 認識させたい音声ファイルのリストを作っておきます
    • filelist.txt
      001.wav
      002.wav
  • jconfファイルを書き換えます
    • 上の「標準入出力からWAVファイルを指定する」の変更に加えて、
    • 233行目を「-filelist filename # 認識対象ファイルのリスト」に変更
  • julius を起動
    bin\julius-4.1.2.exe -C (変更したjconfファイルの名前) -filelist filelist.txt
    • 認識結果が出てきたら、成功です。

サーバーと通信する

文字コード

入力を待ち受ける

自動ラベリング


*1 Copyright (c) 1991-2009 京都大学 河原研究室, Copyright (c) 1997-2000 情報処理振興事業協会(IPA), Copyright (c) 2000-2005 奈良先端科学技術大学院大学 鹿野研究室, Copyright (c) 2005-2009 名古屋工業大学 Julius開発チーム ← 追記ありがとうございます!
*2 その他のファイルはこのキット単独で音声認識を実行するためのバイナリとバッチファイルなので、コピーする必要はありません。
*3 tar.gz形式のファイルをWindowsで解凍したい場合、Lhaplus などのフリーソフトが使えます。インストール時にtar形式にチェックを入れて関連付けをして下さい。
*4 その他のファイルはこのキット単独で音声認識を実行するためのバイナリファイルなので、コピーする必要はありません。
*5 その他のファイルはこのキット単独で音声認識を実行するためのバイナリとバッチファイルなので、コピーする必要はありません。
*6 tar.gz形式のファイルをWindowsで解凍したい場合、Lhaplus などのフリーソフトが使えます。インストール時にtar形式にチェックを入れて関連付けをして下さい。
*7 参考:Juliusの使い方
*8 : Windows環境で、辞書の文字コードがEUC以外だと、認識の際に文字化けしてしまいます。サクラエディタなどでdictファイルの文字コードをEUCに変えてください。
*9 参考:Juliusメモ
*10 参考:Juliusメモ
*11 参考文献:音声データ入力 ファイル入力
*12 参考文献:音声認識実験マニュアル
*13 参考文献:モジュールモード モジュールモードについて Juliusのmodule機能とadintool