(57)【要約】【課題】  相関関数行列ＲとベクトルＢとＣから構成される方程式Ｂ＝ＲＣをＣについて解くために膨大な演算量がかかることが問題であった。【解決手段】本発明では、方程式Ｂ＝ＲＣを相関関数行列とベクトルの掛け算の繰り返しにより解くために高速行列計算部を有する共役勾配法計算部を用いる。共役勾配法で大量に計算する必要がある相関関数行列とベクトルの掛け算が、畳み込み演算と類似することを利用して、高速行列計算部ではフーリエ変換した上で掛け算し、逆フーリエ変換する。また、行列の大きさと畳み込みの範囲とが整合するように切り出し部を備える。【選択図】図４
2006227152.tif 000002
【特許請求の範囲】
【請求項１】
行列とベクトルとの掛算を行なう計算装置であって、
行列Ｒ、小行列Ｒｉｊ、ベクトルＰ、要素ベクトルＰｊが、
【数１】
2006227152.tif 000012
と表現できる場合に、
ｎ＝−Ｌ＋１，−Ｌ＋２，・・・，０，・・・，Ｌ−２，Ｌ−１以外の前記小行列Ｒｉｊの各要素ｒｉｊ（ｎ）を０とする第１の切り出し部と、
前記行列Ｒの各要素ｒｉｊ（ｎ）をフーリエ変換してＦｒｉｊ（ｍ）を求める第１の高速フーリエ変換部と、
前記ベクトルＰの各要素ｐｊ（ｎ）をフーリエ変換してＦｐｊ（ｍ）を求める第２の高速フーリエ変換部と、
フーリエ変換された前記行列の要素Ｆｒｉｊ（ｍ）と前記ベクトルの要素Ｆｐｊ（ｍ）との積の和Ｆｄｉ（ｍ）を
【数２】
2006227152.tif 000013
とする計算部と、
前記積Ｆｄｉ（ｍ）を逆フーリエ変換してｄｉ（ｎ）を求める逆フーリエ変換部と、
前記行列Ｒと前記ベクトルＰとの積ＲＰであるベクトルＤを、
【数３】
2006227152.tif 000014
とするベクトル構成部と、
を備える計算装置。
【請求項２】
行列とベクトルとの掛算を行なう計算装置であって、
行列ＲとベクトルＰとが、
【数４】
2006227152.tif 000015
と表現できる場合に、
ｎ＝−Ｌ＋１，−Ｌ＋２，・・・，０，・・・，Ｌ−２，Ｌ−１以外の前記行列Ｒの各要素ｒ（ｎ）を０とする第１の切り出し部と、
前記行列Ｒの各要素ｒ（ｎ）をフーリエ変換してＦｒ（ｍ）を求める第１の高速フーリエ変換部と、
前記ベクトルＰの各要素ｐ（ｎ）をフーリエ変換してＦｐ（ｍ）を求める第２の高速フーリエ変換部と、
フーリエ変換された前記行列の要素Ｆｒ（ｍ）と前記ベクトルの要素Ｆｐ（ｍ）との積Ｆｄ（ｍ）を求める計算部と、
前記積Ｆｄ（ｍ）を逆フーリエ変換してｄ（ｎ）を求める逆フーリエ変換部と、
前記行列Ｒと前記ベクトルＰとの積ＲＰであるベクトルＤを、
【数５】
2006227152.tif 000016
とするベクトル構成部と、
を備える計算装置。
【請求項３】
請求項１または２記載の計算装置であって、
前記第１の高速フーリエ変換部で求めたフーリエ変換の結果を記録するＦＦＴ記録部と、
前記ＦＦＴ記録部に記録された第１の高速フーリエ変換部の結果を利用して計算を行なう前記計算部と、
を備える計算装置。
【請求項４】
２以上の収音信号を入力とし、雑音と残響とを抑圧する収音装置であって、
前記収音信号間の相関を求め、相関関数行列を出力する相関関数計算部と、
前記相関関数行列から共役勾配法により各収音信号に対するフィルタ係数を求める請求項１〜３のいずれかに記載された計算装置を有する共役勾配法計算部と、
前記収音信号ごとに対応する前記フィルタ係数を用いたフィルタリングを行なうフィルタ部と
２以上の前記フィルタ部によってフィルタリングされた収音信号を加算する加算部と、
を備える収音装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相関関数行列とベクトルとの積を高速で行なう計算装置と、その計算装置を用いて、雑音や残響のある環境の音声信号に対して雑音と残響を抑圧する信号処理を行ない、目的の音だけを抽出する技術に関する。
【背景技術】
【０００２】
近年、マルチメデイア技術の進歩に伴い、マイクロホンとスピーカを用いた拡声通話形態によるテレビ会議などの通信会議が普及してきている。その場合、複数のマイクロホンと複数のスピーカを用いた信号処理により音声品質を劣化させる騒音や残響音を抑圧し、目的とする音声のみを収音する装置などが開発されている。その中で行われる信号処理には多チャンネル信号を扱う大規模な行列演算が含まれており、リアルタイムで信号処理を行なうには高速でその行列演算を行なう必要があった。
従来、雑音抑圧、残響抑圧する技術として、特許文献１があった。以下に、この技術について簡単に説明する。図１のようにマイクロホンＮ個９５０−ｊ（ｊ＝１，・・・，Ｎ）を用いて目的音源とＮ−２個以下の雑音源が存在し、かつ部屋の残響がある場合の雑音と残響を抑圧する収音装置９００を考える。チャネル１のマイクロホン９５０−ｊが各マイクロホンの中で最も目的音源に近いとする。ここで、Ｎチャネルの各マイクロホン９５０−ｊからのＮ個の入力信号をＸｊ（ｎ）(ｊ=１，２，・・・，Ｎ)とし、各チャネルの信号に畳み込むＮ個の長さＬ（タップ数Ｌ）のフィルタのフィルタ係数をｃｉ（ｎ）(ｉ=１，・・・，Ｎ)とし、畳み込まれたＮ個の信号を加算部で加算した信号をｙ（ｎ）とする。
【０００３】
まず、相関関数計算部９１０において、各マイクロホンのＮ個の入力信号をＸｊ（ｎ）の区間ｎ＝０，・・・，Ｍ−１（少なくともＭ≧Ｌは満足するＭを、あらかじめ選定しておく。）から相関関数
【数６】
2006227152.tif 000003
ただし、ｌ＝−Ｍ＋１，・・・，０，・・・，Ｍ−１
を計算し、この相関関数を用いて相関関数行列Ｒを以下のように構成する。
【数７】
2006227152.tif 000004
【０００４】
次に、ブラインド逆フィルタ計算部９２０でフィルタ係数ｃｉ（ｎ）を求めるために、方程式Ｂ＝ＲＣをＣについて解く。ただし、Ｃはフィルタ係数ベクトルで、Ｎ個の長さＬのフィルタ係数ｃｉ（ｎ）から構成されるＮＬ元の列ベクトル
【数８】
2006227152.tif 000005
であり、Ｂは目標ベクトルで、ＮＬ元の列ベクトル
【数９】
2006227152.tif 000006
である。
【０００５】
次に、各チャネルに繋がったＮ個のフィルタ９３０−ｉ（ｉ=１，・・・，Ｎ）に求められたフィルタ係数ｃｉ（ｎ）を設定し各チャネルの信号に畳み込み演算を行ない出力する。加算部９４０では、フィルタ９３０−ｉの出力をすべて加算する。
【数１０】
2006227152.tif 000007
ここで、（×）は畳み込み演算を表す。
このようにして得られた処理結果ｙ（ｎ）は雑音や残響を抑圧し、目的信号だけを抽出したものとなる。
【特許文献１】特開２００２−６２９００号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来技術では、方程式Ｂ＝ＲＣをＣについて解くために膨大な演算量がかかることが問題であった。たとえば、方程式ガウス消去法を用いるとＮＬの３乗のオーダーの掛け算が必要となる。ＮＬ=１００００の場合にはおよそ１兆回の掛け算が必要となる。
【課題を解決するための手段】
【０００７】
ここでの問題を解決するための着眼点は、次の３点である。
（１）一般的な行列の高速演算法は存在しないので、相関関数行列の特徴を利用する。相関関数行列の特徴は、正定値対称行列であること、相関関数行列とベクトルの掛け算は畳み込みに近いことである。
（２）相関関数行列が正定値対称行列であることから、方程式を解くのに共役勾配法が利用できる。共役勾配法を利用することにより、方程式Ｂ＝ＲＣは、相関関数行列とベクトルの掛け算の繰り返しにより解くことができる。
（３）相関関数行列とベクトルの掛け算を畳み込み演算の組み合わせで実現するごとにより、ＦＦＴを利用可能となる。ただし、通常の畳み込みではないため、ＦＦＴの結果と行列の大きさとマッチングをとる必要がある。
上記、３点を利用して、問題を解決するための１つ目の手段は、方程式Ｂ＝ＲＣを相関関数行列とベクトルの掛け算の繰り返しにより解くために共役勾配法を用いる共役勾配法計算部(入力は相関関数ｒｉｊ（ｎ）、出力はフィルタ係数フィルタ係数ｃｉ（ｎ）)を備えることである。
【０００８】
２つ目の手段は、高速行列計算部(入力は相関関数ｒｉｊ（ｎ）とベクトル要素ｐｊ（ｎ）、出力はその掛け算結果のベクトル要素ｄｉ（ｎ）)である。共役勾配法で大量に計算する必要がある相関関数行列とベクトルの掛け算が、畳み込み演算と類似することを利用して、相関関数ｒｉｊ（ｎ）とベクトル要素ｐｊ（ｎ）をフーリエ変換した上で掛け算し、逆フーリエ変換する。また、通常の畳み込みではないので、行列の大きさと畳み込みの範囲とが整合するように切り出し部を備えた。
【発明の効果】
【０００９】
本発明では大規模な行列とベクトルの掛け算において、通常は掛け算がＮＬ×ＮＬ回のオーダーが必要であるが、高速行列計算部を利用することにより、３ＮＬ×（３log２３ＮＬ＋１）程度の掛け算（ＮＬ×log２ＮＬのオーダー）で計算でき、従来技術に比べ計算の大幅な高速化が実現できる。
また、共役勾配法計算部と高速行列計算部は、一般的な相関関数を用いたフィルタ係数計算にも応用でき、そこにおいても大幅な高速化を実現できる。
【発明を実施するための最良の形態】
【００１０】
以下の説明では、重複説明を避けるため、同じ機能を有する部分には同じ参照番号を付し、説明を省略する。
［第１実施形態］
図２に収音装置の機能構成を示す。図１に示した従来の収音装置９００と異なる部分は、共役勾配法計算部１２０のみである。共役勾配法計算部１２０は、高速行列計算部１２１を有している。共役勾配法計算部１２０の処理フローを図３に示す。
共役勾配法計算部では、ステップＳ２０の高速行列計算部１２１での処理以外は、通常の共役勾配法と同じ処理であり、以下の手順で処理が行なわれる。
【００１１】
ステップＳ１０
相関関数計算部９１０から相関関数行列Ｒが入力されると、初期値としてＣ（１）を適当な値に定め、Ｐ（１）＝Ｑ（１）＝Ｂ−ＲＣ（１）とする。ここで、ＢはＮＬ元の列ベクトル
【数１１】
2006227152.tif 000008
であり、ＰとＱは中間変数ベクトルである。また、上付きのカッコ内は繰り返し計算の回数を示す。
【００１２】
ステップＳ２０
ＲＰ（ｋ）を、高速行列計算部１２１で計算する。上記のように、ｋは繰り返し計算の回数を示している。ＲはＮＬ×ＮＬの大きさの行列であり、Ｐ（ｋ）はＮＬの大きさのベクトルである。したがって、通常の方法でＲＰ（ｋ）を計算するためには、ＮＬ×ＮＬ回の掛け算が必要であり、しかも繰り返し計算ごとに必要となるため、このステップの計算量を削減することが処理時間短縮には重要である。そこで、後述する本発明の高速行列計算部１２１を用いて計算量を削減している。
【００１３】
ステップＳ３０
ａ（ｋ）＝（Ｐ（ｋ），Ｑ（ｋ））／（Ｐ（ｋ），ＲＰ（ｋ））とする。ここで、（  ，  ）は内積を示す。
ステップＳ４０
Ｃ（ｋ＋１）＝Ｃ（ｋ）＋ａ（ｋ）Ｐ（ｋ）
Ｑ（ｋ＋１）＝Ｑ（ｋ）−ａ（ｋ）ＲＰ（ｋ）
とする。
【００１４】
ステップＳ５０
β（ｋ）＝（Ｑ（ｋ＋１），ＲＰ（ｋ））／（Ｐ（ｋ），ＲＰ（ｋ））
とする。
ステップＳ６０
Ｐ（ｋ＋１）＝Ｑ（ｋ＋１）＋β（ｋ）Ｐ（ｋ）
とする。
ステップＳ７０
繰り返し条件を満足する場合には、繰り返し計算を終了してフィルタ係数ベクトルＣを出力する。また、繰り返し条件を満たさない場合には、ステップＳ８０に進む。ここで、繰り返し条件としては、例えば実験などによってあらかじめ収束する繰り返し回数を調査した上で繰り返し回数を設定する方法、計算誤差を示す値であるＱ（ｋ）のノルムがあらかじめ設定した値よりも小さくなったことを確認する方法、計算誤差を示す値であるＱ（ｋ）のノルムとＱ（ｋ＋１）のノルムの差があらかじめ設定した値よりも小さくなったこと（繰り返し計算をしても誤差が減らなくなったこと）を確認する方法などがある。なお、理論上、繰り返し回数の最大値はＮＬである。
【００１５】
ステップＳ８０
ステップＳ７０で繰り返し条件を満足しなかった場合、繰り返し回数ｋを、ｋ＝ｋ＋１とし、ステップＳ２０に戻る。
上記のステップＳ２０で行なう高速行列計算部１２１の機能構成例を図４に示す。高速行列計算部１２１への入力信号は、相関関数行列の要素ｒｉｊ（ｎ）（ｉ＝１，・・・，Ｎ、ｊ＝１，・・・，Ｎ、ｎ＝−Ｍ＋１，・・・，０，・・・，Ｍ−１）とベクトルｐｊ（ｎ）（ｊ＝１，・・・，Ｎ、ｎ＝０，・・・，Ｌ−１）である。前記のようにＭは少なくともＭ≧Ｌを満足する値であり、相関関数を求める際に使用する窓の幅に相当する。
【００１６】
相関関数行列ＲはＮＬ×ＮＬの大きさのため、行列Ｒの要素として使われる範囲（ｎ＝−Ｌ＋１，・・・，０，・・・，Ｌ−１）だけを相関関数切り出し部１２１１ｉｊ（ｉ＝１，・・・，Ｎ、ｊ＝１，・・・，Ｎ）で切り出す。具体的な処理ではｎ＝−Ｌ＋１，・・・，０，・・・，Ｌ−１以外のｒｉｊ（ｎ）を０とする。
相関関数ＦＦＴ計算部１２１２ｉｊ（ｉ＝１，・・・，Ｎ、ｊ＝１，・・・，Ｎ）では、切り出された相関関数行列の要素ｒｉｊ（ｎ）を、Ｋポイントの高速フーリエ変換のため、ｒｉｊ（Ｋ＋ｎ）＝ｒｉｊ（ｎ）ただしｎ＝−Ｌ＋１，・・・，−１とする。次に相関関数ＦＦＴ計算部１２１２ｉｊ（ｉ＝１，・・・，Ｎ、ｊ＝１，・・・，Ｎ）でＫポイントの高速フーリエ変換されると、Ｆｒｉｊ（ｍ）（ｉ＝１，・・・，Ｎ、ｊ＝１，・・・，Ｎ、ｍ＝０，・・・，Ｋ−１）が得られる。ただし、Ｋは、Ｋ≧３Ｌ−２である。
【００１７】
ベクトルの要素ｐｊ（ｎ）もベクトル要素ＦＦＴ計算部１２１３ｊ（ｊ＝１，・・・，Ｎ）でＫポイントの高速フーリエ変換され、Ｆｐｊ（ｍ）（ｊ＝１，・・・，Ｎ、ｍ＝０，・・・，Ｋ−１）が出力される。ただし、ｎ＝０，…，Ｌ−１以外のｐｊ（ｎ）は０として計算する。
【００１８】
行列ベクトル積和部１２１４ｉ（ｉ＝１，・・・，Ｎ）では、フーリエ変換後の相関関数行列の要素Ｆｒｉｊ（ｍ）とベクトルの要素Ｆｐｊ（ｍ）の掛け算を行い、すべてのｊについて加算して出力Ｆｄｉ（ｍ）（ｉ＝１，・・・，Ｎ、ｍ＝０，・・・，Ｋ−１）を得る。処理内容を式で表すと、
【数１２】
2006227152.tif 000009
となる。
逆ＦＦＴ計算部１２１５ｉ（ｉ＝１，・・・，Ｎ）では、Ｆｄｉ（ｍ）からＫポイントの逆高速フーリエ変換によりｄｉ（ｎ）（ｉ＝１，・・・，Ｎ、ｎ＝０，・・・，Ｋ−１）を得る。
【００１９】
相関関数行列の要素ｒｉｊ（ｎ）（ｉ＝１，・・・，Ｎ、ｊ＝１，・・・，Ｎ、ｎ＝−Ｍ＋１，・・・，０，・・・，Ｍ−１）とベクトルｐｊ（ｎ）（ｊ＝１，・・・，Ｎ、ｎ＝０，・・・，Ｌ−１）との積であるベクトルｄｉ（ｎ）のｎの範囲はｎ＝０，・・・，Ｌ−１なので、ベクトル要素切り出し部１２１６ｉ（ｉ＝１，・・・，Ｎ）では、逆ＦＦＴ計算部１２１５ｉの出力ｄｉ（ｎ）（ｉ＝１，・・・，Ｎ、ｎ＝０，・・・，Ｋ−１）からｎ＝０，・・・，Ｌ−１の範囲のｄｉ（ｎ）を切り出す。
ベクトル再構成部１２１７では、ベクトル要素切り出し部１２１６ｉで切り出したｄｉ（ｎ）（ｉ＝１，・・・，Ｎ、ｎ＝０，・・・，Ｌ−１）からベクトルＤを
【数１３】
2006227152.tif 000010
として再構築し、出力する。
【００２０】
図５に高速行列計算部１２１の処理フローを示す。
行列とベクトルの掛け算は、通常であればＮＬ×ＮＬ回のオーダーで行なう必要があるが、本発明ではフーリエ変換後の値の積はフーリエ変換前の値の畳み込み演算に相当することを利用して、計算量ＮＬ×ｌｏｇ２ＮＬのオーダーで可能とすることができる。
［変形例１］
【００２１】
図６に第１の実施形態の変形例である高速行列計算部１２１’の機能構成を示す。図４との違いは相関関数ＦＦＴ記憶部１２１８を備えている点である。相関関数Ｒは繰り返し計算によって変化しないので、１回目の繰り返し時に計算した値を相関関数ＦＦＴ記録部１２１８に記録しておき、２回目以降の繰り返し計算では、相関関数ＦＦＴ記録部１２１８に記録されたＦｒｉｊ（ｍ）（ｉ＝１，・・・，Ｎ、ｊ＝１，・・・，Ｎ、ｍ＝０，・・・，Ｋ−１）を用いて行列ベクトル積和部１２１４ｉ（ｉ＝１，・・・，Ｎ）の処理を行なう。これにより相関関数ＦＦＴ計算部１２１２ｉｊ（ｉ＝１，・・・，Ｎ、ｊ＝１，・・・，Ｎ）での掛け算の回数であるｌｏｇ２ＮＬ程度の掛け算の回数を繰り返し回数分だけ少なくすることができる。  
【００２２】
なお、第１実施形態およびその変形例１に示した高速行列計算部１２１と１２１’は、行列ＲとベクトルＰとの積が畳み込み演算に類似する性質を利用して、計算量を大幅に削減している。したがって、収音装置に限らず、行列ＲとベクトルＰとが、
【数１４】
2006227152.tif 000011
と表現できる場合のＲＰの計算に広く適用できる。
【００２３】
さらに、行列Ｒが正定値対称行列の場合に、高速行列計算部１２１または１２１’を有する共役勾配法計算部１２０は、行列ＲとベクトルＢとＣから構成される方程式Ｂ＝ＲＣをＣについて解くときに広く適用できる。
【図面の簡単な説明】
【００２４】
【図１】従来の収音装置の機能構成を示す図。
【図２】本発明の収音装置の機能構成を示す図。
【図３】共役勾配法計算部１２０の処理フローを示す図。
【図４】高速行列計算部１２１の機能構成例を示す図。
【図５】高速行列計算部１２１の処理フローを示す図。
【図６】高速行列計算部１２１’の機能構成を示す図。
【図１】
2006227152.tif 000017
【図２】
2006227152.tif 000018
【図３】
2006227152.tif 000019
【図４】
2006227152.tif 000020
【図５】
2006227152.tif 000021
【図６】
2006227152.tif 000022