BeamAngleの詳細と活用方法
About
SoundSourceAngleがあれば音の発生方向が分かるのだから、BeamAngleは不要ではないのか、という疑問が生じることと思います。ここではBeamAngleがどのように利用されるのかについて解説します。
公式の記述
BeamAngleとSoundSourceAngleの違いは、公式には次のように記載されています。
- KinectAudioSource.SoundSourceAngle Property - msdn
- The sound source angle identifies the direction (not the location) of a sound source. The range of the angle is [-50, +50] degrees.
- SoundSourceAngleは-50~50度の間で発生した音の角度を検出します。角度であり、位置ではありません。
- The beam angle identifies a preferred direction for the sensor to listen.
- BeamAngleは(Kinect)"センサーが聴くために有効な角度"を識別します。
後に続く項目で"センサーが聴くために有効な角度"について解説します。
ビームフォーミング / Beamforming
"聴くために有効な角度"とは、ここでは音入力処理において特に有効な音が発生している角度のことを指します(※ここでは音声入力/音声認識の機能については解説していません)。例えば音入力処理を利用する機能の1つに音声認識があります。音声認識はノイズ(雑音)に非常に弱い処理です。音声認識の精度を向上させるには、ノイズを取り除く必要があります。複数マイクがある環境下で音声認識をする場合には、音の発生方向を推定することができます。したがって特にその方向からの音に集中して処理を行い、それ以外の方向から発生したと思われる音をノイズとして扱う、といったような処理ができます。この技術はビームフォーミング(Beamforming)と呼ばれます。
ビームフォーミングについて、厳密には指向性を考慮した処理技術のことです(多分)。
図で説明すると次のようになります。マイクが2つあって、それぞれは赤と緑の範囲の音を良く集音しているとします(※Kinectには4つのマイクが搭載されていますが)。音の発生方向が青い矢印の方向であると推定されるとき、赤い範囲を担当するマイクが集音した音の方が、緑のものに比べてノイズが少ないはずですね。これによって赤い範囲を担当するマイクから入力された音データを優先した処理、というものが実現できます。
ここでは分かりやすさのために音声認識を例に挙げましたが、単純にノイズの少ない音入力を行うためにもビームフォーミングは有効でしょう。またKinect以外にも複数のマイクが付いたデバイスとそれに対応するサウンドカードやソフトウェアが、この処理技術に対応していることがあります。
そもそも音に限らずビームフォーミングの技術を応用しているものは沢山あり、例えば最近(2013)では無線LAN機器などでも見かけることができます。 |
BeamAngleの活用
繰り返しになりますが、Kinectから取得できるBeamAngleの値が示すものは、音入力の際に特に有効な音として識別する音が発信された角度です。したがって音入力(音声認識など)を特に重要視する実装や設営を行うときには、BeamAngleに注意しなければいけません。例えば展示を目的としてKinectに搭載されたマイクによる音声認識を利用するとき、設営試験時などにBeamAngleをモニタリングするような環境を用意するべきでしょう。また後に続いて解説するBeamAngleModeプロパティをManualに設定することによって、特定の方向以外からの入力を遮断し、精度を向上させることも考えられます。
BeamAngleModeプロパティについて
BeamAngleを決定する方法がいくつか用意されています。KinectAudioSource.BeamAngleModeプロパティによって、BeamAngleの値を決定する方法を設定することができます。
以下は BeamAngleMode列挙型の翻訳と補足情報です。
- Automatic
- デフォルトの値です。センサーは最も強い音源の方向へ最適化するようにBeamAngleを設定します。これは音量が小さい場合や、背景のノイズが均一な方向(均一な量?)に広がっているときに利用します。
- Adaptive
- センサーは最も強い音源の方向へ最適化するようにBeamAngleを設定します。これは音量が大きい場合や、ノイズ(の音量?)が大きいときに利用します。
- ※Automaticとの精度比較はしていません。
- Manual
- ユーザがBeamAngleを任意の方向に設定します。
- 任意の方向は、AudioSource.ManualBeamAngleプロパティに設定します。
- BeamAngleはgetアクセサしか提供されない点に注意してください。
Manualを設定すると、SoundSourceAngleChangedイベントやBeamAngleChangedイベントが通知されず、またSoundSourceプロパティやBeamAngleプロパティの値も変更されずに常に0を示すようです。
Reference
- ビームフォーミング(Beamforming)についてのやさしい図解解説 - サウンドコントロール/ネットラジオ関連お役立ち情報
- 音声入力技術に関するビームフォーミングについて丁寧に解説されています。