(58)【調査した分野】(Int.Cl.,DB名)
前記複数の候補角度の履歴の更新が、該履歴中のまだ更新されていないすべての候補角度のうち最小の位相歪みの候補角度を更新することを繰り返すことを含み、前記履歴中の候補角度の位相歪みとは、前記位相スペクトルとその候補角度に対応する理論的な値との間の誤差の指標である、請求項7記載のコンピューティング機械。
前記最小の位相歪みの候補角度の更新が、現在フレームについての候補角度のうち前記最小の位相歪みの候補角度と同様の角度をもつ候補角度を用いて更新することを含む、請求項8記載のコンピューティング機械。
【発明を実施するための形態】
【0012】
以下のセクションは、音源定位が実装できる例示的な動作環境を与える。
【0013】
図1を参照するに、可動ロボット100はマイクロホン102のアレイを含む。
【0014】
図1は可動ロボットとして示されているが、複数のマイクロホンの間の既知の空間的関係を維持するようマイクロホン102のアレイを支持できるいかなるオブジェクトも使用できる。可動ロボットでの音源定位の使用は、単に本技法が使用できる例示的な応用である。マイクロホン・アレイは、可動オブジェクトの代わりに一つまたは複数の静的なオブジェクトによって支持されることもできる。しかしながら、ロボットのような可動オブジェクトなら音源の判別された位置に応答して動かされることができる。
【0015】
図1は六個のマイクロホンを示しているが、マイクロホンの数および配位は
図1の構成に限定されない。アレイ内のマイクロホンの各対の間に既知の空間的関係があり、アレイが複数対のマイクロホンを含む限り、マイクロホンの任意の配位および数が使用されうる。本発明は使用されるマイクロホンの種類によって限定されない。複数のマイクロホンからの信号の規格化を避けるためには、各マイクロホン対の両方のマイクロホンは同じ型である。
【0016】
ある応用では、音源は人間の話者104であることができる。人間の話者は話すときに音106を生じる。他の音源が検出されることもできるが、本願では、ロボットが人間の話者と対話するよう設計されることができ、人間の話者についての位置の決定が、この対話における補助として使用できる。
【0017】
このコンテキストを与えられて、これから音源定位の例示的な実装について
図2〜
図5との関連でより詳細に述べる。
【0018】
図2において、これから音源200の位置がどのようにして決定できるかを述べる。音源200は音波202を生成する。音波は既知のレート(たとえば典型的な環境では340メートル毎秒)で進む。202a、202bおよび202cで示されるように、音波はマイクロホン204aおよび204bに向けて進み、異なる時刻に到着する。マイクロホン204aおよび204bはチャネル対の例である(本稿では「<c
a,c
b>」とラベル付けされる)。チャネル対<c
a,c
b>を与えられると、原点を通る基準線210と二つのマイクロホンを通る直線212との間の角度を表すグローバル角度
【0019】
【数1】
がある。基準線210および原点218は、マイクロホン・アレイのすべてのチャネル対について同じである。214で示されるようなチャネル対距離
【0020】
【数2】
は二つのマイクロホン間の幾何学的な距離を表す。音源定位は、音波源および原点218を通る直線と基準線210に垂直な直線との間の角度216
【0021】
【数3】
を計算することに関わる。この角度がどのように導出されるかについて、以下でより詳細に述べる。
【0022】
ここで
図3を参照するに、ここで音源定位の例示的な実装を記述するデータ流れ図について述べる。この実装は、マイクロホン・アレイ(図示せず)から入力オーディオ信号300を受領する。各マイクロホンは、Sサンプル毎秒のサンプリング・レートでサンプリングされたKビット・デジタル・オーディオ信号のようなオーディオ信号を提供する。Kについての好適な値は16であり、Sについての好適な値は16kHzである。こうして、八つのマイクロホンのマイクロホン・アレイは八チャネル入力オーディオ信号を与える。入力オーディオ信号はフレーム毎に処理される。ここで、フレームは128サンプルを含む。i番目のフレームにおけるc番目のチャネルの入力オーディオ信号は、x
c,i(n)と表される。ここで、n=0,1,…,N−1(N=128)、c=0,1,…,C−1(C=8)である。入力信号x
c,i(n)は処理されてi番目のフレームについての音到着の角度θ
iを生じる。
【0023】
前処理器〔プリプロセッサ〕302が入力オーディオ信号300を受領し、該信号に対して多様な動作を実行して該信号を解析のために準備する。
【0024】
そのような前処理は、DC除去フィルタを含むことができる。そのようなDC除去フィルタは、その後の処理のために非常に低い周波数での望ましくない成分を抑制するために使われる。そのようなフィルタの例示的な実装は一次有限インパルス応答(FIR)フィルタであり、入力信号はチャネルごとに処理される。フィルタの出力は
x'
c,i(n)=x
c,i(n)−0.97x
c,i(n−1)
として計算される。ここで、n=0,1,…,N−1、c=0,1,…,C−1であり、x
c,i(−1)は前のフレームにおける最後のサンプルである。すなわち、x
c,i(−1)=x
c,i-1(N−1)である。
【0025】
前処理のもう一つの例は、ハミング窓を適用することである。ハミング窓h(n)は前のフレームと現在のフレームの二つのフレームにまたがって乗算され、Cチャネルの窓掛けされた信号が生成される。
【0026】
【数4】
窓掛けされた信号x"
c,i(n)は2N個のサンプルを含む。
【0027】
ハミング窓を適用することにより、近傍スペクトル要素(neighborhood spectrum elements)の分離可能性が改善できる。それにより下記の位相解析のパフォーマンスがよくなる。
【0028】
前処理段の出力304、この例ではハミング窓の出力は、次いで、高速フーリエ変換(FFT)プロセッサ306に入力される。FFTプロセッサの出力は周波数領域データ308である。この例示的実装では、たとえば、サイズ2NをもつFFTがx"
c,i(n)に適用されて各チャネルについての周波数スペクトルX
c,i(k)の複素数値を得ることができる。鏡映属性のため、X
c,i(k)は、0,8000/K,…,8000Hzに対応する周波数ビンk=0,1,…,K(=N/2)の範囲に一意的な値をもつ。よって、その範囲内のスペクトルがその後の動作において処理される。
【0029】
周波数領域データ308は、後処理モジュール310によって示されるように、音声認識のような多様な応用のためにさらに後処理にかけられることができる。本発明はそのような後処理によって限定されないし、そのような後処理を必須とするものでもない。
【0030】
最後に、この例示的実装において、周波数領域データ308および入力信号300は、下記でより詳細に述べるような音源定位器312に入力されて、各フレームiについて、i番目のフレームについての音到着の角度θ
iが生成される。
【0031】
ここで
図4を参照するに、
図3の音源定位器312の例示的実装についてこれからより詳細に述べる。
【0032】
入力オーディオ信号400は活動〔アクティビティ〕検出器402に入力される。活動検出器はオーディオ信号が所与のフレームにおいてアクティブであるかどうかを示すデータを出力する。活動検出器の例示的実装は次のとおりである。
【0033】
i番目のフレームにおけるc番目のチャネルの対数エネルギーは
【0034】
【数5】
によって計算される。ここで、x
c,i(n)は対応するPCM入力である。最初の数フレームでは、E
c,iが累積され、その平均がノイズ・フロアE
c,iFloorを設定するために使われる。各チャネルのノイズ・フロアは、定期的に、過去数秒からの良好な候補で置換されるよう強制される。この初期段ののち、チャネル活動を決定するために、チャネルごとに次の条件が試験される。
【0035】
【数6】
換言すれば、活動度検出器402は、この実装では、i番目のフレームにおけるc番目のチャネルの対数エネルギーが当該チャネルのノイズ・フロアにオフセットを加えたものより大きいかどうかを判定する。この条件が真であれば、チャネル状態は「アクティブ」に設定され、そうでなければチャネル状態は「ポーズ」に設定される。次に、諸チャネル状態を組み合わせることによってフレーム状態が得られる。少なくとも三つなど数個のチャネルが「アクティブ」として検出されれば「アクティブ」に設定され、そうでなければフレーム状態は「ポーズ」に設定される。
【0036】
活動検出器402が404で判定されるところにより「ポーズ」フレーム状態を設定する場合、音定位器は第二の角度追跡器更新器414(後述)を使用し、そのフレームについて角度が「未検出」であることを返す。
【0037】
活動検出器402が404で判定されるところにより「アクティブ」フレーム状態を設定する場合は、位相解析器406がそれら複数のチャネルについての周波数領域データ(たとえば
図3の308)を処理して候補角度のリストを生成する。位相解析は、両チャネルにおいて状態がアクティブな、あらかじめ定義されたチャネル対を用いて実行される。たとえば、チャネル対c
aおよびc
bの相互パワースペクトルが
【0038】
【数7】
によって計算され、*は複素共役である。その位相スペクトルは
【0040】
チャネルc
aとc
bの間の最良のサンプル遅延は、理論的な値に対する最小位相歪みを求めて遅延範囲を探索することによって推定される:
【0041】
【数9】
上記において、二つのチャネルの遅延範囲L
<ca,cb>は
【0042】
【数10】
によって導出される。ここで、
【0044】
【数12】
は
図2との関連で上記したような二つのマイクロホン・チャネルの間の幾何学的な距離であり、N
Sはサンプリング・レート、たとえば16kHzであり、SSは音速(たとえば340メートル毎秒)である。上記の式において位相歪みを計算するために位相復元(phase unwrapping)が適用される。
【0045】
(
図2に示されるような二つのマイクロホンの間の仮想線に関して)鏡映関係にある二つの角度がτ
<ca,cb>から次のようにして導出される。
【0046】
【数13】
これらの角度はチャネル対<c
a,c
b>の位置に対してのものなので、チャネル対
【0047】
【数14】
のグローバル角度によって補償される:
【0048】
【数15】
上記の位相解析手順はあらかじめ定義された諸チャネル対について繰り返され、推定された角度およびその位相歪みをもつ候補の初期リストが得られる。このように、位相解析モジュール406の出力は位相歪みおよび候補角度のリストである。
【0049】
候補選択モジュール408は、選択された角度に向けて洗練するために候補角度のリストを処理する。このリストを洗練する多様な方法がある。たとえば、二つ以上の角度が同様であれば、すなわち互いから何らかの閾値範囲内であれば、それらの角度は、平均などにより、リスト中の一つの角度にマージされ、該一つの角度は割引された位相歪みε
min/Mをもつ。ここで、ε
minは諸角度のうち最小の位相歪みであり、Mは同様の角度の数である。この洗練では、孤立した角度は消去され、より普通に現れる角度がより小さな歪みを割り当てられる。結果として、歪みに基づいて角度を選択する後段の処理において、より普通に現れる角度が選択される可能性が高くなる。
【0050】
候補角度およびその位相歪みの洗練されたリストは、第一の角度追跡器更新モジュール410に渡される。このモジュールでは、時間を追った候補角度および位相歪みのリストが角度追跡リストに保持される。このリスト内の各エントリーは、
図5に示されるように、角度500、位相歪み502、存在スコア504、存在カウンタ506および更新状態508を含む。最初のアクティブなフレームについては、候補リストが角度追跡リストに挿入される。その後のアクティブなフレームについては、データは次のような仕方で処理される。
【0051】
まず、角度追跡リスト中で、零でない存在スコアをもちまだ更新されていないすべてのエントリーのうちからの最低位相歪みをもつエントリーが同定される。次に、候補リストにおいて、あらゆる候補のうちからの最低位相歪みをもち、角度が角度追跡リストからの前記同定されたエントリーと同様であるターゲット候補が見出される。そのような候補が見出された場合には、ターゲット・エントリー(θ
i,ε
i,δ
i)が、候補(θ,ε)により次のように更新される。
【0052】
角度 :θ
i=μ
θθ
i-1+(1−μ
θ)θ μ
θ:定数
位相歪み :ε
i=μ
εε
i-1+(1−μ
ε)ε μ
ε:定数
存在スコア:δ
i=max(δ
i-1+μ
δ,1.0) μ
δ:定数
見出されなかった場合には、前記候補から、
θ
i=θ、 ε
i=ε、 δ
i=δ
Init
として新たなエントリーが生成される。
【0053】
このプロセスは、角度追跡リストおよび候補リスト中のすべてのエントリーが評価されるまで続けられる。次に、上記の手順で更新されなかったエントリーは、歪みが増し存在スコアが減少するような仕方で更新される。具体的には、
θ
i=θ
i-1、 ε
i=μ'
εε
i-1、 δ
i=δ
i-1−μ
δ μ
ε:定数。
【0054】
存在スコアがある閾値を下回ったら、そのようなエントリーはリストから除去される。更新の最終ステップは、同様の角度をもつものをマージするためにすべてのエントリーを再びスキャンすることである。
【0055】
角度追跡リストを与えられると、フレームについての角度の最終選択は最終選択モジュール412によってなされる。たとえば、角度追跡リストから、次の基準を満たすエントリーが選択される。まず、存在スコアが角度追跡リスト中のエントリーの最大存在スコア以上であること。第二に、位相歪みが角度追跡リスト中のエントリーの最小位相歪み以下であること。第三に、候補選択モジュールから得られる最高ランクの候補角度と同様の角度をもつこと。このエントリーの存在カウンタがインクリメントされ、一方、他のエントリーの存在カウンタはデクリメントされる。カウンタは当該エントリーが最近の諸フレームにおいてどのくらいしばしば選択されているかを示す。エントリーのカウンタがある閾値を超えるとき、その角度θ
iは検出された角度として報告される。上記の条件を満たすエントリーがなければ、「未検出」が返される。
【0056】
最後に、追跡エントリー(tracking entries)をスキャンして先行する諸モジュールにおいて更新されなかったものを更新するために、第二の角度追跡器更新器414が角度追跡リストを処理する。更新公式は第一の角度追跡器更新において使われたものと同じであり、歪みは大きくなり、存在スコアは小さくなる。
【0057】
まとめると、
図6を参照するに、音源定位のプロセスは、マイクロホン・アレイ内のアクティブなチャネル対を同定すること(600)を含む。換言すれば、いくつかのマイクロホン、たとえば少なくとも三つのマイクロホンがアクティブである。マイクロホンからの信号は、フレームに分割することによって処理できる。各フレームはいくつかのサンプルを含む。このように、マイクロホン(またはチャネル)がアクティブであるかどうかは、フレームごとに判別できる。アクティブな各マイクロホンからの信号は変換されて、周波数領域データまたは周波数スペクトルが計算される(602)。アクティブな各チャネル対について、周波数領域データから候補角度が同定される(604)。アクティブなチャネル対について同定された候補角度のうちから角度が選択される(606)。
【0058】
これまでで例示的実装を記述したところで、そのようなシステムが動作するよう設計されるコンピューティング環境についてこれから述べる。以下の記述はこのシステムが実装できる好適なコンピューティング環境の簡単な一般的な記述を与えることを意図したものである。本システムは、数多くの汎用または特殊目的のコンピューティング・ハードウェア構成で実装できる。好適となりうるよく知られたコンピューティング装置の例は、これに限られないが、パーソナル・コンピュータ、サーバー・コンピュータ、ハンドヘルドまたはラップトップ装置(たとえばメディア・プレーヤー、ノートブック・コンピュータ、携帯電話、携帯情報端末、ボイス・レコーダー)、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セットトップボックス、ゲーム・コンソール、プログラム可能な消費者電子機器、ネットワークPC、ミニコンピュータ、メインフレーム・コンピュータ、上記のシステムもしくは装置のいずれかを含む分散式コンピューティング環境などを含む。
【0059】
図7は、好適なコンピューティング・システム環境の例を示す。コンピューティング・システム環境は、単に好適なコンピューティング環境の一例であり、そのようなコンピューティング環境のそのようなコンピューティング環境の使用もしくは機能についていかなる限定を示唆することも意図されていない。該コンピューティング環境はまた、例示的な動作環境において示されているコンポーネントの任意の一つまたは組み合わせに関するいかなる依存性も必要性ももつものと解釈されるべきではない。
【0060】
図7を参照するに、例示的なコンピューティング環境は、コンピューティング機械700のようなコンピューティング機械を含む。その最も基本的な構成では、コンピューティング機械700は典型的には少なくとも一つの処理ユニット702およびメモリ704を含む。コンピューティング装置は、複数の処理ユニットおよび/またはグラフィクス処理ユニット720のような追加的なコプロセシング・ユニットを含んでいてもよい。コンピューティング装置の厳密な構成および型に依存して、メモリ704は揮発性(RAMなど)、不揮発性(ROM、フラッシュ・メモリなど)または両者の何らかの組み合わせでありうる。このもっとも基本的な構成は
図7では波線706によって示されている。さらに、コンピューティング機械700は追加的な特徴/機能を有していてもよい。たとえば、コンピューティング機械700は、これに限られないが磁気的もしくは光学的ディスクもしくはテープを含む追加的な記憶部(リムーバブルおよび/または非リムーバブル)をも含んでいてもよい。そのような追加的な記憶部は
図7ではリムーバブル記憶708および非リムーバブル記憶710によって示されている。コンピュータ記憶媒体は、コンピュータ・プログラム命令、データ構造、プログラム・モジュールまたは他のデータのような情報の記憶のための任意の方法または技術で実装された、揮発性および不揮発性、リムーバブルおよび非リムーバブルな媒体を含む。メモリ704、リムーバブル記憶708および非リムーバブル記憶710はみなコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、これに限られないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)もしくは他の光学的記憶、磁気カセット、磁気テープ、磁気ディスク記憶もしくは他の磁気記憶装置または所望される情報を記憶するために使用されることができ、コンピューティング機械700によってアクセスされることができる他の任意の媒体を含む。そのような任意のコンピュータ記憶媒体はコンピューティング機械700の一部であってもよい。
【0061】
コンピューティング機械700は、装置が他の装置と通信することを許容する通信接続(単数または複数)712をも含んでいてもよい。通信接続712は通信媒体の例である。通信媒体は典型的には、コンピュータ・プログラム命令、データ構造、プログラム・モジュールまたは他のデータを、搬送波または他の転送機構のような変調されたデータ信号において搬送するものであり、任意の情報送達媒体を含む。用語「変調されたデータ信号」は、当該信号中に情報をエンコードしそれにより当該信号の受信装置の構成または状態を変えるような仕方で特性の一つまたは複数が設定または変更されている信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークまたは直接結線された接続のような有線媒体および音響、RF、赤外線および他の無線媒体のような無線媒体を含む。
【0062】
コンピューティング機械700は、ディスプレイ、キーボード、マウス、ペン、カメラ、タッチ入力装置などのようなさまざまな入力装置(単数または複数)714を有していてもよい。スピーカー、プリンターなどのような出力装置(単数または複数)716も含まれていてもよい。これらの装置すべては当技術分野においてよく知られており、ここでくどくどと論じる必要はない。
【0063】
本システムは、コンピューティング機械によって処理される、プログラム・モジュールのようなコンピュータによって実行可能な命令および/またはコンピュータによって解釈される命令を含むソフトウェアの一般的なコンテキストにおいて実装されてもよい。一般に、プログラム・モジュールは、処理ユニットによって処理されたときに処理ユニットに特定のタスクを実行するまたは特定の抽象的なデータ型を実装するよう命令するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。このシステムは、通信ネットワークを通じてリンクされている複数の遠隔の処理装置によってタスクが実行される分散式のコンピューティング環境において実施されてもよい。分散式のコンピューティング環境では、プログラム・モジュールは、メモリ記憶デバイスを含む、ローカルおよびリモートのコンピュータ記憶媒体に位置されていてもよい。
【0064】
付属の請求項の前提部における用語「製造物」「プロセス」「機械」「物質の組成」は、米国特許法第101条におけるこれらの用語の使用によって定義される特許可能な主題の範囲内にはいると見なされる主題に請求項を限定することが意図されている。
【0065】
本項に記載される上記の代替的な実施形態の任意のものまたは全部は、追加的なハイブリッド実施形態を形成するよう所望される任意の組み合わせにおいて使用されてもよい。付属の請求項において定義される主題は必ずしも上記の個別的な実装に限定されるものではないことは理解しておくべきである。上記の個別的な実装は単に例として開示されている。
いくつかの態様を記載しておく。
〔態様1〕
コンピュータ実装される方法であって:
複数対のマイクロホンからメモリに信号を受領する段階と;
前記マイクロホンからの信号を、いつ信号がアクティブであるかを識別するために処理する段階と;
前記信号についての周波数スペクトル・データを計算する段階と;
アクティブな信号の各対について、前記周波数スペクトル・データを使ってその対について候補角度を決定する段階と;
複数対のマイクロホンについての前記候補角度のうちから角度を選択する段階とを含む、
方法。
〔態様2〕
信号を受領する段階が各信号を複数のフレームとして受領することを含み、処理する段階、計算する段階、決定する段階および選択する段階がフレーム毎に実行される、態様1記載のコンピュータ実装される方法。
〔態様3〕
前記候補角度のうちから角度を選択する段階が、以前の候補角度についての情報を使って角度を選択することを含む、態様1記載のコンピュータ実装される方法。
〔態様4〕
選択する段階がさらに:
候補角度の履歴を複数フレームにわたって追跡する段階と;
前記履歴を、現在フレームからの候補角度を用いて更新する段階とを含む、
態様3記載のコンピュータ実装される方法。
〔態様5〕
メモリと;
複数対のマイクロホンから前記メモリに信号を受領する入力部と;
前記マイクロホンからの信号を、いつ信号がアクティブであるかを識別し、前記信号についての周波数スペクトル・データを計算するよう処理する処理ユニットとを有するコンピューティング機械であって:
前記処理ユニットはさらに、アクティブな信号の各対について、前記周波数スペクトル・データを使ってその対について候補角度を決定し、複数対のマイクロホンについての前記候補角度のうちから角度を選択するよう構成されている、
コンピューティング機械。
〔態様6〕
前記入力部が、各信号を複数のフレームとして受領して記憶し、前記処理ユニットが前記信号をフレーム毎に処理するよう構成される、態様5記載のコンピューティング機械。
〔態様7〕
前記メモリがさらに複数フレームにわたる候補角度の履歴を記憶し、前記処理ユニットが、前記履歴を、現在フレームからの候補角度を用いて更新するよう構成されている、態様5記載のコンピューティング機械。
〔態様8〕
前記履歴から選択される角度が、すべてのエントリーのうち最小の位相歪み以下の位相歪みをもつ、態様7記載のコンピューティング機械。
〔態様9〕
前記履歴から選択される角度が、当該フレームについて最高ランクの候補と同様の角度をもつ、態様8記載のコンピューティング機械。
〔態様10〕
コンピュータ記憶媒体と;
前記コンピュータ記憶媒体に記憶されたコンピュータ・プログラム命令を含む製造物であって、前記コンピュータ・プログラム命令は、処理装置によって処理されたときに、前記処理装置に:
複数対のマイクロホンからメモリに信号を受領する段階と;
前記マイクロホンからの信号を、いつ信号がアクティブであるかを識別するために処理する段階と;
前記信号についての周波数スペクトル・データを計算する段階と;
アクティブな信号の各対について、前記周波数スペクトル・データを使ってその対について候補角度を決定する段階と;
複数対のマイクロホンについての前記候補角度のうちから角度を選択する段階とを含むプロセスを実行するよう命令するものである、
製造物。