Skip to content

SetInputDevice

memakura edited this page May 2, 2018 · 12 revisions

(HOME) (他の拡張ブロック)

音声入力デバイス(マイク)の設定

認識がまったくうまくいかない場合はマイクの設定が原因かもしれません。以下を参考に設定を確認してみてください。 外部接続のマイク(Bluetooth や USB、マイク端子接続)の使い方についても説明します。

  • Julius は 16kHz, 16bit, モノラル の入力を前提にしています。48kHz などでも自動で変換されているようです。
  • 以下の説明だけではうまくいかない場合もあるかもしれません。
  • 長々と書いてありますが、結局はまず Audacity を入れて、録音・再生しながら Windows 録音デバイスの設定を確認するのが近道だと思います。

まず外部マイクなしで試してみる

(1) s2listen を実行します

  • Scratch は立ち上げなくていいです。
  • Julius が立ち上がった方の画面(あとから開くコマンドプロンプト)に表示されるメッセージを確認します。
  • 以下は画面の例です。接続されている音声入力デバイスによって表示が違います。
### read waveform input
Stat: adin_portaudio: audio cycle buffer length = 256000 bytes
Stat: adin_portaudio: sound capture devices:
    1 [MME: Microsoft サウンド マッパー - Input]
    2 [MME: マイク配列 (Realtek High Defini]
    6 [Windows DirectSound: プライマリ サウンド キャプチャ ドライバー]
    7 [Windows DirectSound: マイク配列 (Realtek High Definition Audio)]
Stat: adin_portaudio: APIs: DirectSound MME
Stat: adin_portaudio: -- DirectSound selected
Stat: adin_portaudio: [Windows DirectSound: プライマリ サウンド キャプチャ ドライバー]
Stat: adin_portaudio: (you can specify device by "PORTAUDIO_DEV_NUM=number"
Stat: adin_portaudio: try to set default low latency from portaudio: 0 msec
Stat: adin_portaudio: latency was set to 0.000000 msec
  • Stat: adin_portaudio: [Windows DirectSound: プライマリ サウンド キャプチャ ドライバー] より、「Windows DirectSound: プライマリ サウンド キャプチャ ドライバー」が選ばれたことが分かります。
  • 最近の Windows はおそらくこの DirectSound が選ばれていると思うので、以下ではそれを前提に説明します。

(2) Windows の既定デバイスを確認します

  1. Windowsの画面右下の スピーカーマーク にあるスピーカーマークを右クリックします。
  2. [録音デバイス] を選びます。
  3. 「既定のデバイス」と表示されているデバイスがあると思います。
    • Bluetooth 接続のマイクは「既定の通信デバイス」も表示されているかもしれません。マイクから音を入れ、右側のメーターが上がるかどうかを見て、どのマイクが使われているかを確認します。
    • ややこしい場合は右クリックで無効化/有効を切り替えられます。
  4. ダブルクリックしてプロパティを開き、[レベル] タブで音量を設定します。
    • 「マイク配列」はある程度大きくしておきます。(まずは100で試してみます)
    • 「マイクブースト」は必要に応じて上げていきます。(後述)
  5. [詳細] のタブを選ぶと、マイクによって「オーディオ拡張機能を有効にする」があります。以下の録音確認でうまくいかない場合、このチェックを外します。(外さなくてもうまくいくマイクもあります。)
  6. マイクによっては [拡張] というタブもあります。こちらもマイクによって異なりますが、うまくいかない場合はまず拡張機能を外してみます。

(3) Julius 付属の adintool で音声を録音してみます

  • ここを飛ばして Audacity で録音確認をしても OK です。
  • adintool は Julius と同じライブラリを利用しているため、adintool で音声がきれいに録音できない場合は、認識がうまくいきません。
  1. Windows のコマンドプロンプトを立ち上げます。
    • Windows10 だと左下の「ここに入力して検索」で cmd と入力すれば選べます。
    • もしくは 左下の Windows アイコンで右クリックし「ファイル名を指定して実行」を選んで cmd と入れても OK です。
  2. "c:\Program Files\s2listen\julius\adintool.exe" を実行してみます。
    • バックスラッシュ \ は日本語 Windows では円マークです。
    • c:\Pro あたりまで打ち込んで タブ を押すと "c:\Program Files" あたりまで自動補完してくれます。出ない場合は何度か タブ を押してください。出たら "c:\Program Files"\spe あたりまで打ち込んでまた タブ を押す、などを繰り返します。二重引用符"は勝手に動いてくれます。
    • adinrec というツールもあるので間違えないように注意してください。(adinrec でも同じ確認ができますがオプションが異なります。)
    • 実行してコマンドのヘルプが表示されれば OK です。
  3. "c:\Program Files\s2listen\julius\adintool.exe" -in mic -out file -filename mictest を実行します。
    • コマンド名を打ち込むのが面倒な場合はカーソルの上を押すと、先ほど入力したコマンドが出てくるので、それに続けて-in 以下を打ち込みます。
    • Julius の立ち上げ時と同じようなメッセージが出て、最後に <<< please speak >>> が出れば OK です。
  4. マイクに向かって何かしゃべってみます。
    • しゃべるごとに以下のようなメッセージが出ます。
    [mictest.0000.wav]...................[segmented]
    mictest.0000.wav: 12980 samples (0.81 sec.) [ 22080 ( 1.38s) -  35060 ( 2.19s)]
    
    • Ctrl + C で終わります。
  5. 保存された wav ファイルを確認してみます。
    • c:\Users\<ユーザ名> に保存されています。Windows (C:) > ユーザー 以下にあります。
  6. wav ファイルを再生してみます。
    • 十分な音量で再生できているでしょうか。もし問題ないようであれば、以下はスキップして OK です。
    • 音量が小さすぎるだけなら、Windowsの録音デバイスの [レベル] で「マイク配列」や「マイクブースト」の大きさを変えてみます。
    • ガビガビとした音になる場合、Windowsの録音デバイスの [詳細] や [拡張] で拡張機能のチェックを外してみます。
    • 何かがおかしい場合、波形を確認すると確実です。以下では Audacity というソフトを使ってみます。

(4) Audacity でより詳細に確認してみます

  1. "Audacity" でインターネット検索すると見つかるのでインストールしておきます。 Audacity
  2. [録音と再生] > [オーバーダブ]をオフにしておきます。
  3. 図の(a)でs2listen を立ち上げたときに選ばれているデバイスを指定します。
    • 上の例では「Windows DirectSound」「プライマリ サウンドキャプチャ ドライバー」を選ぶことになります。
    • 「1(モノ)録音チャネル」を選んでください。一番右のスピーカーマーク(再生デバイス)は音の確認をするためですが、通常は「プライマリ サウンド ドライバー」で OK です。
  4. 図の(b)で「16000」を選びます。
  5. r キー、もしくは赤丸の録音ボタンで録音して、図のように音声波形ができることを確かめます。停止や再生は スペース キーです。
  6. もし音量が小さすぎる場合は、Windows の録音デバイスの設定を見直しましょう。おかしなノイズや音になる場合は、拡張機能を切ってみましょう。
  7. 何度も録音・再生する場合は、前に録音したものも同時に再生されるため、図の(c)のミュートを押すか、Xボタンで前に録音したものを閉じてください。

(5) adintool もしくは Audacity できれいに録音できていれば準備完了です

  • 図の波形のように振幅が -0.5 から 0.5 をある程度超えるぐらいがいいですが、多少小さくても認識可能です。
  • 振幅が小さすぎる場合は、Windows の録音デバイスの設定で、録音レベルを上げて調整します。ただし環境ノイズも乗ってきます。
  • あまりに環境ノイズと音声の差が小さい場合は、外部マイクを使う方がよいです。(信号処理的にノイズ除去することも可能ですが、マイクを使ったほうが認識精度はよいです。)

外部マイクを接続してみる

(1) マイクを接続します

  • あらかじめペアリングされた Bluetooth マイクであれば接続します。
  • 有線マイクを USB やマイク端子に接続してもよいです。

(2) s2listen を実行してみます

  • たとえば以下は Bluetooth ヘッドセットをつないだ場合ですが、デバイス 11番 が追加されています。マイクの種類やPCの設定によって異なり、マイク端子への接続の場合、デバイス自体は追加されないかもしれません。
    1 [MME: Microsoft サウンド マッパー - Input]
    2 [MME: マイク配列 (Realtek High Defini]
    3 [MME: ヘッドセット (SoundBuds Slim Ha]
    9 [Windows DirectSound: プライマリ サウンド キャプチャ ドライバー]
    10 [Windows DirectSound: マイク配列 (Realtek High Definition Audio)]
    11 [Windows DirectSound: ヘッドセット (SoundBuds Slim Hands-Free)]
Stat: adin_portaudio: APIs: DirectSound MME
Stat: adin_portaudio: -- DirectSound selected
Stat: adin_portaudio: [Windows DirectSound: プライマリ サウンド キャプチャ ドライバー]

(3) Windows の録音デバイスの設定を確認します

  • もし追加したマイクが既定のデバイスで指定されているなら、おそらくそのまま使用できます。ただし、内臓マイクと同様に、adintool や Audacity で録音音声を確認し、音量レベルや拡張機能の設定を行います。
  • もし追加したマイクが既定ではない場合、右クリックを押して「既定のデバイス」に変更してみます。「既定の通信デバイス」のままでも、メーターで音を拾えているなら OK です。それでもうまくいかない場合や、既定のデバイスを変更したくない場合は、以下の方法を使います。

(4) Julius 起動時の録音デバイスを指定します(オプション)

  1. 追加マイクの調整をします。
    • Audacity の図(a)の「プライマリ サウンドキャプチャ ドライバー」の部分で、用いたいマイクを選び、録音と再生を繰り返しながら、Windows 録音デバイスの設定で音量レベルや拡張機能などを調整します。
    • Audacity を用いない場合は、adintool を実行する前に set PORTAUDIO_DEV_NUM=11 (追加マイクが11番の場合)を実行しておけば、adintool で録音するデバイスを切り替えられます。もとに戻すには set PORTAUDIO_DEV_NUM= を実行します。(=まで必要)
  2. デスクトップにある s2listen のアイコンを右クリックして[プロパティ]を選びます。 Shortcutプロパティ
  3. 「リンク先」の最後に -d (デバイス番号) を加えます。s2listen もしくは adintool を実行したときに出てくる、自分が使いたいマイクの数字を指定してください。上の例では、図のように -d 11 を指定することになります。
  4. 「これらの設定を変更するには管理者の権限が必要です」と表示された場合は「続行」を選びます。
  5. 以上で、s2listen を実行すると指定したデバイスが選択されるようになります。(最後の2行)
Stat: adin_portaudio: sound capture devices:
    1 [MME: Microsoft サウンド マッパー - Input]
    2 [MME: マイク配列 (Realtek High Defini]
    3 [MME: ヘッドセット (SoundBuds Slim Ha]
    9 [Windows DirectSound: プライマリ サウンド キャプチャ ドライバー]
    10 [Windows DirectSound: マイク配列 (Realtek High Definition Audio)]
    11 [Windows DirectSound: ヘッドセット (SoundBuds Slim Hands-Free)]
--> use device 11, specified by PORTAUDIO_DEV_NUM
Stat: adin_portaudio: [Windows DirectSound: ヘッドセット (SoundBuds Slim Hands-Free)]

その他

  • adintool で録音した wav を Audacity で開くと、録音周波数を確認できます。特にオプションが無くても 16000 Hz になるようですが、もしこれが 48000 Hz など別のものになっている場合は教えてください。
    • 録音デバイスで 48kHz (16bit) を選んだうえで、adintool のオプションを加える必要があるのかもしれません(adintool -48 ... )。
    • Julius 側のソースを見ればよいですが未確認です。