JuliusとJulian
Last-modified: 2014-07-18 (金) 05:03:48
Top / JuliusとJulian
- 最終更新 : 2014/07/08
- 大語彙連続音声認識エンジン Julius と、記述文法音声認識実行キット(旧Julian)の使用方法についてまとめました*1。
- 研究室内のノウハウをまとめてリンクしたものです。追加情報があれば教えてください。
- Juliusの使い方(菊池先生)
大語彙連続音声認識エンジン Julius †
インストール(Windows) †
はじめに †
- 以下を実行する前に、Cygwin と、Perlの実行環境 のインストールをすませておきます。
- 任意 : Cygwinのbinフォルダのパスを環境変数に加えておくと、コマンドプロンプトから使えるので便利です(変数名は"path"、値はbinフォルダのパス、参考)。
- 任意の場所(たとえば、Cygwinのホームディレクトリ直下)にJulius用フォルダ(以下、「JULIUS/」)を作っておきます。
基本セット(バイナリ) †
- Juliusの基本プログラム、コンパイル済み
- 設定ファイルで多くの設定を変えられるので、たいていの場合バイナリで大丈夫のはず。
- Julius 公式 から、まずは Windows版Juliusのバイナリファイル をダウンロードして解凍します。
- julius-4.3.1-win32bin.zip(2014年07月08日時点)をダウンロードしました。
- 解凍した julius-4.3.1-win32bin フォルダの中身を、JULIUS/ 以下にコピーします。
- 任意 JULIUS/bin フォルダのパスを環境変数に加えておくと、cdコマンドなしでJuliusコマンドを実行できるので便利です。
- サンプルを動かしてみたいときは、続いてディクテーション実行キットをダウンロードします。
基本セット(ソースコード) †
- 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
- 解凍してできたフォルダ grammar-kit-v4.2-win の中身のうち、以下のファイルとフォルダを JULIUS/ 以下に上書きします(00readme.txt より一部引用)
孤立単語認識キット †
- 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 はコピー不要です。
- 解凍してできたフォルダ julian-isoword-kit-v2.0 の中身のうち、以下のファイルとフォルダを JULIUS/ 以下に上書きします(HowTo.txt より一部引用)
インストール(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/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 が起動して、マイク入力モードで待ちうけ状態になったら、成功です。
音声ファイルを認識させる(標準入出力から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
- 音声ファイルの形式は 16bit、16kHz
- コマンドプロンプト(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/main.jconf をコピーし、 main_isoword1.jconf を作り、以下を書き換えます(2014年07月08日現在)。
- 辞書に語を追加する場合
- 孤立単語の辞書を自作する場合は、孤立単語認識キットもインストールして下さい。
- 実例としてWindowsでしりとりシステムを作る/辞書ファイルを作るも参照して下さい。
- 続いて、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
- 文字化けしていますが、phseq1 の出力をみると、認識はうまくいっているようです。
音響モデル †
日本語話し言葉コーパス(CSJ)の音響モデルに差し替える †
音響モデルを構築する †
言語モデル †
日本語話し言葉コーパス(CSJ)の言語モデルに差し替える †
辞書に単語を追加する(Julius 連続音声認識) †
- まず、辞書ファイルの所在を確認します。
- julius.exe 起動時に指定する .jconf ファイルを開いて、「## 単語辞書ファイル」の下の行に書いてあるファイルが辞書ファイルです。
- デフォルトでは (Juliusのインストールフォルダ)/model/lang_m/web.60k.htkdic が辞書ファイルです。
- 辞書ファイルを開いて、新しい単語の行を追記します。
- 認識を実行します。
- うまくいけば、正しく認識されます。
- エラーの例(missing phones)
- 辞書ファイルの「音素列」を正しい表記にしていないことが原因です(ここでは、Nをnと誤記していました)。make_dict.plを使うか、辞書ファイルのその他の単語を参考にして、正しく書いてください。
入出力関係 †
長い音声ファイルを認識させるとき †
- Juliusのデフォルトでは1ファイル=1発話として扱うため、長い音声を最後まで認識できないので、 -cutsilence オプションをつけます(B3M君のレポートより)*11
WAVファイルのリストを順番に認識する †
- Juliusの実行時に引数としてファイル名を指定したい場合*12
- 認識させたい音声ファイルのリストを作っておきます
- filelist.txt
001.wav 002.wav
- filelist.txt
- jconfファイルを書き換えます
- 上の「標準入出力からWAVファイルを指定する」の変更に加えて、
- 233行目を「-filelist filename # 認識対象ファイルのリスト」に変更
- 上の「標準入出力からWAVファイルを指定する」の変更に加えて、
- julius を起動
bin\julius-4.1.2.exe -C (変更したjconfファイルの名前) -filelist filelist.txt
- 認識結果が出てきたら、成功です。
サーバーと通信する †
- 2010/06/21 実習 juliusをモジュールモードで動かす
- 編集中*13
文字コード †
入力を待ち受ける †
- Juliusのプラグインについて
- 編集中
自動ラベリング †
*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
添付ファイル: julius_008.jpg 1986件 [詳細] julius_007.jpg 1781件 [詳細] transalign2textgrid.pl 780件 [詳細] julius_framesize.png 900件 [詳細] julius_006.jpg 2108件 [詳細] julius_005.jpg 1080件 [詳細] julius_004.jpg 2386件 [詳細] julius_002.jpg 2082件 [詳細] julius_003.jpg 2183件 [詳細] julius_001.jpg 2178件 [詳細] Juliusのプログラムとの連動方法.txt 5300件 [詳細]