マイク入力について

この文書では,Julius/Julian でマイク入力を認識する際のコツや留意点,環境の設定方法などについて説明します. 音声入力全般についてもあわせてお読みください.
  1. OSごとの留意点
  2. コンパイル時の設定
  3. マイク入力の認識手順
  4. 音量・トリガレベルの調節
  5. 録音内容のチェック方法

1.OSごとの留意点

Julius/Julian は以下のOSでマイク入力をサポートします. 以下は各OSごとの留意点等です.
  1. Linux

    Linux では,以下のサウンドドライバに対応しています.

    configure 実行時には OSS が優先されます.ALSA の native API を使用したい場合は,configure で --with-mictype=alsa を指定してください.

    サウンドカードが16bit,monoral で録音できることが必須です.ただし OSS の場合のみ,デバイスがステレオ録音しかサポートしていない場合,自動的にその左チャンネルのみを取り出して認識します.

    正しく録音できるどうかは,現状ではドライバやチップとの相性に大きく左右されます.よくある "Sound-Blaster Pro 互換" の設定ではおそらく正しく動作しません.特に,NotePC についてはドライバの相性が問題となることが多く,16bit,16kHz録音がサポートされているとされるチップであっても,実際には録音音質が非常に悪く使用に耐えないものもあります.ご留意下さい.

    Julius/Julian はミキサーデバイスの設定を一切行いません.録音デバイス(マイク/ライン)の選択や各デバイスのボリューム調節は, xmixer などのツールで別途行ってください.

    OSSの場合,デフォルトのサウンドデバイス名は /dev/dsp です.環境変数 AUDIODEV で変更できます.(Rev.3.5 以降)

  2. Windows

    Windowsコンソール版ではマイク入力をサポートしています. Juliusはミキサーの設定やボリュームの調節は行いませんので, 「アクセサリ」の「エンターテイメント」にある「ボリュームコントロール」で マイクデバイスの選択と録音音量の調節を行ってください.

  3. Sun Solaris 2.x

    Solaris 2.5.1 および 2.6 で動作確認をしています.

    デフォルトのデバイス名は /dev/audio です.環境変数 AUDIODEV で指定できます.

    起動後,オーディオ入力がマイクに自動的に切り替わりますが,ボリュームの自動調節は行いません.ボリューム調節は gaintool などのツールで別途行ってください.

  4. Sun SunOS 4.x

    SunOS 4.1.3 で動作確認をしています.コンパイルにはヘッダ が必要です.

    デフォルトのデバイス名は /dev/audio です.環境変数 AUDIODEV で指定できます.

    起動後オーディオ入力がマイクに自動的に切り替わります.音量は 20 に自動設定されます.

  5. SGI IRIX

    IRIX 6.3 で動作確認をしています.(5.x でも動作する可能性は大)

    起動後オーディオ入力はマイクに自動的に切り替わりますが,ボリュームは自動調節されません.apanelコマンドで別途調節してください.

  6. FreeBSD

    FreeBSD 3.2-RELEASEで、ドライバはsndで動作確認をしました.--with-mictype=oss で動作します.

    ミキサーの設定は行われません.入力デバイスの選択(MIC/LINE)やボリューム調節を他のツールで行うようにしてください.

    サウンドカードなどの注意点は Linux の項をご覧下さい.

2.コンパイル時の設定

マイク入力については,コンパイル時に configure スクリプトが がOSを自動判別し,必要なライブラリを組み込みます.うまく検出されたかどうかは,最後に出力される以下のメッセージをチェックしてください.
mic API type    : oss (Open Sound System compatibles)
自動判別に失敗する場合は,configure にオプション --with-mictype=TYPE を指定してください.TYPEは oss, alsa, freebsd, sol2, sun4, irix, sp, portaudio, esd のどれかを指定します.

3.マイク入力の認識手順

ここで Julius の起動からマイク入力までの流れを説明します.途中で不具合が起きた場合は 5,6 へ進んでください.

マイク入力を認識させるには,起動時に -input mic を指定します.すると起動後,以下のようなプロンプトが出て音声のトリガ待ちになります.(プロンプトが出る前に発声した内容は無視されます)

<<< please speak >>>
プロンプトを確認後,マイクに向かって発声します.口の位置はマイクから15cm程度離し,できるだけはっきり発声して下さい.

一定以上のレベルの入力があるとJuliusは第1パスの処理をはじめます.解析は入力と平行して進みます.次に長い無音区間が現れたらそこで第1パスの解析をやめて第2パスへ移行し,最終結果を出力します.その後また入力待ちになる,を繰り返します.

! 注意 !
マイク入力の場合,基本的に最初の第1発話は正しく認識できません.

これは,実時間処理では直前の入力で計算したCMNパラメータを次の入力で使用する仕組みになっているため,最初の入力では CMN を行えないためです.

最初の入力は「マイクテスト」などと適当な入力を行い,2回目以降から本 入力を開始するようにしてください.

ただし -cmnload filename で初期 CMN パラメータをファイル から読み込み,第1発話からCMNを適用することができます.また Julius/Julian 内のCMNパラメータは -cmnsave filename で保存できます.

なお起動時に -demo を指定することで第1パスの解析途中の候補をリアルタイムに出力することができます.

4.音量・トリガレベルの調節

うまく認識できないときは,マイクの音量や,音声の開始を検出するためのトリガレベルを動作環境に応じて設定してやる必要があります.

調節の流れですが,まずマイクのボリュームを調節してから,トリガレベルを決定します.ボリュームは入力音声が割れない程度に大きくします(他の録音ツール等で正しく録音できているかチェックすると良いでしょう).

感度が鈍くて音声を検出できない場合や,逆に周囲の雑音でトリガしてしまう場合は,トリガレベルを調節します.トリガレベルはオプション -lv で指定できます.値の範囲はunsigned short の振幅 (0-32767) で,デフォルトは 3000 です.トリガレベルが大きいと感度が鈍り,小さいと感度が鋭くなります.

また,発話開始や発話終了部分の音声が切れてしまう場合は,トリガレベルを下げると 途切れずに収録できることがあります.

5.録音内容のチェック方法

どうしても認識がうまくいかない場合,Juliusが正しく音声を録音できているかどうかを調べる必要があります.Julius/Julian には認識内容をファイルに記録するオプション-recordがあります.下記のように,オプションに続けて書き込み可能なディレクトリを指定します.
% julius -C .... -record dir
このオプションをつけて認識を行うと,指定したディレクトリの下に認識対象となった音声データがファイルとして逐次記録されていきます.ファイル形式は WAV 形式です.ファイル名は,認識した日時を表すファイル名になります.例えば,2005年3月3日の15時30分7秒に録音したファイルは "2005.0303.153007.wav" というファイル名になります.これを再生したり波形を見るなりして,正しく録音できているかどうかを確認するとよいでしょう.

また,Julius にはマイクから1発話を録音するプログラム adinrec が付属しています.これを用いて,Julius が取り込む音声をチェックすることもできます.

% ./adinrec/adinrec myfile.wav
上記のように実行すると,adinrec はマイクから1回分の発声をファイル myfile.wav に記録します.この adinrec は Julius 本体と同じ取り込みルーチンを使用しているので,この録音ファイルの音質がすなわちJuliusが認識しようとしている音声の音質になります.

記録した音声の波形を見るには,例えば以下のツールを使用してみてください.


$Id: mic.html,v 1.1.1.1 2007/01/10 08:01:57 kudravka_ Exp $