Comments
Description
Transcript
HARK on Robovie
Robovie-R2 での HARK 使用方法 吉田 雅敏 平成 23 年 1 月 14 日 第1章 マイクロホンの設置 Robovie-R2 へのマイクロホンの設置位置とマイクロホンの数について述べる. ロボットにマイクロホンアレイを 塔載する際に注意する点については, hark-cookbook 4 章に説明されているのでそちらを参照すると良い. 本書で使用するマイクロホンは, 4 線式差動信号出力型の MEMS (Micro Electro Mechanical Systems) マイクロホン である. MEMS マイクロホンは, 従来用いられた ECM マイクロホンに比べ耐振動性が高いことから, 防振用のゴム でマイクロホンを覆うといった防振対策は不要である. 個体差がきわめて小さく, 複数のマイクロホンを同時に使用 しても安定した特性での計測が可能である. これらの特徴によりロボットに搭載するマイクロホンアレイを構成する のに適している. 今回用いた MEMS マイクロホンは, 差動信号式であることから伝送路上のノイズにロバストであ り, ロボット内部の配線を比較的自由に行える利点もある. 使用した MEMS マイクロホンモジュールは, 株式会社シ ステムインフロンティア製の MIC-DF-STD3R1 である. 図 1.1, 1.2 に MEMS マイクロホンの実装面とその裏面を示 す. 外形が, 横 20mm× 縦 25mm,基盤厚 0.2mm である.図 1.1 の矢線の示す丸い穴が収音部で, 穴の直径は約 1mm である. 収音部分が小型であるため,ロボットの外観を損なうことなく実装できる. 万全を期するならば, マイクロホン設置前にマイクロホンのゲインに個体差がないかを確認すると良い. マイクロ ホンを 1 個づつスピーカの前に置いて録音を行う. すべてのマイクロホンの録音において, スピーカの位置, 向き, ボ リューム, 再生音, マイクロホンを置く位置を同じにする. 録音データの振幅の大きさを確認して, 他マイクロホンと 比べ録音振幅の差が大きいマイクロホンの使用は避ける. 図 1.1: MEMS マイクロホンモジュール実装面 図 1.2: MEMS マイクロホンモジュール裏面 MEMS マイクロホンの設置 マイクロホンの Robovie-R2 搭載位置を図 1.3, 1.4, 1.5, 1.6 に示す. この配置は, ECM マイクロホン(Sony ECM- C10)で 3 話者同時発話認識を行った実績のある配置である. 図中の番号は, マイクロホンに対応付けたチャンネル 1 番号を表している. 本書では, 8 本のマイクロホンを用いる. MEMS マイクロホンの実装に当たって, Robovie-R2 の外装に直径 2mm の穴をあける. 手動ドリルで容易に穴を あけることができる. あけた穴には削りかすが残らないように注意する必要がある. MEMS マイクロホンは, 外装 内側から両面テープで張りつけることで実装した. MEMS マイクロホンモジュール上の MEMS マイクロホンは, 基 盤から 2mm 程突出しているので, 約 2mm 厚の両面テープを用いて基盤と外装内側を張り付ける. 張りつけ時には, MEMS マイクロホンの穴を外装にあけた穴の中心に合わせる. 穴の位置を合わせる時に, 外装外側から内側に向けて レーザポインタで照らすと作業しやすい. マイクロホンのチャンネルアサインは, 任意であるが, Robovie-R2 正面を1チャンネルとし, 上からみて反時計ま わりにチャンネル番号をアサインした. 図 1.7 に Robovie-R2 を上から見たマイクロホン位置とチャンネル番号を示 す. 図の中心座標は Ch4 と Ch6 の中点とした. 正面方向が X 軸正方向であり左が Y 軸正方向である. 頭部のマルチパスと共鳴に対処 Robovie-R2 の頭部には複数の開口部があり, 頭内に音が入りこみやすい. 頭内に入った音は, 内部で複数回反射し, 残響として観測される. 残響は, 音源定位・音源分離を困難にするため, 残響を短くする必要がある. 頭内に音が入ら なければ, 残響を短くできるので, 開口部を物理的に塞ぐという対処方法を用いる. 塞げない開口部への対処は, マイ クロホンの裏側を吸音処理し対処する. 図 1.8, 1.9 に口の開口部, 頭部下の開口部を示す. 1. 開口部を物理的に塞ぐ 頭部の目には必ずカバーをつけ, 口は厚手のテープで塞ぐ. 外装内側から塞ぐと外観を損わない. 図 1.10 は, 目 のカバーを外し, 口を塞がない状態でのインパルス応答である. 図 1.11 は, 目にカバーを付け, 口を厚手のテー プで塞いだ状態でのインパルス応答である. ともに無響室で測定を行った. 口と目を塞ぐことで, 直接音到来後 の振幅の収束が早まり, 残響の影響が軽減していることを確認できる. 2. 塞げない開口部への対処 頭部下の開口部は, 稼働部分であることから塞ぐことができない. ここから頭内へ入る音声は, マイクロホン裏 側に伝わり収録される. この音の影響を軽減するために, マイクロホン裏側を吸音材で被覆する. 2 図 1.3: マイクロホン位置 (正面) 図 1.5: マイクロホン位置 (右) 図 1.4: マイクロホン位置 (左) 図 1.6: マイクロホン位置 (後) 図 1.7: Robovie-R2 のマイクロホン配置 3 図 1.8: 口部分の開口部 図 1.9: 頭下部分の開口部 図 1.10: 口と目を塞ぐ前のインパルス応答 図 1.11: 口と目を塞いだ後のインパルス応答 4 第2章 無線 RASP の録音環境確認 本章では, 無線 RASP に添付されているサンプルプログラムを使用した録音方法と, 録音が正しく行えるかを確認 する方法について記載する. 録音用 PC と無線 RASP のネットワーク接続は完了しているものとする. 録音方法 2.1 無線 RASP 添付のサンプルプログラムを使用して録音する方法を説明する. サンプルプログラムのインストール については無線 RASP 付属のドキュメントを参照. FPAA コンフィグ 無線 RASP を起動した後に必ず, FPAA のコンフィグを行う. 使用するコマンドは ws fpaa config である. オプ ション i で無線 RASP の IP アドレスを指定し, オプション f でコンフィグデータファイル名を指定する. コンフィグ データについては無線 RASP 添付ドキュメントを参照. 実行例を以下に示す. この例では, コンフィグファイル名は DiffMic8ch 24dB-2.bin であり, アドレスは 192.168.11.123 である. > ws fpaa config -i 192.168.11.123 -f DiffMic8ch 24dB-2.bin 録音 サンプルプログラムを使用して, 録音を行い, チャンネルごとに wav ファイルを作成する方法を説明する. まず, サンプルプログラム ws ad test を説明する. オプション i で無線 RASP の IP アドレスを指定し, オプション f でサンプリング周波数を指定する. オプション c でチャンネル数を設定する. 1 が 8ch を示すので 1 を指定する. オプ ション s は録音する時間を秒単位で指定する. プログラム実行により, 録音データが, wave data.bin ファイルに保存 される. 保存形式は無線 RASP 添付ドキュメントを参照. 次に, wave data.bin ファイルをチャンネルごとに wav 形式へ変換して出力するサンプルプログラム conv bin2wav を説明する. オプション f でサンプリング周波数を指定する. オプション c でチャンネル数を設定する. 1 が 8ch, 0 が 16ch を示すので本書ではオプション c で 1 を指定する. このプログラムは, wave data.bin を読込み, 指定したチャン ネルの音声をファイル wave data.wav に出力する. これら 2 つのプログラムを使用してサンプリング周期 16kHz で録音を行うシェルスクリプトが以下である. 最初 の引数で無線 RASP の IP アドレスを指定し, 2 番目の引数で録音する時間を指秒単位で定する. 8ch の音声は, 各チャ ンネルごとにファイル wave data <ChNumber>.wav として出力される. ChNumber はチャンネル番号を表し, 1ch か ら順に 00 から始まる数字が振られる. 録音用シェルスクリプト 1 2 # $1 RASP IP address # $2 recording time [秒] 3 ws_ad_test -i ${1} -f 16 -c 1 -s ${2} 5 4 for n in 00 01 02 03 04 05 06 07; 5 6 7 do 8 done conv_bin2wav -f 16 -c 1 -n ${n} mv wave_data.wav wave_data_${n}.wav 同期録音 サンプルプログラムを使用して, 音声再生と同期して録音を行い, チャンネルごとに wav ファイルを作成する方法 を説明する. ここで説明する録音方法は, 3 章にて, TSP 信号の録音に使用する. サンプルプログラム ws ad da test を説明する. オプション i で無線 RASP の IP アドレスを指定し, オプション f で サンプリング周波数を指定する. オプション c でチャンネル数を設定する. 1 が 8ch, 0 が 16ch を示すので本書ではオ プション c で 1 を指定する. オプション d で再生するデータファイル名を指定する. オプション s で録音する時間を 秒単位で指定する. プログラム実行により, 録音データが, wave data.bin ファイルにバイナリ形式で保存される. 保存 形式は無線 RASP 添付ドキュメントを参照. オプション d で指定するデータファイルはテキストファイルで, 1 行 1 サンプルのデータを 32bit 符号付整数で記 録したものである. 事前に再生する音声ファイルを変換しておく必要がある. これら 2 つのプログラムを使用してサンプリング周期 16kHz で録音を行うスクリプトが以下である. 最初の引数 で無線 RASP の IP アドレスを指定し, 2 番目の引数で再生するデータファイル名を指定する. 3 番目の引数で録音す る時間を指秒単位で定する. 8ch の音声は, 各チャンネルごとにファイル wave data <ChNumber>.wav として出力さ れる. ChNumber はチャンネル番号を表し, 1ch から順に 00 から始まる数字が振られる. 同期録音用シェルスクリプト 1 2 # $1 RASP IP address # $2 再生ファイル 3 4 5 # $3 録音時間 ws_ad_da_test -i ${1} -f 16 -c 1 -d ${2} -s ${3} for n in 00 01 02 03 04 05 06 07; 6 7 do 8 9 10 2.2 conv_bin2wav -f 16 -c 1 -n ${n} mv wave_data.wav wave_data_${n}.wav done endif 録音前の確認事項 本測定を行う前に, 試験的に録音を行い, 録音音声を確認する. 以下に録音試験において確認すべき点を述べる. な お, 波形の確認ならびに再生には audacity を使用すると良い. audacity は多チャンネル音声ファイルを扱えるフリー ソフトウェアである. 各チャンネルごとに波形を確認でき, さらにチャンネルごとに再生し音声を聞くことが可能で ある. Ubuntu10.04 では標準でインストールされていないので, 作業前にインストールしておく. 以下にインストール 方法と, 起動方法を示す. 実行後の open connect failed メッセージは無視してよい. audacity インストール方法 > sudo apt-get install audacity 6 audacity 起動方法 > audacity wave data 00.wav bt audio service open: connect() failed: Connection refused (111) 1. 全チャンネルで音声が録音されているかを簡単に確認する. 無線 RASP を録音状態にして, 声を出しながら Robovie-R2 の周りを 1 週してみる. 録音したファイルを確認し てすべてのチャンネルに音が入っているかを確認する. 2. チャンネルが間違っていないかを確認する. 無線 RASP を録音状態にして, マイクロホン 1 個ごとに, マイクロホンと口との間を手で被って小声でチャン ネル番号を声に出す. すべてのマイクロホンに音を入れ, 録音が完了したら, 音声ファイルを開き, 各チャンネ ルごとに再生して, 録音されたチャンネル番号と実際のチャンネルが正しいか確認する. 3. 環境雑音の確認をする. 環境雑音を録音し, チャンネルの波形を確認する. 環境雑音が大きい場合は, 雑音の原因を探して取り除くか, より静かな環境で本測定を行う. 2.3 まとめ 無線 RASP で録音するためのコマンドを説明した. また, 録音が正常に行われているか判断するための確認事項に ついて説明した. 実際に検証などで録音を行う前には, ここで述べられた内容を必ず確認してから録音をする. 7 第3章 無線 RASP によるインパルス応答測定 この章では伝達関数や評価データの作成に必要なインパルス応答の測定手順について述べる. インパルス応答の測定には以下の 4 つのステップが必要になる. 1. TSP 信号の再生位置を決める 2. Robovie-R2 を中心に, TSP 信号の再生位置に印を付ける 3. 決めた再生位置にスピーカを置いて TSP 信号の録音 4. 録音した TSP 信号からインパルス応答の計算 ステップ 3 で録音した音声は 4 章で伝達関数作成に使用する. ステップ 4 で作成したインパルス応答はシミュレー ションにより評価データを作成するために使用する. 評価データを作成しないのであれば, このステップを行う必要 はない. ステップ 1 TSP 信号の再生位置を決める TSP 信号の再生位置は, そのまま想定される話者の位置である. HARK では, 想定される話者位置を Robovie-R2 を 中心とした 1 個の同心円上とする. その位置を決めるため以下の項目について値を定める. これらは 4 章で伝達関数 作成の際に必要な情報であるので必ず記録しておく. • スピーカの高さ 想定される話者の口の位置をスピーカ位置とする. 話者の身長から 20cm 程度下の高さをスピーカの高さとす れば良い. 可能であるなら, 想定される話者の上下 ±20cm の位置も測定しておく. これは話者の高さによって 認識精度が向上する場合があるからである. なお, HARKTOOL を使用する際に必要な情報は, マイクロホン位 置とスピーカ位置を結ぶ直線と水平面との仰角である. • Robovie-R2 からの距離 話者は, Robovie-R2 を中心とした同心円上にいると想定するので, その半径を決める. • スピーカの位置 TSP 信号を再生する位置を Robovie-R2 を中心とした方向角度で決める. 音源定位と音源分離において, インパ ルス応答は音声の伝達関数として用いられている. 位置によってインパルス応答は異なるので, できるだけ細 かく測定したほうが良い.特に話者位置に制約がないならば, 全方向 5 度間隔で十分である. なお, 話者位置が 等間隔でない場合, HARKTOOL で伝達関数設定ファイルを作成後, ファイルを修正する必要があるので, 特に 制約がないなら等間隔とすると良い. ステップ 2 TSP 信号再生位置に印を付ける Robovie-R2 を中心とした同心円上に等間隔で順番に印を付ける方法を説明する. 図 3.2 は半径 1m と, 1.5m に 5 度 毎に印を付けた例である. この例では床にガムテープを貼り, その上にマジックで印をつけている. 作業では図 3.1 に 8 ある様に 5 度毎に印をいれた板を使用する. 板の印に棒の重ねて, 棒にそって印を入れていくことを繰り返せば効率 良く作業できる. 5 度間隔 72 箇所の印を付け終るまでに 1 人で 30 分程度である. 図 3.1: マーキング用板 ステップ 3 TSP 信号の録音 無線 RASP で TSP(Time Stretched Pulse) 信号を再生し, 録音する. 使用するコマンドは 2.1 節を参照. 録音環境では 可能な限り音を反射するものを置かない. 例えば固い板面などがあると, 音を反射してインパルス応答を乱す原因に なる. TSP 信号の再生と録音はスクリプト等で自動で行うようにし, 作業者は部屋を出て無人の状態で行うことが理 想である. 作業者が部屋に残って録音を行う場合は, 作業者は音を立ててはいけない. TSP 信号の再生回数 16 回 TSP 信号を連続再生して録音する. これは平均加算することで, ノイズの影響を抑えるためである. 詳細はス テップ 4 を参照. 再生回数は 4 章での伝達関数作成に必要な情報であるので記録しておく. 無線 RASP で録音する際 は, 事前に 16 回連続して TSP 信号を記録した音声ファイルを用意する. これで 1 回あたり 20 秒程度の録音になる. 録音ファイルのファイル名には角度情報などの情報を入れておくと良い. 等間隔で測定する場合, 録音したファイル 名には角度情報として 0 埋めした 3 桁の数字を入れ, それ以外は同じ文字列にしておくと, HARKTOOL (4 章参照) で伝達関数設定ファイルを自動生成できるので, 便利である. 以下はそのファイル名の例である. tsp_000.wav tsp_005.wav tsp_010.wav 9 図 3.2: マーキング例 測定前の確認 測定を始める前には試験測定を行い, 以下の点について確認する. 1. スピーカから TSP 信号が再生されていることを確認 2. ノイズが録音されていないことを確認 3. クリッピング, 音飛びがないことを確認 図 3.3 がクリッピングが発生している波形である. 振幅が大きい箇所で波形の表現範囲を超ていることが確認できる. この様な状態になった場合, スピーカの音量を下げる. 図 3.4 は音飛びが発生している波形である. 0 から 5 秒の間に 0.3 秒程度の無音区間がある. これらの場合, 録音ファイルから正しいインパルス応答が生成できないので, 原因を探 し出して取り除く必要がある. ステップ 4 インパルス応答の計算 こうして録音した信号 (図 3.6) に, 逆 TSP 信号を畳み込み (図 3.7) , インパルス応答を求める. 複数回 TSP 信号を 連続再生したものを録音し, 平均加算 (図 3.8) することで, ノイズの影響を下げることができる. インパルス応答の確認 インパルス応答の波形を確認し, 以下の点について確認する. 1. 対称位置にあるチャンネルの波形が似ていることを確認する. スピーカ位置と Robovie-R2 を結ぶ直線を対称軸として, 対称の位置にあるチャンネルのインパルス応答の波 形は似た形となる. もし大きく形が異るようであれば原因を追及する. ただし実測ではきれいな対称にはなら ない場合もある. 疑わしい原因がないのであれば問題はない. 2. 波形の振幅が最初に大きくなる時刻がスピーカとマイクロホンとの距離を反映していることを確認する. 例えば, 音速を 340m/s, サンプリング周波数を 16000 とすると, 1 サンプルの時間で音声は 2.12cm 移動する. 1m の距離にスピーカを置いた場合, スピーカに最も近いマイクロホンとスピーカとの距離は 70cm 程度である ので, 先頭から 33 サンプル辺りになると波形の振幅が大きくなる. スピーカから最も遠いマイクロホンではス ピーカとの距離は 110cm 程度であるので, 先頭から 51 サンプル辺りで波形の振幅が大きくなる. この様にス 10 図 3.3: クリッピング 図 3.4: 音飛び ピーカからマイクロホンが遠いほど波形が大きくなる時刻が遅れる. もしスピーカに近いチャンネルよりも遠 いチャンネルの方が波形が大きくなる時刻が早いことがあれば, 正しいインパルス応答とはいえないので, 原 因を追及する. 様々な条件で作成したインパルス応答の例を挙げる. 図 3.9,3.10, 3.11 は Roboie-R2 正面にスピーカを置いた際の インパルス応答である. それぞれスピーカに最も近い 1ch の最大振幅を 1 として正規化した. 各マイクロホン位置は 1 章に記した位置になる. 1ch が最もスピーカに近く, 5ch が最も遠い. 2ch と 8ch, 3ch と 7ch, 4ch と 6ch が対称位置 にある. 1ch→2ch→3ch→4ch→5ch の順で, 振幅が大きくなる時刻が遅れていることが確認できる. 実測値のため完全 ではないが, 2ch と 8ch, 3ch と 7ch, 4ch と 6ch でそれぞれ対称な波形になっている. 図 3.9 は本書で検証例として図示されているデータを収集する際に使用したものである. 図 3.10 は, 無響室で測定 したものである. 図 3.9 に比べ残響が少いことが確認できる. 図 3.10 は通常の会議室で測定したもである. 無響室で はない実際の環境でのものであり, 実験室と同様, 残響が長い. インパルス応答の計算プログラム TSP 信号を 16 回再生し, 5 度毎に 355 度まで録音した 8ch の wav ファイル 72 個をインパルス応答へ変換する MATLAB プログラムを参考までに説明する. チャンネル番号は 1∼8 としている. 12 行で 16 回の録音を平均加算す る. 録音したファイルそれぞれについて それぞれインパルス応答を生成する. インパルス応答は raw 形式でチャンネ ルごとに別ファイルとして出力される. TSP 信号ファイル名は tsp 16384 1time 16kHz.wav である. 録音ファイルは RecordedTSP ディレクトリに, ファイ ル名 tsp < 角度 >.wav として保存する. 角度は 0 埋めする 3 桁の数字である. 生成されたインパルス応答ファイルは ImpulseResponse ディレクトリにファイル名 < 角度 >-< チャンネル ch 番号 >.flt として出力される. 11 インパルス応答へ変換する MATLAB プログラム 1 2 [tsp,fs]=wavread(’tsp_16384_1time_16kHz.wav’); itsp=tsp(end:-1:1); 3 4 5 for ii=1:72 fn=num2str((ii-1)*5,’%03d’); [x,fs]=wavread([’RecordedTSP/’,fn,’.wav’]); 6 7 8 9 10 for jj=1:8 y(:,jj)= conv(itsp,x(:,jj)); end for jj=1:8 z=zeros(16384,1); 11 12 for tt=1:16 z(1:16384)=z(1:16384)+y(16384*(tt-1)+[1:16384],jj); 13 14 15 end z=z/16; fid=fopen([’ImpulseResponse/’,fn,’-’,num2str(jj),’.flt’],’wb’); 16 17 fwrite(fid,z,’real*4’); fclose(fid); 18 19 end end 12 図 3.5: TSP 信号 図 3.6: TSP 信号の録音 図 3.7: 逆 TSP 信号の畳み込み 図 3.8: 平均加算 13 図 3.9: 実験室でのインパルス応答 14 図 3.10: 無響室でのインパルス応答 15 図 3.11: 会議室でのインパルス応答 16 第4章 伝達関数の作成 TSP 信号を録音したファイルから, HARKTOOL を用いて, LocalizeMUSIC モジュールと GHDSS モジュールに使 用する伝達関数ファイルの生成手順を説明する. 4.1 伝達関数設定ファイルの作成 伝達関数設定ファイルは, TSP 信号を録音したファイル群と測定位置の対応を表している. 伝達関数設定ファイル は, LocalizeMUSIC モジュールと GHDSS モジュールに使用する伝達関数ファイルの生成に必要である. ここでは, HARKTOOL のテンプレート作成機能を用いた伝達関数設定ファイル作成方法を説明する. HARKTOOL を起動し, 「TSP-ListFile」 を選択後, 「テンプレートの作成」ボタンを押すことで設定ファイルのテ ンプレートを作成できる. HARKTOOL の起動は, 次のコマンドを実行する. > harktool3 次のエラーがでる場合があるが, 無視してよい. > harktool3 # Can’t open English translation file:/usr/bin/../share/harktool3/translations/harktool3 en US 起動後のウィンドウキャプチャ画像を図 4.1 に示す. アプリケーションウィンドウ中に, 子ウィンドウが表示され る. 子ウィンドウ内に「新規作成ファイルの選択」と表記されており, ここでは, 「TSP-ListFile」ボタンをクリック する. 「TSP-ListFile」ボタンをクリックすると, 「TSP-ListFile の編集ウィンドウ」が表示される.図 4.2 に, 「TSP-ListFile の編集ウィンドウ」を示す. 右下の「テンプレートの作成」ボタンをクリックし,TSP-ListFile のテンプレートの作 成を開始する. 「テンプレートの作成」ボタンをクリックすると, テンプレートの作成に関する設定項目が表れる.テンプレート の作成に関する設定項目の説明は以下である. 伝達関数設定ファイル テンプレート作成に関する設定項目 • 距離 [m] スピーカと Robovie-R2 との水平方向距離 • 仰角 [度] マイクロホンからみたスピーカ方向の仰角 • 方向角 [度] 左が終了角度, 右は開始角度. 開始角度から半時計周りに, 次項目で設定する指定角度ごとに TSP 信号を録音し たファイルのファイル名がテンプレートへ追加される. • 間隔 [度] ファイル名の角度間隔 17 図 4.1: 起動画面 図 4.2: TSP-ListFile の編集ウィンドウ • ファイル名テンプレート 文字列「#DEGREE#」を含むファイル名. #DEGREE#は, 0 埋めされる 3 桁の角度に入れ替えられる. • 同期加算回数 18 TSP 信号の録音時に TSP 信号を連続再生した回数 • 元インパルスファイル 録音に使用した TSP 信号, 1 周期分のファイル名 • TSP オフセット [サンプル] 録音に使用した TSP 信号のサンプル数, デフォルトのままで良い. • シグナルマックス [振幅値] 最大振幅値とする数値. デフォルトのままで良い. • インパルス応答開始インデックス [サンプル] 伝達関数作成時に使用するサンプルの開始位置. デフォルトのままで良い. 図 4.3 に設定項目の例を示す. 図 4.3: テンプレートの作成に関する設定項目 パラメータ設定後, 「テンプレートの生成」をクリックする. 設定項目ウィンドウが閉じ, 「TSP-ListFile の編集ウィン ドウ」に戻る. 図 4.4 の様に「TSP-ListFile の編集ウィンドウ」には, TSP-ListFile のテンプレートが入る. TSP-ListFile はテキストファイルであるので, ここで直接編集することが可能である. 以下の部分は, TSP-ListFile の TSP 信号を録 音したファイルと座標を表している. 独自の書式でファイル名を設定した場合この部分を書き換える. 等間隔で録音 を行わなかった場合は, 録音した位置を含む様に細かく間隔を設定してテンプレートを生成後, 測定しなかった方向 の行を削除すると良い. TSP 信号を録音したファイルと座標 # x, y, z %% TSP file name, IR start with potision in sample(starting with 1). 19 -0.7071, -0.0000, 0.7071 %%../testdata/tsp/tsp_D180.wav, 1 -0.7044, -0.0616, -0.6964, -0.1228, 0.7071 %%../testdata/tsp/tsp_D185.wav, 1 0.7071 %%../testdata/tsp/tsp_D190.wav, 1 テンプレートの作成・編集後は,「グラフ表示」ボタンをクリックし, グラフで TSP 信号を再生した位置が正しく設 定されているかを確認する (図 4.5) . グラフの座標軸は, 正面が X 座標の正方向, 左が Y 座標正方向, 上が Z 座標正 方向である. 確認後, メニューのファイルから保存を選択し,ファイルダイアログで, ファイル名を指定して保存を クリックする. れ 図 4.4: 伝達関数設定ファイルの保存 4.2 マイクロホン位置設定ファイルの作成 マイクロホン位置設定ファイルは, ロボットのマイクロホン位置を記述している. マイクロホン位置設定ファイル は, LocalizeMUSIC モジュールと GHDSS モジュールに使用する伝達関数設定ファイルの生成に必要である. ここで は, HARKTOOL のテンプレート作成機能を用いたマイクロホン位置設定ファイル作成方法を説明する. HARKTOOL を起動し,「MICARY-LocationFile」 を選択後, 「テンプレートの作成」ボタンを押すことで設定ファ イルのテンプレートを作成できる. HARKTOOL の起動は, 次のコマンドを実行する. > harktool3 次のエラーがでる場合があるが, 無視してよい. 20 図 4.5: 伝達関数設定ファイルのグラフ表示 > harktool3 # Can’t open English translation file:/usr/bin/../share/harktool3/translations/harktool3 en US 起動後のウィンドウキャプチャ画像を図 4.6 に示す. アプリケーションウィンドウ中に, 子ウィンドウが表示され る. 「新規作成ファイルの選択」と表記されており, ここでは, 「MICARY-LocationFile」ボタンをクリックする. 図 4.6: 起動画面 「MICARY-LocationFile」ボタンをクリックすると, 「MICARY-LocationFile の編集ウィンドウ」が表示される. 図 4.7 に, 「MICARY-LocationFile の編集ウィンドウ」を示す. 右下の「テンプレートの作成」ボタンをクリックし,MICARY-LocationFile のテンプレートの作成を開始する. 21 図 4.7: MICARY-LocationFile のテンプレート作成画面 「テンプレートの作成」ボタンをクリックすると, テンプレートの作成に関する設定項目が表れる.以下に従って パラメータを設定する. 図 4.8 に設定項目の例を示す. マイクロホン位置設定ファイル テンプレート作成に関する設定項目 • 距離 [m] スピーカと Robovie-R2 との水平方向距離 • 仰角 [度] マイクロホンからみたスピーカ方向の仰角. 1 章に記したマイクロホン配置の場合. Robovie-R2 の頭部中心か らスピーカへの角度である. • 方向角 [度] 左は開始角度, 右が終了角度. 開始角度から半時計周りに, 次項目で設定する指定角度ごとにマイクロホン座標 を生成し, テンプレートへ追加する. • 間隔 [度] マイクロホンを設置する角度間隔 パラメータ設定後, 「テンプレートの生成」をクリックする. 設定項目ウィンドウが閉じ, 「MICARY-LocationFile の編集ウィンドウ」に戻る. 図 4.9 の様に「MICARY-LocationFile の編集ウィンドウ」には, MICARY-LocationFile の テンプレートが入る. MICARY-LocationFile はテキストファイルであるので, ここで直接編集することが可能である. Position で始まる行はマイクロホン 1 個ごとの座標を示している. NumOfPosition はマイクロホン数を表す. マイク ロホン数を変える場合は Position で始まる行数と NumOfPositin に設定する数値もそろえる必要がある. テンプレートの作成・編集後, 「グラフ表示」ボタンをクリックし, グラフでマイクロホン位置が正しく設定され ているかを確認する (図 4.10) . グラフの座標は正面が X 座標の正方向, 左が Y 座標正方向, 上が Z 座標正方向であ る. メニューのファイルから保存を選択し,ファイルダイアログで, ファイル名を指定して保存をクリックする. 22 図 4.8: MICARY-LocationFile の編集画面 図 4.9: マイクロホン位置設定ファイルの保存 4.3 定位用伝達関数ファイルの作成 定位用伝達関数ファイルは, LocalizeMUSIC モジュールで使用する設定ファイルである. 前節で説明した TSP-ListFile と MICARY-LocationFile から HARKTOOL を用いて定位用伝達関数ファイルを生成する. HARKTOOL を起動し, 「MICARY-LocationFile」 と 「TSP-ListFile」 を選択後, 「テンプレートの作成」ボタン を押すことで設定ファイルを生成できる. HARKTOOL の起動は, 次のコマンドを実行する. > harktool3 次のエラーがでる場合があるが, 無視してよい. 23 図 4.10: マイクロホン位置設定ファイルのグラフ表示 > harktool3 # Can’t open English translation file:/usr/bin/../share/harktool3/translations/harktool3 en US 起動後のウィンドウキャプチャ画像を図 4.11 に示す. アプリケーションウィンドウ中に, 子ウィンドウが表示され る. 子ウィンドウに「新規作成ファイルの選択」と表記されており, ここでは, 「定位用伝達関数ファイル」ボタンを クリックする. 図 4.11: 起動画面 「定位用伝達関数ファイル」ボタンをクリックすると, 「定位用伝達関数ファイルの生成ウィンドウ」が表示され る. 図 4.12 に, 「定位用伝達関数ファイルの生成ウィンドウ」を示す. 設定内容は以下に記する. 設定後,「OK」ボタ ンをクリックする. 図 4.13 が表示され, 内容を確認できる. メニューのファイルから保存を選択し,ファイルダイア 24 ログで, ファイル名を指定して保存をクリックする. 定位用伝達関数ファイル作成に関する設定項目 • 作成方法 計測ベースまたは, 幾何計算を選択できる. ここでは計測ベースを選択する. 幾何計算を選択すると伝達関数を シミュレーション生成する. • 入力データタイプ インパルス応答または TSP 応答を選択できる. ここでは録音した TSP 信号から伝達関数を求めるので, 「TSP 応答」を選択する. インパルス応答を使用する場合は「インパルス応答」を選択する. • MICARY-LocationFile マイクロホン位置設定ファイル名. 4.2 節で作成したファイルを指定する. • ImpulseResponse-ListFile / TSP-ListFile 伝達関数設定ファイル名. 4.1 節で作成したファイルを指定する. • サンプリング周波数 [Hz] 伝達関数のサンプリング周波数 • FFT 長 [サンプル] 伝達関数を離散周波数表現するときのビン数 • インパルスレスポンス長 [サンプル] 録音した TSP 信号 1 個分の長さ. あるいはインパルス応答長を設定する. • 直接音長 [サンプル] 伝達関数生成の際に使用するサンプル数 • 伝達関数間隔 [度] 作成方法で幾何計算を選択した場合に設定する. 4.4 分離用伝達関数を作成 分離用伝達関数ファイルは, GHDSS モジュールで使用されるファイルである. 前節で説明した TSP-ListFile と MICARY-LocationFile から HARKTOOL を用いて分離用伝達関数ファイルを生成する. HARKTOOL を起動し, 「MICARY-LocationFile」 と 「TSP-ListFile」 を選択後, 「テンプレートの作成」ボタン を押すことで設定ファイルを生成できる. HARKTOOL の起動は, 次のコマンドを実行する. > harktool3 次のエラーがでる場合があるが, 無視してよい. > harktool3 # Can’t open English translation file:/usr/bin/../share/harktool3/translations/harktool3 en US 25 図 4.12: 定位用伝達関数ファイルの生成ウィンドウ 図 4.13: 定位用伝達関数ファイルの内容確認ウィンドウ 起動後のウィンドウキャプチャ画像を図 4.14 に示す. アプリケーションウィンドウ中に, 子ウィンドウが表示され る. 子ウィンドウ上に「新規作成ファイルの選択」と表記されており, ここでは, 「分離用伝達関数ファイル」ボタン をクリックする. 「分離用伝達関数ファイル」ボタンをクリックすると, 「分離用伝達関数ファイルの生成ウィンドウ」が表示され る. 図 4.15 に, 「分離用伝達関数ファイルの生成ウィンドウ」を示す. 以下に従い, 設定項目を設定し, OK ボタンを 26 図 4.14: 起動画面 クリックする. 分離用伝達関数の生成に関する設定項目 • 入力データタイプ インパルス応答または TSP 応答を選択できる. ここでは録音した TSP 信号から伝達関数を求めるので, 「TSP 応答」を選択する. インパルス応答を使用する場合は「インパルス応答」を選択する. • MICARY-LocationFile マイクロホン位置設定ファイル名. 4.2 節で作成したファイルを指定する. • ImpulseResponse-ListFile / TSP-ListFile 伝達関数設定ファイル名. 4.1 節で作成したファイルを指定する. • サンプリング周波数 [Hz] 伝達関数のサンプリング周波数 • FFT 長 [サンプル] 伝達関数を離散周波数表現する際のビン数 • インパルスレスポンス長 [サンプル] 録音した TSP 信号 1 個分の長さ. あるいはインパルス応答長を指定する. • 正規化手法 ベクトルまたはマトリックスを選択できる. 図 4.16 が表示され, 内容を確認できる. メニューのファイルから保存を選択し,ファイルダイアログで, ファイル 名を指定して保存をクリックする. 27 図 4.15: 分離用伝達関数ファイルの生成ウィンドウ 図 4.16: 分離用伝達関数ファイルの内容確認ウィンドウ 28 第5章 HARK による音源定位 本章では音源定位のチューニング方法を説明する. 6 章では音源分離, 7 章では音声認識のチューニングについて説 明する. 音源定位結果は音源分離に使用され, また音源分離結果は音声認識に使用される. 従って, チューニングは音 源定位 → 音源分離 → 音声認識の順で行う必要がある. 本書ではこの順で説明をする. 本章では flowdesigner を用い て, 音源定位ネットワークファイルを作成する. flowdesigner の使用法に関しては hark-document 3.3 節を参照すると 良い. ここでは使用するネットワークファイルの構成のみ記載する. 続いて, そのネットワークファイルのパラメー タチューニングをどう行うかについて述べる. 5.1 音源定位ネットワークファイルの作成 ネットワークファイルの作成 図 5.1 がメインネットワーク, 図 5.2 がサブネットワークである. この図に従ってネットワーファイルを作成する. 図 5.1: メインネットワーク 図 5.2: サブネットワーク 定位用伝達関数の指定 29 4.3 節で作成した定位用伝達関数ファイルを使用する. iterateor タブを選択してサブネットワークを表示する. LozalizeMUSIC ノード上で, 右クリックして表示されるメニューから property を選択し, ダイアログ (図 5.3) を表示す る. Parameters タブ内には,NAME,Type,Value という 3 つの項目がある.NAME は,プロパティ名であり, Type は,そこに設定する値のデータ型を表す,Value は,属性に指定する値である.プロパティ名が A MATRIX である 欄に定位用伝達関数のファイル名を設定する. データ型はデフォルトの string のまま変更しない. 図 5.3: LocalizeMUSIC モジュールのプロパティ 音声ファイルの指定 subnet タブを選択してメインネットワークを表示する. Constant ノード上で, 右クリックして表示されるメニュー から property を選択し, ダイアログ (図 5.4) を表示する. プロパティ名が value である欄に音声ファイル名を設定す る. データ型は string へ変更する. 実行 ウィンドウ上の保存ボタンをクリックし, ファイル名 localize.n で保存する. シェル上で以下のように実行する. 30 図 5.4: Constant モジュールのプロパティ > ./localize.n UINodeRepository::Scan() Scanning def /usr/lib/flowdesigner/toolbox done loading def files loading XML document from memory done! Building network :MAIN reading A matrix Try to read /Robovie/common/AMATRIX-Robovie-20101102-2 as HARK format. 72 directions, 1 ranges, 8 microphones, 512 points done 実行すると定位結果グラフ (図 5.5) が表示される. グラフの縦軸は角度を表す. 中心が 0 度の位置で上半分が 0 から 180 度, 下半分が 360 度から 180 度の位置を示す. 横軸はフレーム数を表わす. 定位結果は定位した順に色を赤 → 緑 → 青の順に変えて表示される. シェル上で実行した場合, グラフは処理完了後, すぐ閉じる. グラフを閉じないで内容を確認したい場合は, flowdesigner でネットワークファイルを読込み, 実行ボタンをクリックして実行させる. この場合は処理完了後もグラフは 閉じない. 5.2 マイクロホン音声を処理する方法 マイクロホンからの音声を処理するようにネットワークファイルを修正する方法を説明する. サブネットワークファイルの修正 タブ内の地の部分を右クリックして表示されるメニューから 順に New Node → HARK → AudioIO → AudioStreamFromMic を選択する. 次に AudioStreamFromWave モジュールのプロパティを開き設定内容を確認して AudioStreamFromMic も同じ設定にする. その後に AudioStreamFromWave モジュールを削除する. AudioStreamFromMic の AUDIO と MultiFFT の入力ターミナルを接続し (図 5.6) , NOT EOF ターミナルを Ctrl ボタンを押した状態で, 左クリックし て Condition にする. 31 図 5.5: DisplayLocalization 出力結果 図 5.6: サブネットワーク メインネットワークファイルの修正 subnet タブを開くと, サブネットワークノードに入力ターミナルがなくなり, Constant, InputStream モジュールと サブネットワークモジュールの接続がなくなる. Constant, InputStream モジュールを削除する. 図 5.7: メインネットワーク 32 5.3 音源定位のチューニング 音源定位のチューニングは以下の手順で行う. 音源定位結果は音源分離に使用されるので, 音源分離チューニング を行う前に必ず行う. 1. 定位の動作確認 定位が動作していることを確認する. 2. マイクロホンでの簡単なチューニング マイクロホンからの音声を定位し, DisplayLocalization の出力結果を見ながら簡単なチューニングを行う. 3. 評価データによるチューニング 評価データを使用してパラメータの適正値を探す. 5.3.1 定位の動作確認 DisplayLocalization 出力結果を確認しながら, Robovie-R2 に向けて声を出す. 定位結果が現れない場合は SourceTracker モジュールの THRESH 値を下げる. 声に対応する定位結果が現れる様になったら, Robovie の周りを声を出 しながら 1 周し, 話者の移動が定位結果に現れることを確認する. 定位が途切れたり, 存在しない音源が定位されて も無視する. 定位結果が正しくなければ, ネットワークファイルが正しく構成されているかどうか確認する. 5.3.2 マイクロホンでの簡単なチューニング 移動しない 1 話者でチューニングを行う. 続いて 2 話者で行う. 2 話者では話者間隔が Robovie を中心に 120 度程 度でチューニングし, 60 度, 30 度と徐々に範囲を狭めてチューニングする. 同様に 3 話者, 4 話者と想定される話者数 と話者間隔でチューニングを行う. チューニングするパラメータを以下に説明する. 1. SourceTracker モジュールの THRESH 値 方向ごとのパワーを比較して, THRESH 値より大きいパワーの方向に音源があるとみなされる. THRESH 値が 小さいと小さなパワーの音源も認識されるので, 反射音などの定位が増える. THRESH 値が大き過ぎると, パ ワーの大きい方向しか定位されない. 存在しない定位結果が多い場合は値を大きくする. 定位されない場合は 値を小くする. 2. SourceTracker モジュールの PAUSE LENGTH PAUSE LENGTH は定位が途切れても定位されているとみなす時間を指定する. 発話が定位されても途中で途 切れる場合, PAUSE LENGTH を大きくとることで, 2 つに分かれた発話を 1 つにすることができる. 3. SourceIntervalExtender モジュールの PREROLL LENGTH PREROLL LENGTH を大きくすることで, 定位を時間軸上で前へ延すことができる. THRESH 値が大きい場合, 発話の開始部分が定位されなくなってしまう場合がある. この様な場合に値を大きく設定する. 5.3.3 評価データのチューニング マイクロホンでのチューニングでは評価データが少いため, 適正な設定値が定まったと判断できない. マイクロホ ンではなくシミュレーションにより評価データを作成してチューニングを行う. 音声ファイル名とパラメータ値を引 数で指定できる様にネットワークファイルを修正し, スクリプトを使用してパラメータを変更しながら, 評価データ の音源定位を行う. Robovie-R2 を動作させる実環境に近い評価データを作成する. 評価データには想定される話者数 33 で想定される発話を用意すると良い. さらに想定されるノイズを加えて作成する. マイクロホンでのチューニングで 確定したパラメータ値を含め, 可能な限り詳細かつ広い範囲にパラメータを変更して定位を行い, 最適なパラメータ 値を探す. THRESH 値のチューニング THRESH 値のおおよその値が判ったら. その値から少しづつ値を変えて, 評価データの音源定位結果を確認する. 人の発話を評価データとして用いる場合は, その発話区間を含む定位結果が正しい定位結果である. 定位結果に存 在しないはずの音源が多く出力される場合は, THRESH 値を上げる. これで, 少いパワーの音源が除かれる. 逆に, 定 位結果に音源数は少ないが, 人の発話区間の定位結果が途中で前後複数に分かれる場合がある. この場合, THRESH 値を下げる. これにより, パワーの弱い発話区間も定位されて, 1 つの発話になる. 発話区間のみ定位されるのが理想 であるが, 存在しない音源を消すため THRESH 値を上げると, 発話が別れ, 逆に発話区間を 1 つの音源として定位す る様に THRESH 値を下げると, 存在しないの音源が定位されてしまうという状況になることが多い. この場合は, 発 話区間を 1 つの音源として定位することを優先する. 評価データは量が多いので, THRESH 値を引数で与えられる様にネットワークファイルを作成し, 少しづつ THRESH 値を変えて定位し, 定位精度をプログラムで集計する. THRESH 値のグラフ化 音源のパワーをグラフ化すると THRESH 値の範囲を絞り込める. ここでは音源のパワー (MUSIC スペクトル) を グラフ化する方法を説明する. SourceTracker モジュールの THRESH 値はグラフ作成とは関係がないので 25 を設定 しておく. この 25 の値に根拠はない. LocluzeMUSIC モジュールのプロパティ設定画面で, DEBUG パラメータを true にする. これにより Music スペクトルが標準出力に出力される. 出力内容の中で「MUSIC spectrum: 」で始まる 1 行 が MUSIC スペクトルになる. これは PERIOD パラメータで設定されたフレームごとに出力される. 例えば, PERIOD が 50, シフト長が 160, サンプリング周波数 16000 の場合, 50*160/16000 秒ごとに出力されることになる. 出力され る数値の角度範囲は, MIN DEG パラメータと MAX DEG パラメータで設定する. MIN DEG が-180 度, MAX DEG が+180 度である場合, 表示内容は-180 度から+175 度までの値が表示される. この場合, 0 度は 37 番めの数値になる. なお, 出力される間隔は 5 度固定である. MUSIC スペクトルを localizationMUSIC.txt へ出力する例は以下 > ./separation.n > localizationMUSIC.txt 出力された localizationMUSIC.txt から, 以下のコマンドでデータ部分だけを抽出できる. > grep ”MUSIC spectrum” localizationMUSIC.txt — cut -d” ” -f 3- > data.txt 抽出したデータ部分を gunplot では以下の様にコマンドを実行することでグラフ化できる. gnuplot> set pm3d gnuplot> set hidden3d gnuplot> set zrange[20:30] gnuplot> set xtics("-180" 0,"0" 36, "175" 71) gnuplot> splot "data.txt" matrix with lines 図 5.8 が話者が 30 度と 0 度の位置にいる状態で録音された音声を定位して得られる MUSIC スペクトルである. こ の MUSIC スペクトルでは, 適正な THRESH 値はおおよそ 25 前後であると判断できる. 34 図 5.8: MUSIC スペクトル 5.4 まとめ 音源定位を行うネットワークファイルを作成して, チューニングを行う手順について述べた. 音源分離に定位結果 は使用されるので, 音源分離をチューニングする前に音源定位のチューニングを行う. 35 第6章 HARK による音源分離 本章では flowdesigner を用いて, 音源分離ネットワークファイルを作成する. flowdesigner の使用法に関しては hark-document 3.3 節を参照すると良い. ここでは使用するネットワークファイルの構成のみ記載する. 続いて, その ネットワークファイルのパラメータチューニングをどう行うかについて述べる. 6.1 音源分離ネットワークファイルの作成 ネットワークファイルの作成 5.1 節で作成したネットワークファイルを修正して音源分離機能を追加する. 修正するのはサブネットワークのみ である. 修正後のサブネットワークが図 6.1 である. 図 6.1: サブネットワーク 実行 修正したネットワークファイルをファイル名 ghdss.n で保存する. 実行方法は, シェル上で以下の様に実行する. 36 > ./ghdss.n UINodeRepository::Scan() Scanning def /usr/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 /Robovie/common/AMATRIX-Robovie-20101102-2 as HARK format. 72 directions, 1 ranges, 8 microphones, 512 points done Source 0 is created. Source 1 is created. Source 2 is created. NF = 257NSrc = 72NMic = 8 Date = 2010/11/02 Location = Robot = ArrayType = Creator = name Memo = Source 1 is removed. Source 2 is removed. Source 0 is removed. 6.2 HRLE を使用した音源分離ネットワークファイルの作成 ネットワークファイルの作成 6.1 節で作成したネットワークファイルを修正して HRLE の機能を追加する. 修正するのはサブネットワークのみ である. 修正後のサブネットワークが図 6.2 である. 実行 修正したネットワークファイルをファイル名 hrle.n で保存する. 実行方法は, シェル上で以下の様に実行する. 37 図 6.2: サブネットワーク > ./hrle.n UINodeRepository::Scan() Scanning def /usr/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 /Robovie/common/AMATRIX-Robovie-20101102-2 as HARK format. 72 directions, 1 ranges, 8 microphones, 512 points done Source 0 is created. Source 1 is created. Source 2 is created. NF = 257NSrc = 72NMic = 8 Date = 2010/11/02 Location = Robot = ArrayType = Creator = name Memo = HPostv4 Initialized... Initialize finished Elapsed (s) = 0 Source 1 is removed. Source 2 is removed. Source 0 is removed. 38 音源分離のチューニング 6.3 音源分離のチューニングは以下の手順で行う. 音源定位結果が分離に使用されるので, 音源分離チューニングは音 源定位のチューニン後に行う. また, 音源分離結果は特徴量抽出に使用されるので, 音声認識チューニングを行う前 に行う. 1. 分離の動作確認 分離が正常かどうかを確認する. 2. マイクロホンでの簡単なチューニング マイクロホンの音声から分離音を生成し, 分離音を再生して確認しながら, 簡単なチューニングを行う. 3. 評価データによるチューニング 評価データを使用してパラメータの適正値を探す. 6.3.1 分離の動作確認 1 話者で Robovie-R2 に向けて声を出す. 分離音のファイルが生成されることを確認する. 作成されない, あるいは 作成されても音声を再生すると発話の音声が聞き取れない様であれば, ネットワークファイルが正しく構成されてい るかどうか確認する. 次に, 120 度程度離れて 2 話者で同時に発話して, 2 つの分離音が作成されることを確認する. 1 話者と同様に音声を再生して確認する. 分離音の周波数特性の時間的変化を見ることでも分離の精度を判断できる. 分離音は, Signed int 16bit ,little Endian の raw ファイルであるため, 音声を確認する際は, 再生時に再生形式を指定 するか, wav 形式などへ変換してから再生する. 以下に audacity で再生する方法と, wav 形式へ変換する方法を説明 する. audacity による分離音の再生方法 ファイルを開く際にサンプリング周波数等を指定する必要がある. ここではその手順を説明する. メニューバーで 「ファイル」をクリックし, 表示されるメニューから「取り込み」→「ロー (Raw) データの取込」を選択する. ファ イル名を指定するダイアログが表示されるので, ファイル名を指定する. Raw データの取込ダイアログ (図 6.3) が表 示されるので, サンプリング周波数を 16000 に設定して取込ボタンをクリックする. 図 6.3: audacity Raw データの取り込み画面 sox コマンドで分離音を wav 形式へ変換する方法 39 sox コマンドで分離音声ファイルを wav 形式へ変換することができる. オプション r はサンプリングレートを示し, 16000 を設定する. オプション c はチャンネル数を示し, 1 を設定する. input.sw ファイルは分離音ファイル. 変換後 の wav ファイル名は output.wav とした実行例は以下である. > audacity filename sox -r 16000 -c 1 input.sw output.wav 分離音の周波数特性の時間的変化 分離音の周波数特性の時間的変化を見ることで分離の状態を確認することができる. 図 6.4, 6.5, 6.6 は 3 つ単語発 話のスペクトログラムである. これらをそれぞれ 0 度, 60 度, 300 度の位置に発話者がいるとして, シミュレーション データを作成し, 分離を行った. 60 度位置の分離音のスペクトログラムが図 6.7 と図 6.8 である. 図 6.8 は図 6.7 の分 離音に HRLE を用いて後処理を行ったものである. 図 6.5 から 60 度位置の話者の発話は 0.8 秒で終了しているが, 図 6.8 と図 6.7 では, 発話終了後に図 6.4 と同様な周波数特性が現れていることが確認できる. これは分離されずに残っ た音声を示している. 6.3.2 マイクロホンでの簡単なチューニング マイクロホンで音声を収集して分離してみる. 2 話者で 120 度程度の間隔で分離し, 分離音を再生し確認する. 徐々 に話者間隔を狭めていき, 30 度程度まで狭める. 同様に 3 話者でも行い, 音声を再生し, 分離の精度を確認する. 以下 にチューニングのポイントをまとめる. GHDSS パラメータ (SS METHOD, LC CONST, LC METHOD ) について LC METHOD は幾何制約の手法を指定するパラメータであり, SS METHOD, LC METHOD は分離行列更新時の ステップサイズについてのパラメータである. 詳細は GHDSS モジュールが記されている hark-documant 6.3.5 節を 参照すると良い. これらパラーメータ設定について述べる. Robovie-R2 ではない別のロボットでの検証ではあるが, SS METHOD と LC METHOD が FIX の場合, 分離行列が発散して分離が正常に行われない現象が確認された. 特に 理由が無いのであればともに ADAPTIVE としておけば良い. LC CONST は FULL と DAIG どちらでも分離は安定 する場合が多い. 両方の設定で評価して, より分離音がきれいである方を選択すれば良い. 判断できない様であれば DIAG にする. HRLE パラメータ Lx について HRLE モジュールについては, hark-document 6.3.6 節に詳細が記されている. HRLE は定常ノイズを推定して除去 するモジュールである. Lx パラメータはノイズの割り合いを示している. 60 度間隔で並んだ 3 話者の評価データに SN6 で白色ノイズを加えた音声用意し, Lx パラメータに 0, 0.24, 0.6, 0.9 を設定して分離を 4 回行なった. 60 度の位 置の話者の分離音のスペクトログラムが, 図 6.10, 6.11, 6.12, 6.13 である. Lx 設定値が増えるにつれ, 白色ノイズが薄 れていることが確認できる. 40 6.3.3 評価データによるチューニング マイクロホンでのチューニングでは評価データが少いため, 適正な設定値が定まったと判断できない. マイクロホ ンではなくシミュレーションにより評価データを作成してチューニングを行う. 音声ファイル名とパラメータ値を引 数で指定できる様にネットワークファイルを修正し, スクリプトを使用してパラメータを変更しながら, 評価データ の音源分離を行う. Robovie-R2 を動作させる実環境に近い評価データを作成する. 評価データには想定される話者数 で想定される発話を用意すると良い. さらに想定されるノイズを加えて作成する. マイクロホンでのチューニングで 確定したパラメータ値を含め, 可能な限り詳細かつ広い範囲にパラメータを変更して分離を行い, 最適なパラメータ 値を探す. 6.4 まとめ 音源分離を行うネットワークファイルを作成して, チューニングを行う手順について述べた. 音声認識に分離結果 は使用されるので, 音声認識をチューニングする前に音源分離のチューニングを行う. 41 図 6.4: 0 度位置話者の発話 (クリーン音声) 図 6.5: 60 度位置話者の発話 (クリーン音声) 図 6.6: 300 度位置話者の発話 (クリーン音声) 42 図 6.7: 60 度位置話者の発話 (分離音 GHDSS) 図 6.8: 60 度位置話者の発話 (分離音 HRLE) 43 図 6.9: GHDSS パラメータ (SS METHOD, LC CONST, LC METHOD ) 図 6.10: HRLE Lx 設定値 0 での分離音 図 6.12: HRLE Lx 設定値 0.24 での分離音 図 6.11: HRLE Lx 設定値 0.6 での分離音 図 6.13: HRLE Lx 設定値 0.9 での分離音 44 第7章 HARK による音声認識 本章では flowdesigner を用いて, 音声認識ネットワークファイルを作成する. flowdesigner の使用法に関しては hark-document 3.3 節を参照すると良い. ここでは使用するネットワークファイルの構成のみ記載する. 続いて, その ネットワークファイルのパラメータチューニングをどう行うかについて述べる. 7.1 GHDSS による音声ファイルの音声認識処理 ネットワークファイルの作成 6.1 節で作成したネットワークファイルを修正して特徴量送信機能を追加する. 修正するのはサブネットワークの みである. 修正後のサブネットワークが図 7.1 である. 追加したモジュールの中で, 特徴量抽出部分は固定値なので表 7.1 に設定値を示す. 表 7.1: 特徴量抽出部分のパラメータ設定値 パラメータ名 型 設定値 MSLS Extraction FBANK COUNT int 13 NORMALIZATION MODE string SPECTRAL USE POWER bool true Delta FBANK COUNT int 14 FeatureRemover SELECTOR object <Vector<int> 13 > SpeechRecognitionSMNClient MFT ENABLED bool false HOST string 127.0.0.1 PORT int 5530 SOCKET ENABLED bool true 実行と認識 julius mft をモジュールモードで起動する. 45 図 7.1: サブネットワーク > julius mft -C jconffilename -input mfcnet -adport 5530 STAT: include config: jconf6s.julian STAT: loading plugins at ”/usr/lib/julius plugin”: STAT: file: calcmix heu.jpi #0 [Gaussian calculation plugin for Julius.(ADD MASK TO HEU)] STAT: file: calcmix beam.jpi #1 [Gaussian calculation plugin for Julius.(ADD MASK TO BEAM)] STAT: file: calcmix none.jpi #2 [Gaussian calculation plugin for Julius.(ADD MASK TO NONE)] STAT: file: calcmix safe.jpi #3 [Gaussian calculation plugin for Julius.(ADD MASK TO SAFE)] STAT: file: mfcnet.jpi #4 [Feature vector input plugin for Julius.(MFCNET)] STAT: 5 files loaded STAT: jconf successfully finalized STAT: *** loading AM00 default -略 Input stream: input type = feature vector sequence input source = plugin zero frames stripping = on reject short input = off ———————– System Information end ———————– —— ### read waveform input waiting connection... 46 julius mft が待機状態になったら, waiting connection と表示される. この表示を確認して, 作成したネットワークファ イルを起動する. > ./ghdss.n UINodeRepository::Scan() Scanning def /usr/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 /Robovie/common/AMATRIX-Robovie-20101102-2 as HARK format. 72 directions, 1 ranges, 8 microphones, 512 points done Source 0 is created. Source 1 is created. Source 2 is created. NF = 257NSrc = 72NMic = 8 Date = 2010/11/02 Location = Robot = ArrayType = Creator = name Memo = Source 1 is removed. Source 2 is removed. Source 0 is removed. <Vector<ObjectRef> <Source <x 0.965926 00.258819 > <power 40.4732 > <id 0 > > > 7.2 HRLE による音声ファイルの音声認識処理 ネットワークファイルの作成 6.2 節で作成したネットワークファイルを修正して特徴量送信機能を追加する. 修正するのはサブネットワークの みである. 修正後のサブネットワークが図 7.2 である. 追加したモジュールのなかで, 特徴量抽出部分は固定値なので 表 7.1 に設定値を示す. 47 図 7.2: サブネットワーク 48 実行と認識 julius mft をモジュールモードで起動で起動する. > julius mft -C jconffilename -input mfcnet -adport 5530 julius mft が待機状態になったら, 作成したネットワークファイルを起動する. > ./hrle.n UINodeRepository::Scan() Scanning def /usr/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 /Robovie/common/AMATRIX-Robovie-20101102-2 as HARK format. 72 directions, 1 ranges, 8 microphones, 512 points done Source 0 is created. Source 1 is created. Source 2 is created. NF = 257NSrc = 72NMic = 8 Date = 2010/11/02 Location = Robot = ArrayType = Creator = name Memo = HPostv4 Initialized... Initialize finished Elapsed (s) = 0 Source 1 is removed. Source 2 is removed. Source 0 is removed. <Vector<ObjectRef> <Source <x 0.965926 00.258819 > <power 40.4732 > <id 0 > > > 49 7.3 音声認識のチューニング 音声認識のチューニングは以下の手順で行う. 音源分離結果が特徴量抽出に使用されるので, 音源分離チューニン グを行った後に行う. 1. 音声認識の動作確認 音声認識が正常かどうかを確認する. 2. マイクロホンでの簡単なチューニング マイクロホンからの音声を認識させ, 認識結果を確認しながら, 簡単なチューニングを行う. 3. 評価データによるチューニング 評価データを使用してパラメータの適正値を探す. 7.3.1 音声認識の動作確認 音声認識が正常かどうかを確認する. 分離音 1 つを処理した julius の出力結果を以下に記す. sentence1 から始まる 1 行が認識結果である. <s> と </s> で囲まれた認識結果が発話内容と一致することを確認する. また, source id から 始まる行にある, azimuth 値は音源が最初に定位された方向角度を表す. 話者の位置と一致することを確認する. 定位 された音源すべてが音声認識されるので, 誤った音源定位があると, 1 発話に対して複数の認識結果が出力されるこ ともありる. 誤った定位が多い場合は, 5 章に従い音源定位のチューニングを行う. julius 出力結果 Stat: server-client: connect from 127.0.0.1 forked process [27621] handles this request source_id = 3, azimuth = 0.000000, elevation = 15.000000, sec = 1291689172, usec = 254336 ### Recognition: 1st pass (LR beam) read_count < 0, read_count=-1, veclen=54 pass1_best: <s> ikioi </s> pass1_best_wordseq: 0 2 1 pass1_best_phonemeseq: silB | i k i o i | silE pass1_best_score: 539.935486 ### Recognition: 2nd pass (RL heuristic best-first) STAT: 00 _default: 141 generated, 141 pushed, 4 nodes popped in 132 sentence1: <s> ikioi </s> wseq1: 0 2 1 phseq1: silB | i k i o i | silE cmscore1: 1.000 0.712 1.000 score1: 539.935425 connection end ERROR: an error occured while recognition, terminate stream waiting connection... 50 7.3.2 マイクロホンでの簡単なチューニング マイクロホンで音声を収集して音声認識を行う. 1 話者でまず認識精度を確認する. 次に 120 度程離れた 2 話者で 同時に発話し認識結果が正しいことを確認する. 徐々に話者角度を狭めて認識精度を確認する. 同様に 3 話者でも行 う. だだし経験上, 3 話者の音声認識をチューニングすることはかなり難しい. 3 話者のチューニングは 90 度間隔や 60 度間隔など広い間隔でのチューニングにとどめる. 以下にチューニングするパラメータをまとめる. WhiteNoiseAdder 設定値のチューニング 特徴量抽出前に白色ノイズを分離音に加えることで, 分離後の処理 (HRLE, PostFilter) による分離音の歪みの影響 を減らすことができる. 白色ノイズは, WhiteNoiseAdder モジュールで加える. 接続例を図 7.3 に示す. 図 7.4 と図 7.5 は, 音素バランス単語の音声認識を行い, 認識結果の正解率の変化を図示したものである. 横軸は WhiteNoiseAdder 設定値を示し, 0 から 600 まで変更した. 評価データに SN18 で白色ノイズを加えて音声認識させ た結果が図 7.4 である. 評価データに SN6 で白色ノイズを加えて音声認識させた結果が, 図 7.5 である. 図 7.4 では, 50 から 100 が最適値である. 一方, 図 7.5 では, 100 から 300 が最適値である. この様に条件により WhiteNoiseAdder 設定値は大きく変る. 図 7.3: WhiteNoiseAdder モジュール 7.3.3 評価データによるチューニング マイクロホンでのチューニングでは評価データが少いため, 適正な設定値が定まったと判断できない. マイクロホ ンではなくシミュレーションにより評価データを作成してチューニングを行う. 音声ファイル名とパラメータ値を引 数で指定できる様にネットワークファイルを修正し, スクリプトを使用してパラメータを変更しながら, 評価データ の音声認識を行う. Robovie-R2 を動作させる実環境に近い評価データを作成する. 評価データには想定される話者数 で想定される発話を用意すると良い. さらに想定されるノイズを加えて作成する. マイクロホンでのチューニングで 確定したパラメータ値を含め, 可能な限り詳細かつ広い範囲にパラメータを変更して認識を行い, 最適なパラメータ 値を探す. 認識処理する順に, 評価データの発話内容の一覧を用意し, julius が出力する認識結果と比較を行う. 一致すれば正 しい認識. 一致しなければ誤った認識としてその数をそれぞれ集計し, より高い正解率となるパラメータを最適値と する. ここでは, julius の出力結果と評価データの発話内容とを比較する方法を説明する. 51 julius の出力結果と評価データの発話内容とを比較する方法 チューニングするパラメータと処理する評価データを引数で設定できる様にし, スクリプト言語などで, 評価デー タとパラメータを変更しながら繰り返し音声ファイルを処理することで行う. その結果得られた結果を集計し, 最も 高い認識結果を出した設定値を最適値として採用する. スクリプトに詳しいならば, これらスクリプトを作成するこ とは容易である. しかし回避が難しい問題があるので, その回避策についてここで説明する. その問題とは, 発話数と 順序が正解データと一致するとは限らないという問題である. A 氏, B 氏の 2 話者が同時に発話した評価データを作 成して評価を行った場合を考える. HARK が接続できる julius は 1 つであるため, 認識結果の順序は定位された順に なり事前に知ることはできない. 認識結果は, A 氏 → B 氏 の順で出力されることもあるが, B 氏 → A 氏 の順で出力 されることもある. また, 検出される音源の数を事前に知ることはできない. 検出される音源数が 2 つより多いある いは 2 つより少ない場合がある. A 氏のみ定位され, B 氏が定位されない場合は A 氏の認識結果しか出力されない. また, A,B 氏の発話だけでなくノイズを 1 つ音源として検知すると, 合計 3 つの認識結果が出力される. これらの理 由で単純に正解データの一覧と比較することは出来ない. そこでこの問題を回避する方法を説明する. • 誰の認識結果なのか分からない問題 話者位置が事前に分かっている場合は, 方向から発話内容が判断できる. そこで方向ごとに音声認識を行い, 方 向と発話内容を対応付ける. SourceSelectorByDirection モジュールは水平角度で範囲を指定してその範囲以外 の定位結果を消去するモジュールである. このモジュールを使用することで, その方向範囲の音源のみ音声認 識処理を行う. • 発話以外の音源も定位される問題 認識処理の際はそのときの定位結果を SaveSourceLocation モジュールを使用して保存. プログラムを作成して その定位結果から音源数を取得する. 音源数と認識結果数は 1 対 1 に対応するため, 音源の数と同数の認識結 果がその方向の初話者の認識結果とすれば良い. 認識結果に正解が含まれれば音声認識は成功と判断できる. 7.3.4 音響モデルによるチューニング 音響モデルを作成する際の学習データによって, 認識精度の向上が期待できる. ノイズのない音声から特徴量を抽 出して作成して学習データとした音響モデルより, 分離を行った後の音声, 話者位置を変えて作成したシミュレーショ ンデータを分離した音声など様々なデータで学習したほうが高い認識精度となる. 音響モデル作成する手順について は hark-cookbook 1.1 節マルチコンディション学習の節を参照. 図 7.7 と図 7.8 は, 音素バランス単語の音声認識を行い, 認識結果の正解率の変化を図示したものである. 音響モデ ルの学習データは, 分離した音声に HRLE で後処理を行った分離音を含んでいる. 図 7.7 は評価データに SN 比 18 で ノイズを加え, 図 7.8 では評価データに SN 比 6 でノイズを加えた. 図 7.4 と図 7.7 は音響モデル以外は同じ条件である. 同様に図 7.5 と図 7.8 も音響モデル以外は同じ条件である. 図 7.4 では最大 75%台であった単語正解率が図 7.7 では単語正解率の最大が 85%台へ上っている. 同様に図 7.5 では最 大 55%台であった単語正解率が図 7.8 では単語正解率の最大が 75%台へ上っている. 7.4 まとめ 特徴量抽出を行うネットワークファイルを作成して音声認識を行う手順について述べた. またチューニングを行う 手順について述べた. チューニングは音源定位 → 音源分離 → 音声認識の順で行うのが基本であるが, 音声認識が上 手くいかない場合は, 分離音の状態を確認し, 音源分離を再度チューニングしてみることも有用である. 52 図 7.4: 単語正解率 SN18 (clean 音声を学習に使用した音響を使用) 図 7.5: 単語正解率 SN6 (clean 音声を学習に使用した音響を使用) 53 図 7.6: SourceIntervalExtender の配置図 54 図 7.7: 単語正解率 SN18 (HRLE を使用した分離音を学習に使用した音響モデルを使用) 図 7.8: 単語正解率 SN6 (HRLE を使用した分離音を学習に使用した音響モデルを使用) 55 第8章 付録 本章では検証で得た知見についてまとめる. 本検証では音素バランス単語の認識正解率で認識精度を比較した. こ こで得られたパラメータ最適値などの知見は, 条件によってかわるものである. しかし検証はチューニング作業とほ ぼ同じ手順で行われるので, チューニング作業等の参考として付録に添付する. 8.1 単語正解率計算 音素バランス単語を各話者が同時に発話した評価データを作成し, それを認識させて認識結果を収集した. 単語正 解率は話者の位置が既知であるため, 話者位置を中心として左右 20 度, つまり 40 度の範囲にある音源の認識結果が 正解であれば, 正解とした. もし, 40 度の範囲に複数の音源を認識して複数の認識結果が出た場合は, そのなかに 1 個 以上正解があれば認識結果は正解となる. 単語正解率 = 認識正解数 × 100 評価データ数 (8.1) 評価データとして 3 話者同時発話のシミュレーションデータを作成して使用. 発話内容は ATR 音素バランス単語 216 個を使用しその中から異なる 3 単語とした. 話者は, 話者オープン (音響モデル学習で使用した話者で評価する場合) の場合は女性 3 人 (f115,f116,f117) と男性 3 人 (m115,m116,m117) の 2 組を使用, 話者クローズド (音響モデル学習で 使用していない話者で評価) は女性 3 人 (f101.f102,f103) と男性 3 人 (m101,m102,m103) の 2 組を使用した. 話者位 置は Robovie-R2 正面から反時計回りに 0 度, 60 度, 300 度の位置に配置した. 8.2 GHDSS パラメータ表記 (AFA, ADA) 検証において GHDSS のパラメータを表 8.1 にある 2 組の設定を行った. 本節以降は, これら設定条件を表に従っ て, ADA, AFA と略記する. 8.3 話者オープンによる評価と話者クローズドによる評価の差 評価において使用する話者は, 音響モデル学習に使用している話者ではない方が, 実環境に近いのでより正しい評 価になると指摘を受けた. そこで,音響モデル学習で使用した話者で評価する場合(話者オープン)と, 音響モデル 学習で使用していない話者で評価する場合(話者クローズド)でどの程度, 差が出るかを検証した. 表 8.1: GHDSS 設定値 AFA,ADA パラメータ AFA ADA SS MHOD ADAPTIVE ADAPTIVE LC CONST FULL DIAG LC METHOD ADAPTIVE ADAPTIVE 56 項目名 表 8.2: 評価条件 WhiteNoiseAdder 設定値 分離手法 wn 100 HRLE 100 HRLE + GHDSS wn 0 HRLE 0 HRLE + GHDSS wn 0 GHDSS 0 GHDSS 分離手法は, GHDSS のみ, GHDSS+HRLE の 2 組を使用した. GHDSS+HRLE には分離後処理による歪み影響を消す ため WhiteNoiseAdder ノードを使用した条件でも単語正解率を求めた. GHDSS のパラメータ SS MHOD, LC CONST, LC METHOD の設定は表 8.1 にある組み合わせについて検証した. 図 8.1, 図 8.2. は話者オープン (open) と話者ク ローズド (closed) での単語正解率の比較結果である. これらから以下のことが分かる. 1. すべての条件において, 話者オープンは話者クローズドより単語正解率が下がった. 2. 単語正解率が最も下がったのは GHDSS のパラメータが AFA で wn 0 HRLE の場合. 話者オープンが話者ク ローズドより 4.8%低い. 話者クローズドでの評価は, 話者オープンに比べて 1 から 2%程度高くなった. また影響の大きい場合は, 約 5%程 度も高くなる可能性がある. 以上から, 評価は話者オープンで行うべきである. 図 8.1: 単語正解率平均 (ADA) 8.4 分離後の WhiteNoise 付加について 分離音に PostFilter, HRLE などの後処理を加える場合には, WhiteNoiseAdder モジュールを使用して, 白色ノイズ を加えることで後処理による影響を抑えることができる. しかし, 加える白色ノイズを大きくしすぎると, 単語正解 率は下がると考えられる. 適正値の存在範囲についてその傾向を調べる. 傾向とは, 白色ノイズの大きさを横軸にと り, 単語正解率を縦軸にとった場合, 極値をとる箇所がどの様に現れるかということである. 57 図 8.2: 単語正解率平均 (AFA) 分離手法で HRLE を用いた場合についてその効果を検証する. WhiteNoiseAdder 設定値 0,100,400 について, 単語 正解率を求める. 音響モデルは clean と WN400 を使用する. clean はクリーン音声のみを学習に使用した音響モデル. WN400 は分離音に WhiteNoiseAdder で 400 を設定してノイズを加えた音声とクリーン音声を使用して学習した音 響モデルである. 学習に使用した音声により差が出る可能性があるので 2 個の音響モデルを検証に使用する. 音響モデル (clean, WN400, Robovie20101007) と WhiteNoiseAdder 設定値 0,100,400 について単語正解率を計算し た結果が図 8.3 である. Robovie20101007 は 2 話者様に HRI で作成された音響モデルなので, 参考までとする. 単語正解率の高い順から, WhiteNoiseAdder 設定値は 100, 0, 400 となった. これにより, 分離音への白色ノイズ 付加は認識精度を上げること, 並びに白色ノイズを加えすぎると認識精度が下がることが確かめられた. 音響モデ ル clean, WN400 ともにグラフの形状から 0-100 の範囲に適正値があると考えられる. それを調べるため, 詳細に WhiteNoiseAdder を変更し, 単語正解率を求めた. 結果は次節. 8.5 WhiteNoiseAdder 設定値適正値について WhiteNoiseAdder 適正値を調べるため WhiteNoiseAdder を 0, 50, 100, 150, 200, 300, 400 にして認識精度の変化を 調べた. 単語正解率の極値がどの様に現れるかを検証する. 分離手法は, GHDSS+HRLE を使用した. 節 8.4 では GHDSS のみの条件でも検証したが, 本節では検証しない. なぜなら, 分離後の後処理がないため白色ノイズを付加することに意味がないからである. GHDSS のパラメータ SS MHOD, LC CONST, LC METHOD の設定は表 8.1 にある組み合わせについて検証した. 音響モデルの違いによ る差があるかどうかを検証するため, clean と Robovie20101007 を使用. clean はクリーン音声のみを学習に使用した 音響モデル. Robovie20101007 は HRI で 2 話者用に作成されたものである. 評価データとして 3 話者同時発話のシミュレーションデータを作成して使用. 図 8.4 は, 分離を行う GHDSS モ ジュールの設定値 ADA, AFA と音響モデル clean, Robovie20101007 の組み合わせについて単語正解率を求めた結果 である. これらから以下のことが分る. 58 図 8.3: 音響モデル, WhiteNoiseAdder 設定値変更 1. 2つの音響モデル共に WhiteNoiseAdder 設定値が 0 の場合は AFA よりも ADA の方が単語正解率が高くその 差が約 9%と大きい. WhiteNoiseAdder 設定値が 0 より大きい場合は逆に AFA の方が ADA より単語正解率が 高い. しかしその差は 5%以下である. 2. すべての条件でグラフの極値はほぼ1つである. 3. 音響モデル clean では 50 で最も高い単語正解率となった. 音響モデル Robovie20101007 では, 50 と 200 の間で ほぼ横ばいとなった. WhiteNoiseAdder 設定値が 0 の条件では, ADA, AFA ともに単語正解率は低く WhiteNoiseAdder において 0 を設 定する意味はない. 0 以上に設定する場合は, ADA,AFA ともに差は小さくどちらを使用しても差はあまりでない. WhiteNoiseAdder の適正値を探す場合は, WhiteNoiseAdder 設定値の極値は 1 つであるといえるので, 想定範囲を詳 細にすべて精査する必要はない. 適当な WhiteNoiseAdder 設定値で単語正解率を求め, どの点で収束するかを推測す れば良い. 本検証では音響モデルによらず, WhiteNoiseAdder 設定値の適正値は 50 となった. ただし, 評価データに ノイズはないので評価データによっては適正値は変る可能性はある. 8.6 HRI で 2 話者用に作成された n ファイルと音響モデルの評価 1. 評価内容 HRI で 2 話者用に作成された n ファイルと音響モデルを使用し HRI と同じ結果が出るかを確認した. 評価デー タは 2 話 (ノイズなし), 1 話者+ノイズ+音楽雑音, 1 話者+ノイズ 2. 結果 結果は図 8.5. 2 話 (ノイズなし) と 1 話者+ノイズ (-48dB) はほぼ同じ結果が出た, 1 話者+ノイズ (-48dB)+音楽 雑音は 32%ほど低い結果となった, これは, 音楽雑音の位置等が異なるためと考えられる. 59 図 8.4: WhiteNoiseAdder 設定値変更 (詳細) 図 8.5: ExGHDSS Post Nfbank music HR460.n 評価 60 8.7 4 分離手法の比較 本評価以降は, 定位を localizeMusic を使用して評価する. これまでは ConstantLocalization を使用していた. 1. 評価内容 HRLE, PostFilter, GHDSS, MFM(Missing Feature Mask) の単語正解率比較を行った. 2. 結果 結果は図 8.6. HRLE が最も高い結果となった. 図 8.6: 分離手法変更 8.8 音響モデル Robovie20101007-hrle-wn100 の評価 (WhiteNoiseAdder 設定値 変更) 1. 評価内容 HRI より WhiteNoiseAdder が 400 の場合において平均 85%の単語正解率となる音響モデルが送付されたので その評価を行った. 2. 結果 結果は図 8.7. WhiteNoiseAdder では 82%前後の結果となり, HRI の検証より低い結果となった. 評価に使用し た n ファイルは HRI で評価時に使用された n ファイルと設定が異なるため, HRI の n ファイルを使用して再 度検証予定. なお, WhiteNoiseAdder=200 で 86%の単語正解率が出ており, これが現在, 最も高い単語正解率で ある. 8.9 HRLE による分離評価 (WhiteNoiseAdder, HRLE-Lx 変更) 1. 評価内容 WhiteNoiseAdder と HRLE-Lx の適正値を評価した. 61 図 8.7: WhiteNoiseAdder 変更 音響モデル Robovie20101007-hrle-wn100 使用 2. 結果 結果は図 8.8. 評価データにノイズを加えなかったので, Lx の値が 0.05 から 0.27 の単語正解率がほぼ変化な かった. 0.27 以上では発話が抑圧されるので, 単語正解率が下がったと考えられる. 今後は WhiteNoiseAdder を 詳細に変更, また評価データにノイズを加えた状態での評価を行う. 図 8.8: WhiteNoiseAdder, HRLE-Lx 変更 62