1.2 HARKの設計思想

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

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

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

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

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

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

このような設計思想の下に,オープンソースとしてHARKの公開を行ってきた. 改良,機能向上,バグフィックスには,hark-support に寄せられたユーザからの声が多く反映されている.

時期

バージョン

主な機能

2008年4月

HARK 0.1.7

オープンソースとして公開開始

2009年11月

HARK 1.0.0 プレリリース

改良,バグフィックス,ドキュメント充実化

2010年10月

HARK 1.0.0 確定版

バグフィックス,周辺ツール提供など

2012年2月

HARK 1.1

機能向上,64bit サポート,ROSサポート,バグフィックス

2013年3月

HARK 1.2

3D音源定位,Windowsサポート,英語音響モデル提供,バグフィックス

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

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

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

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

1.2.1 ミドルウエア 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/GHDSSProperty3}
Figure 1.3: GHDSS の属性設定画面の例
\includegraphics[width=.5\textwidth ]{fig/Intro/ASIMO-Robovie-ears.eps}
Figure 1.4: 3種類のロボットの耳(マイクロフォン配置)

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

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

1.2.2 入力装置

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

これらのA/D装置は入力チャネル数が異なるが, HARKでの内部パラメータを 変更することで対応できる.ただし,チャネル数が増加すれば,処理速度は低下する. また,量子化ビット数は16ビット, 24ビットの両方に対応している. HARKの想定するサンプリング レートは,16kHzであるので,48KHzサンプリングデータに対しては, ダウンサンプリングモジュールが用意されている. なお,東京エレクトロンデバイス社製 TD-BD-16ADUSB(USBインタフェース)は, サポートするカーネルのバージョンが古いため,HARK 1.2 からサポート対象外となっている.

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

Footnotes

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