HARKの設計思想

ロボット聴覚ソフトウエアHARKの設計思想を以下にまとめる.

  1. 入力から音源定位・音源分離・音声認識までの総合機能の提供: ロボットに装備するマイクロフォンからの入力,マルチチャネル信号処理による 音源定位,音源分離,雑音抑制,分離音認識にわたる総合性能の保証,

  2. ロボットの形状への対応: ユーザの要求するマイク配置への対応と信号処理への組込,

  3. マルチチャネルA/D 装置への対応: 価格帯・機能により多様なマルチチャネルA/D装置をサポート,

  4. 最適な音響処理モジュールの提供と助言: 信号処理アルゴリズムはそれぞれアルゴリズムが有効な前提を置いており,同一機能に対して複数のアルゴリズムを開発し,その使用経験を通じて最適なモジュールを提供,

  5. 実時間処理: 音を通じたインタラクションや挙動を行うためには不可欠である.

このような設計思想の下に,2008年4月にHARK 0.1.7をオープンソースとして公開し, 開発者自身での改良,ユーザからのフィードバックの反映,バグフィックス, ドキュメントの充実などを通じてHARK 1.0.0 プレリリースを2009年11月に公開し, 確定版 HARK 1.0.0 を2010年10月に公開予定である. 以下では,「HARK 1.0.0」は「確定版 HARK 1.0.0」を指す. HARK 1.0.0 の主たる新機能は以下の通りである

  1. 音源分離の新規実装による音源分離の高性能化・ロバスト化,

  2. 比較的複雑なロボット形状への信号処理レベルでの対応,

  3. ロボットの定常雑音を抑制する単純な自己生成音抑制機能,

  4. 移動音源を見据えた音源定位・音源分離法の開発,

  5. 音源定位・音源分離に関するパラメータ数の削減とそれらの詳細設定機能,

  6. 新音声特徴量の開発と音声認識向上のための機能,

  7. 設定データ可視化,及び,作成ツールの提供,

  8. ミドルウエアFlowDesignerの操作性の向上.

\includegraphics[width=0.6\linewidth ]{fig/Intro/Stack.eps}
: ロボット聴覚ソフトウエアHARKとミドルウエアFlowDesigner,OSとの関係

HARK は,図#.#.#に示すように, 音声認識部(Julius) やサポートツールを除き, FlowDesigner [2] をミドルウエアとして用いている.

#.#.#から分かるように,Linux 系のOSしかサポート されていない.この1つの理由は,複数のマルチチャネルA/D装置をサポートする ためにALSA (Advanced Linux Sound Architecture) という API を 使用しているためである.最近 PortAudio がWindows系で利用される ようになっているので,PortAudio を使用した HARK も開発中である.

\includegraphics[width=.95\linewidth ]{fig/Intro/FlowDesignerNetwork.eps}
: HARKを用いた典型的なロボット聴覚のFlowDesigner上でのモジュール構成

ミドルウエア FlowDesigner

ロボット聴覚では,音源定位データを基に音源分離し,分離した音声に対して 音声認識を行うことが多い. 各処理は,アルゴリズムが部分的に置換できるよう複数モジュールで構成する 方が柔軟である.このため,効率のよいモジュール間統合が可能なミドルウェ アの導入が不可欠である.しかし,統合するモジュール数が多くなると,モ ジュール間接続の総オーバヘッドが増大し,実時間性が損なわれる. モジュール間接続時にデータのシリアライズを必要とするCORBA (Common Object Request Broker Architecture) のような一般的な枠組みでは こうした問題への対応は難しい. 実際,HARK の各モジュールでは,同じ時間フレームであれば,同じ音響データ を用いて処理を行う.この音響データを各モジュールがいちいちメモリコピー を行って使っていたのでは,速度的にもメモリ効率的にも不利である.

このような問題に対応できるミドルウエアとして, 我々は,データフロー指向のGUI開発環境である FlowDesigner [2] を採用した. FlowDesigner は, CORBA等 汎用的にモジュール統合に用いることが可能な枠組みと 比較して,処理が高速で軽い.

FlowDesigner は,単一コンピュータ内の利用を前提とすることで 1, 高速・軽量なモジュール統合を実現したデータフロー指向のGUI開発環境を備えた フリー(LGPL/GPL)のミドルウエアである.FlowDesigner では,各モジュールは C++ のクラスとして実現される.これらのクラスは,共通のスーパークラスを 継承するため,モジュール間のインタフェースは自然と共通化される. モジュール間接続は,各クラスの特定メソッドの呼び出し(関数コール)で 実現されるため,オーバヘッドが小さい.データは,参照渡しやポインタで 受け渡されるため,前述の音響データのような場合でも,高速にかつ少ない リソースで処理できる.つまり,FlowDesigner の利用によって, モジュール間のデータ通信速度とモジュール再利用性の両立が可能である.

我々は,これまでの使用経験に基づき,メモリリーク等のバグに対処するとともに, 操作性の向上(主に属性設定部)を図った FlowDesigner も同時に公開している 2

\includegraphics[width=.7\linewidth ]{fig/Intro/GHDSSProperty2}
: GHDSS の属性設定画面の例
\includegraphics[width=.5\textwidth ]{fig/Intro/ASIMO-Robovie-ears.eps}
: 3種類のロボットの耳(マイクロフォン配置)

HARKを用いた典型的なロボット聴覚に対するFlowDesignerのネットワークを 図#.#.#に示す.ファイル入力によりマルチチャネル音響信 号を取得し,音源定位・音源分離を行う.得られた分離音から音響特徴量を抽出し, ミッシングフィーチャマスク (MFM) 生成を行い,これらを音声認識 (ASR) に 送る.各モジュールの属性は,属性設定画面で設定することがで きる(図#.#.#GHDSS の属性設定画面の例).

HARKで現在提供している HARK モジュールと外部ツールを 表 1.1 に示す. 次節では,各モジュールの概要をその設計方針とともに説明をする.

入力装置

HARK では複数のマイク(マイクアレイ)をロボットの耳として搭載して処理を行う. ロボットの耳の設置例を図4に示す.この例では,いずれも8チャネルのマイクアレイを 搭載しているが,HARK では,任意のチャネル数のマイクアレイが利用可能である. HARKがサポートするマルチチャネル A/D 変換装置は,下記の3種類である.

これらのA/D装置はいずれも16チャネル入力であるので,HARKでの内部パラメータを 変更すれば,16チャネル入力にも対応できる.ただし,処理速度は低下する. また,信号の表現法を24ビットで サンプリングしても,そのまま対応ができる.なお,HARKの想定するサンプリング レートは,16kHzであるので,48KHzサンプリングデータに対しては, ダウンサンプリングモジュールが用意されている.

マイクは,安価なピンマイクで構わないが, ゲイン不足解消のため,プリアンプがあった方がよい. RME社製からは OctaMic II が販売されている.ヤマハ製のマイクロフォンアンプの方が,収録音のノイズが少ないようである. TD-BD-16ADUSB や RASP は,プリアンプおよび, プラグインパワー対応の電源供給機能を有しているので,使い勝手がよい.

Footnotes

  1. コンピュータをまたいだ接続は,HARK における 音声認識との接続部のようにネットワーク接続用のモジュールを作成す ることで実現可能である.
  2. FlowDesignerのオリジナルは, http://flowdesigner.sourceforge.net/ から, FlowDesigner 0.9.0 の機能向上版は,http://winnie.kuis.kyoto-u.ac.jp/HARK/ からそれぞれダウンロードできる.