説明

信号処理装置、信号処理方法及びコンピュータプログラム

【課題】独立ベクトル分析を用いた信号処理において、信号を分離するための分離行列を安定して短時間に求めることが可能な信号処理装置、信号処理方法を提供する。
【解決手段】信号処理装置1は、複数の原信号が混合されたものに基づく複数の第1の周波数帯域信号から、各原信号に対応付けられた複数の第2の周波数帯域信号を生成するための分離行列を求める分離行列算出部23を有し、分離行列算出部23は、関数値を低減させるほど同じ原信号に対応付けられた第2の周波数帯域信号をまとめたベクトルが統計的に独立になる目的関数を設定し、現在の分離行列に対して目的関数と同じ関数値を取り、全ての分離行列に対して目的関数の関数値以上の関数値を取り、且つ関数値が最小となる分離行列を求めることが可能な補助関数を設定する処理と、補助関数の関数値が最小となる分離行列により現在の分離行列を更新する処理と、を繰り返して分離行列を求める。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、信号処理装置、信号処理方法及びコンピュータプログラムに関し、特に、複数の原信号が混合された信号を分離する信号処理装置、信号処理方法及びコンピュータプログラムに関する。
【背景技術】
【0002】
ブラインド音源分離技術は、複数のマイクロフォンから入力した複数の音源からの音声信号を音源方向等の情報が未知の状態で分離する技術である。近年、特にマイクロフォン数が音源数以上の条件を対象とする優決定ブラインド音源分離技術の研究が進められている。
【0003】
優決定ブラインド音源分離を実現するための技術として独立成分分析が知られている。独立成分分析は、各音源からの音声信号が相互に統計的に独立であるという仮定のもと、音声信号を分離信号に分離する技術である。この独立成分分析では、一般に、音声信号を一旦周波数領域に変換して、所定の周波数帯域毎に、分離信号が統計的に独立になるように音声信号を分離する。その場合、音源毎に音声信号を復元するためには、各周波数帯域の分離信号を各音源に対応させて並べ替えるというパーミュテーション問題を解決する必要があった。しかしながら、分離信号の並べ替えには残響、音のはね返り等を考慮する必要があるため、パーミュテーション問題を解決することは容易ではなかった。
【0004】
そこで、近年、各周波数帯域の分離信号をまとめたベクトルが相互に統計的に独立になるように音声信号を分離する独立ベクトル分析が研究されている(非特許文献1〜3を参照)。独立ベクトル分析では、音声信号を周波数領域に変換し、全ての周波数帯域をベクトルとしてまとめ、各ベクトルが相互に統計的に独立になるようにする。そのために、音声信号を分離する分離行列をパラメータとし、且つ最小化することにより各ベクトルが相互に統計的に独立になる独立ベクトル分析の目的関数を設定し、その目的関数が最小になるように分離行列を学習することにより最適な分離行列を求める。この独立ベクトル分析では、周波数帯域間の相関に基づいて音声信号を分離することにより、パーミュテーション問題を回避することができる。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】A. Hiroe, “Solution of Permutation Problem in Frequency Domain ICA Using Multivariate Probability Density Functions,”Proc. ICA, pp. 601-608, 2006.
【非特許文献2】T. Kim, T. Eltoft, and T.-W. Lee, “Independent Vector Analysis: An Extension of ICA to Multivariate Components,” Proc. ICA, pp. 165-172, 2006.
【非特許文献3】T. Kim, H. T. Attias, S.-Y. Lee, and T.-W. Lee, “Blind Source Separation Exploiting Higher-order Frequency Dependencies,”IEEE Trans. ASLP, vol. 15, no. 1, pp. 70-79, 2007.
【発明の概要】
【発明が解決しようとする課題】
【0006】
独立ベクトル分析の目的関数の最適化問題の解法として、一般に自然勾配法が用いられている。自然勾配法では、目的関数の勾配の情報を用いて、目的関数の変数を降下方向に所定のステップサイズだけすすめる処理を反復することにより最適解を求める。しかし、自然勾配法では、ステップサイズが小さすぎると反復処理に多大な時間を要し、ステップサイズが大きすぎると反復計算の途中で解が発散して解が求まらない場合があるという問題があった。
【0007】
そこで、本発明の目的は、独立ベクトル分析を用いた信号処理において、信号を分離するための分離行列を安定して短時間に求めることが可能な信号処理装置、信号処理方法及びそのような信号処理方法をコンピュータに実行させるコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【0008】
本発明に係る信号処理装置は、複数の原信号の数と同数であって且つそれぞれが複数の原信号が混合されたものに基づく複数の第1の時系列信号を取得する信号取得部と、複数の第1の時系列信号のそれぞれを周波数変換して複数の周波数帯域に分割することにより、複数の第1の時系列信号のそれぞれに対して複数の第1の周波数帯域信号を生成する周波数変換部と、第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号から、複数の原信号のそれぞれに対応付けられた複数の第2の周波数帯域信号を生成するための分離行列を複数の周波数帯域のそれぞれについて求める分離行列算出部と、第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号及び同じ周波数帯域の分離行列を用いて複数の第2の周波数帯域信号を生成する信号変換部と、複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号を逆周波数変換して第2の時系列信号を生成する逆周波数変換部と、第2の時系列信号を外部に出力するインターフェース部と、を有し、分離行列算出部は、複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号をまとめたベクトルをパラメータとし、且つ関数値を低減させるほどベクトルのそれぞれが統計的に独立になる目的関数を設定し、複数の第1の周波数帯域信号及び各周波数帯域の分離行列の各成分をパラメータとし、現在の各周波数帯域の分離行列に対して目的関数と同じ関数値を取り、全ての各周波数帯域の分離行列に対して目的関数の関数値以上の関数値を取り、且つ関数値が最小となる各周波数帯域の分離行列を求めることが可能な補助関数を設定する処理と、補助関数の関数値が最小となる各周波数帯域の分離行列を求めて、当該各周波数帯域の分離行列により現在の各周波数帯域の分離行列を更新する処理と、を交互に繰り返すことによりベクトルのそれぞれが統計的により独立になる各周波数帯域の分離行列を求める。
【0009】
さらに、本発明に係る信号処理装置において、分離行列算出部は、補助関数を設定する一回の処理において、複数の原信号のうち一つの原信号に対応する、補助関数の補助変数を更新し、分離行列を更新する一回の処理において、その一つの原信号に対応する、分離行列の成分を更新することが好ましい。
【0010】
さらに、本発明に係る信号処理装置において、分離行列算出部は、複数の原信号の数をKとし、複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応するベクトルをykとし、周波数帯域ωに対応する分離行列を次の行列W(ω)とし、
【数1】

次の関数J(W)を目的関数とし、
【数2】

次の関数Q(W、V)を補助関数とし、
【数3】

k(ω)を次の式により更新する処理と、
【数4】

k(ω)を次の式により更新する処理と、
【数5】

をkが1からKまで順次繰り返すことによりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、ベクトルのそれぞれが統計的により独立になる各周波数帯域の分離行列を求めることが好ましい。
【0011】
または、本発明に係る信号処理装置において、分離行列算出部は、補助関数を設定する一回の処理において、複数の原信号のうち二つの原信号に対応する、補助関数の補助変数を更新し、分離行列を更新する一回の処理において、その二つの原信号に対応する、分離行列の成分を更新することが好ましい。
【0012】
さらに、本発明に係る信号処理装置において、分離行列算出部は、複数の原信号の数をKとし、複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応するベクトルをykとし、周波数帯域ωに対応する分離行列を次の行列W(ω)とし、
【数6】

次の関数J(W)を目的関数とし、
【数7】

次の関数Q(W、V)を補助関数とし、
【数8】

K=2である場合に、Vk(ω)をk=1、2について次の式により更新する処理と、
【数9】

k(ω)をk=1、2について次の式により更新する処理と、
【数10】

によりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、ベクトルのそれぞれが統計的により独立になる各周波数帯域の分離行列を求めることが好ましい。
【0013】
または、本発明に係る信号処理装置において、分離行列算出部は、複数の原信号の数をKとし、複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応するベクトルをykとし、周波数帯域ωに対応する分離行列を次の行列W(ω)とし、
【数11】

次の関数J(W)を目的関数とし、
【数12】

次の関数Q(W、V)を補助関数とし、
【数13】

k(ω)をk=m、n(1≦m≦K、1≦n≦K、m≠n)について次の式により更新する処理と、
【数14】

k(ω)をk=m、nについて次の式により更新する処理と、
【数15】

によりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、ベクトルのそれぞれが統計的により独立になる各周波数帯域の分離行列を求めることが好ましい。
【0014】
また、本発明に係る信号処理方法は、複数の原信号の数と同数であって且つそれぞれが複数の原信号が混合されたものに基づく複数の第1の時系列信号を取得するステップと、複数の第1の時系列信号のそれぞれを周波数変換して複数の周波数帯域に分割することにより、複数の第1の時系列信号のそれぞれに対して複数の第1の周波数帯域信号を生成するステップと、第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号から、複数の原信号のそれぞれに対応付けられた複数の第2の周波数帯域信号を生成するための分離行列を複数の周波数帯域のそれぞれについて求めるステップと、第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号及び同じ周波数帯域の分離行列を用いて複数の第2の周波数帯域信号を生成するステップと、複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号を逆周波数変換して第2の時系列信号を生成するステップと、第2の時系列信号を外部に出力するステップと、を含み、分離行列を求めるステップにおいて、複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号をまとめたベクトルをパラメータとし、且つ関数値を低減させるほどベクトルのそれぞれが統計的に独立になる目的関数を設定し、複数の第1の周波数帯域信号及び各周波数帯域の分離行列の各成分をパラメータとし、現在の各周波数帯域の分離行列に対して目的関数と同じ関数値を取り、全ての各周波数帯域の分離行列に対して目的関数の関数値以上の関数値を取り、且つ関数値が最小となる各周波数帯域の分離行列を求めることが可能な補助関数を設定する処理と、補助関数の関数値が最小となる各周波数帯域の分離行列を求めて、当該各周波数帯域の分離行列により現在の各周波数帯域の分離行列を更新する処理と、を交互に繰り返すことによりベクトルのそれぞれが統計的により独立になる各周波数帯域の分離行列を求める。
【0015】
さらに、本発明に係る信号処理方法において、分離行列を求めるステップにおいて、補助関数を設定する一回の処理で、複数の原信号のうち一つの原信号に対応する、補助関数の補助変数を更新し、分離行列を更新する一回の処理で、その一つの原信号に対応する、分離行列の成分を更新することが好ましい。
【0016】
さらに、本発明に係る信号処理方法において、分離行列を求めるステップにおいて、複数の原信号の数をKとし、複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応するベクトルをykとし、周波数帯域ωに対応する分離行列を次の行列W(ω)とし、
【数16】

次の関数J(W)を目的関数とし、
【数17】

次の関数Q(W、V)を補助関数とし、
【数18】

k(ω)を次の式により更新する処理と、
【数19】

k(ω)を次の式により更新する処理と、
【数20】

をkが1からKまで順次繰り返すことによりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、ベクトルのそれぞれが統計的により独立になる各周波数帯域の分離行列を求めることが好ましい。
【0017】
または、本発明に係る信号処理方法において、分離行列を求めるステップにおいて、補助関数を設定する一回の処理で、複数の原信号のうち二つの原信号に対応する、補助関数の補助変数を更新し、分離行列を更新する一回の処理で、二つの原信号に対応する、分離行列の成分を更新することが好ましい。
【0018】
さらに、本発明に係る信号処理方法において、分離行列を求めるステップにおいて、複数の原信号の数をKとし、複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応するベクトルをykとし、周波数帯域ωに対応する分離行列を次の行列W(ω)とし、
【数21】

次の関数J(W)を目的関数とし、
【数22】

次の関数Q(W、V)を補助関数とし、
【数23】

K=2である場合に、Vk(ω)をk=1、2について次の式により更新する処理と、
【数24】

k(ω)をk=1、2について次の式により更新する処理と、
【数25】

によりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、ベクトルのそれぞれが統計的により独立になる各周波数帯域の分離行列を求めることが好ましい。
【0019】
または、本発明に係る信号処理方法において、分離行列を求めるステップにおいて、複数の原信号の数をKとし、複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応するベクトルをykとし、周波数帯域ωに対応する分離行列を次の行列W(ω)とし、
【数26】

次の関数J(W)を目的関数とし、
【数27】

次の関数Q(W、V)を補助関数とし、
【数28】

k(ω)をk=m、n(1≦m≦K、1≦n≦K、m≠n)について次の式により更新する処理と、
【数29】

k(ω)をk=m、nについて次の式により更新する処理と、
【数30】

によりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、ベクトルのそれぞれが統計的により独立になる各周波数帯域の分離行列を求めることが好ましい。
【0020】
また、本発明に係るコンピュータプログラムは、複数の原信号の数と同数であって且つそれぞれが複数の原信号が混合されたものに基づく複数の第1の時系列信号を取得するステップと、複数の第1の時系列信号のそれぞれを周波数変換して複数の周波数帯域に分割することにより、複数の第1の時系列信号のそれぞれに対して複数の第1の周波数帯域信号を生成するステップと、第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号から、複数の原信号のそれぞれに対応付けられた複数の第2の周波数帯域信号を生成するための分離行列を複数の周波数帯域のそれぞれについて求めるステップと、第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号及び同じ周波数帯域の分離行列を用いて複数の第2の周波数帯域信号を生成するステップと、複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号を逆周波数変換して第2の時系列信号を生成するステップと、第2の時系列信号を外部に出力するステップと、をコンピュータに実行させ、分離行列を求めるステップにおいて、複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号をまとめたベクトルをパラメータとし、且つ関数値を低減させるほどベクトルのそれぞれが統計的に独立になる目的関数を設定し、複数の第1の周波数帯域信号及び各周波数帯域の分離行列の各成分をパラメータとし、現在の各周波数帯域の分離行列に対して目的関数と同じ関数値を取り、全ての各周波数帯域の分離行列に対して目的関数の関数値以上の関数値を取り、且つ関数値が最小となる各周波数帯域の分離行列を求めることが可能な補助関数を設定する処理と、補助関数の関数値が最小となる各周波数帯域の分離行列を求めて、当該各周波数帯域の分離行列により現在の各周波数帯域の分離行列を更新する処理と、を交互に繰り返すことによりベクトルのそれぞれが統計的により独立になる各周波数帯域の分離行列を求める。
【発明の効果】
【0021】
本発明によれば、独立ベクトル分析を用いた信号処理において、信号を分離するための分離行列を安定して短時間に求めることが可能な信号処理装置、信号処理方法及びそのような信号処理方法をコンピュータに実行させるコンピュータプログラムを提供することができる。
【図面の簡単な説明】
【0022】
【図1】本発明を適用した信号処理装置の概略構成図である。
【図2】マイクロフォンと音源の関係を説明するための模式図である。
【図3】信号処理装置による音声分離処理の動作を示すフローチャートである。
【図4】各信号の関係を説明するための模式図である。
【図5】自然勾配法と補助関数法の収束速度の差を表すグラフである。
【図6】自然勾配法と補助関数法の収束速度の差を表すグラフである。
【図7】音声分離処理の他の動作を示すフローチャートである。
【図8】自然勾配法と補助関数法の収束速度の差を表すグラフである。
【図9】音声分離処理のさらに他の動作を示すフローチャートである。
【発明を実施するための形態】
【0023】
以下、本発明に係る信号処理装置、信号処理方法及びコンピュータプログラムについて図を参照しつつ説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶ点に留意されたい。
【0024】
図1は、本発明を適用した信号処理装置の概略構成を示す図である。図1に示すように、信号処理装置1は、信号入力部11、インターフェース部12、記憶部13及び制御部20を有する。以下、信号処理装置1の各部について詳細に説明する。
【0025】
信号入力部11は、複数の音源からの音声(以下、原信号と称する)をアナログの電気信号に変換して取り込む複数のマイクロフォンを有する。また、信号入力部11は、各マイクロフォンが出力したアナログの電気信号をそれぞれデジタルの信号(以下、入力信号と称する)に変換し、各入力信号を記憶部13に保存する。信号入力部11は、制御部20と接続されており、制御部20により制御される。
【0026】
図2は、信号処理装置1のマイクロフォンと音源の関係を説明するための模式図である。図2に示すように、信号処理装置1は、複数の音源201〜203からの原信号1〜3を複数のマイクロフォン211〜214から入力し、各マイクロフォンからの入力信号1〜4を優決定ブラインド音源分離技術を用いて音源毎に分離する。そのために、信号処理装置1のマイクロフォンの数は、音源の数以上とする。
【0027】
インターフェース部12は、例えばインターネット、電話回線網(携帯端末回線網、一般電話回線網を含む)、イントラネット等のネットワークを介して他のコンピュータ等に音声信号を送信する通信インターフェースであり、接続するネットワークの通信インターフェース回路を有する。また、インターフェース部12は、例えばUSB等のシリアルバスに準じるインターフェース回路を有し、フラッシュメモリ等を接続し、そのフラッシュメモリ等に音声信号を格納するようにしてもよい。インターフェース部12は、制御部20と接続されており、制御部20により制御される。
【0028】
記憶部13は、RAM、ROM等のメモリ装置、ハードディスク等の固定ディスク装置、又はフレキシブルディスク、光ディスク等の可搬用の記憶装置等を有する。また、記憶部13には、信号処理装置1の各種処理に用いられるコンピュータプログラム、データベース、テーブル等が格納される。記憶部13は、制御部20と接続され、信号入力部11を介して取得した音声信号を格納するとともに、制御部20により音声信号についてなされた各種の演算結果を格納する。
【0029】
制御部20は、複数のマイクロフォンから取得した複数の音源からの音声信号を分離する。そのために、制御部20は、音声取得部21、周波数変換部22、分離行列算出部23、信号分離部24及び逆周波数変換部25を有する。また、制御部20は、信号入力部11、インターフェース部12及び記憶部13と接続され、信号入力部11の音声入力制御、インターフェース部12のデータ送受信制御、記憶部13の制御等を行う。制御部20は、予め記憶部13に記憶されているプログラムに基づいて動作する。あるいは、制御部20は、集積回路、マイクロプロセッサ、ファームウェア等で構成されてもよい。
【0030】
図3は、信号処理装置1による音声分離処理の動作を示すフローチャートである。以下、図3に示したフローチャートを参照しつつ、音声分離処理の動作を説明する。なお、以下に説明する動作のフローは、予め記憶部13に記憶されているプログラムに基づき主に制御部20により信号処理装置1の各要素と協働して実行される。
【0031】
最初に、信号入力部11は、複数の音源からの音源信号を複数のマイクロフォンを介して取得し、各マイクロフォンが出力したアナログの電気信号をそれぞれデジタルの入力信号に変換し、各入力信号を記憶部13に保存する(ステップS301)。
【0032】
次に、信号取得部21は、記憶部13に保存された各入力信号を読み出し、マイクロフォンの数の入力信号を音源の数の信号に変換する(以下、音源の数の信号に変換した信号を第1の時系列信号と称する)(ステップS302)。
【0033】
図4に信号処理装置1が処理する各信号の関係を説明するための模式図を示す。図4は、原信号の数が3であり、マイクロフォンの数が4である例を示す。この場合、信号入力部11は、原信号1〜3に対し、入力信号1〜4を取得する。この場合、信号取得部21は、入力信号1〜4を第1の時系列信号1〜3に変換する。
【0034】
そのために、信号取得部21は、例えば「EFFECT OF PCA FILTER IN BLIND SOURCE SEPARATION: Futoshi Asano, Yoichi Motomura, Hideki Asoh and Toshihiro Matsui」で提案されたPCA(principal component analysis)フィルタを用いて入力信号を第1の時系列信号に変換する。なお、音源の数とマイクロフォンの数が同数である場合、ステップS302の処理は省略される。
【0035】
次に、周波数変換部22は、第1の時系列信号(ステップS302の処理が省略された場合は入力信号)をそれぞれ周波数領域に変換して複数の周波数帯域に分割し、全ての第1の時系列信号に対してそれぞれ第1の周波数帯域信号を生成する(ステップS303)。
【0036】
なお、周波数変換部22は、短時間フーリエ変換(STFT)を用いて各信号を周波数領域に変換し、第1の周波数帯域信号を生成する。あるいは、周波数変換部22は、ウェーブレット変換等を用いて各信号を周波数領域へ変換し、第1の周波数帯域信号を生成してもよい。
【0037】
図4に示すように、分割する周波数帯域の数、つまり分割する周波数帯域に対応する周波数ビンの数をNとし、各周波数ビンの番号をω1〜ωNとすると、第1の時系列信号1は、第1の周波数帯域信号x1(ω1)、x1(ω2)、・・・、x1(ωN)に変換される。同様に、第1の時系列信号2は、第1の周波数帯域信号x2(ω1)、x2(ω2)、・・・、x2(ωN)に変換され、第1の時系列信号3は、第1の周波数帯域信号x3(ω1)、x3(ω2)、・・・、x3(ωN)に変換される。
【0038】
次に、分離行列算出部23は、同じ周波数帯域の全ての第1の周波数帯域信号から、原信号の数と同数であり、且つそれぞれが各原信号に対応付けられた信号を生成するための分離行列を、各周波数帯域について算出する(ステップS304〜S308)。なお、以下、同じ周波数帯域の全ての第1の周波数帯域信号をまとめた信号ベクトルを観測信号と称し、分離行列により生成される、各原信号に対応付けられた信号を第2の周波数帯域信号と称し、同じ周波数帯域の全ての第2の周波数帯域信号をまとめた信号ベクトルを変換信号と称する。
【0039】
図4に示すように、ω1に対応する観測信号x(ω1)は、分離行列W(ω1)を用いて、第2の周波数帯域信号y1(ω1)、y2(ω1)、y3(ω1)からなる変換信号y(ω1)に変換される。同様に、ω2に対応する観測信号x(ω2)は、分離行列W(ω2)を用いて、第2の周波数帯域信号y1(ω2)、y2(ω2)、y3(ω2)からなる変換信号y(ω2)に変換され、ωNに対応する観測信号x(ωN)は、分離行列W(ωN)を用いて、第2の周波数帯域信号y1(ωN)、y2(ωN)、y3(ωN)からなる変換信号y(ωN)に変換される。
【0040】
以下、分離行列の算出方法について説明する。なお、以下では、音源数をKとし、STFTにより分割される周波数帯域の数をNとする。周波数帯域ωにおける、多チャンネルの原信号s(ω)、観測信号x(ω)、変換信号y(ω)は、それぞれ以下の式により表される。
【数31】

【数32】

【数33】

ここで、sk(ω)はk番目の音源からの周波数帯域ωにおける原信号であり、xk(ω)はk番目の音源に対応する周波数帯域ωにおける観測信号であり、yk(ω)はk番目の音源に対応する周波数帯域ωにおける変換信号である(1≦k≦K、ω1≦ω≦ωN)。また、tは、ベクトル転置を表す。
【0041】
畳み込み混合に対するブラインド音源分離の周波数領域アプローチでは、観測信号x(ω)は、原信号s(ω)から以下の式による線形混合モデルとして表される。
【数34】

また、変換信号y(ω)は、観測信号x(ω)から以下の式により推定される。
【数35】

ここで、A(ω)は混合行列であり、W(ω)は以下の式による分離行列である。
【数36】

ここで、hは、エルミート転置を表す。ブラインド音源分離では、観測信号x(ω)からどのようにしてこの分離行列を学習するかが精度よく分離を行うための鍵となる。
【0042】
独立ベクトル分析においては、以下の式のように、同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号をまとめたベクトルykを考える。
【数37】

【0043】
図4に示す例では、ベクトルy1は、第2の周波数帯域信号y1(ω1)、y1(ω2)、・・・、y1(ωN)からなり、ベクトルy2は、第2の周波数帯域信号y2(ω1)、y2(ω2)、・・・、y2(ωN)からなり、ベクトルy3は、第2の周波数帯域信号y3(ω1)、y3(ω2)、・・・、y3(ωN)からなる。
【0044】
そして、各ベクトルが統計的に独立となるように分離行列を学習することで、周波数帯域間の相関の高い信号をまとめ、パーミュテーション問題を回避している。なお、各ベクトルが統計的に独立となるような分離行列を求める問題は、以下の式による目的関数J(W)を最小化する問題に帰着することが知られている(非特許文献1〜3を参照)。
【数38】

ここで、Wは分離行列W(ω)のセット(ω1≦ω≦ωN)を表し、E[・]は期待値演算を表す。また、G(yk)はコントラスト関数と呼ばれる信号の独立性を測る関数であり、ykが従う確率密度分布p(yk)と以下の式の関係を有する。
【数39】

【0045】
独立ベクトル分析では、以下の式で表されるコントラスト関数が一般に用いられている(非特許文献1〜3を参照)。
【数40】

【数41】

ここで、‖・‖はベクトルのL2ノルムを表す。
【0046】
従来、目的関数J(W)の最適化問題の解法として自然勾配法が用いられていたが、信号処理装置1では補助関数法を用いる。以下、補助関数法について説明する。補助関数法では目的関数J(W)の最適化問題は、以下の式を満たすパラメータθ=θ*を見つけることに帰着する。
【数42】

目的関数J(θ)の微分値が0となるθをみつけることができれば、そのθをθ*とすることができるが、目的関数J(θ)が非線形であること等により、必ずしも微分値が0となるθをみつけることはできない。
【0047】
そこで、補助関数法では、目的関数J(θ)に対して以下の式を満たすような補助関数Q(θ、φ)を設計する。
【数43】

ここで、φは補助変数と呼ばれる変数である。補助関数法では、目的関数J(θ)を直接最小化する代わりに、補助関数Q(θ、φ)を用いて変数θ、φを交互に反復的に更新する。
【数44】

【数45】

ここで、iは繰り返し回数である。この更新において目的関数J(θ)は単調減少するため、この更新を繰り返すことにより、目的関数J(θ)を極小とする変数θを求めることができる。
【0048】
従って、式(12)を解析的に解くことができない場合でも、式(14)、(15)が解析的に解けるような式(13)を満たす補助関数を設計できる場合には、補助関数法により効果的な学習則が得られる。しかしながら、補助関数の設計の可否は目的関数に依存するので、補助関数法の原理が既知であっても独立ベクトル分析に適用可能な補助関数を容易に設計できるものではない。これまで、独立ベクトル分析に補助関数を適用することは行われておらず、独立ベクトル分析に適用可能な補助関数は知られていない。
【0049】
以下に、独立ベクトル分析に適用可能な補助関数について説明する。ベクトル確率変数zのベクトル値関数G(z)のセットSGを以下の式により定義する。
【数46】

ここで、GR(r)は実変数rの関数であり、r>0でGR(r)は連続かつ微分可能であり、G’R(r)/rは連続で単調減少であるものとする。
【0050】
R(r)の条件は、ykが従う確率密度分布に係る優ガウス性から導かれる。なお、以下の式のような球対称なコントラスト関数により、観測信号を高精度に分離できることが知られている(非特許文献1〜3を参照)。
【数47】

【数48】

ここで、r=‖z‖2であり、C、mは正の定数である。
【0051】
r=‖z‖2とし、以下の式を考えると、
【数49】

F(r)を微分することにより、以下の式が導かれる。
【数50】

ここで、GR’(r)/rはr>0で単調減少であり、F’(r0)=0である。また、F(r)が連続であり、F(r0)=0あるので、F(r)はr=r0で最小値をもつ。
【0052】
従って、式(16)で定義される任意のG(z)について、任意のz及びr0に対して以下の式が成り立つ。
【数51】

等号は、r0=‖z‖2のときにのみ成り立つ。
【0053】
E[G(yk)]に式(21)を適用することで、以下の式が成り立つ。
【数52】

ここで、Vk(ω)は、
【数53】

であり、Rkは任意のωに対してwk(ω)に依存しない定数である。なお、等号は、rk=‖yk2のときにのみ成り立つ。
【0054】
ここで、式(16)で定義される任意のG(z)に対して、以下のQ(W、V)を定義する。
【数54】

【数55】

ここで、rkは正値の確率変数を表し、V(ω)はVk(ω)のセット(1≦k≦K)を表し、Vは任意のk、ωに対するVk(ω)のセット(1≦k≦K、ω1≦ω≦ωN)を表し、RはWに依存しない(ただしrkには依存する)定数を表す。このとき、式(22)を全てのkについて合計して整理することにより、任意のW、Vに対して、以下の式が成り立つ。
【数56】

等号は、以下のときにのみ成り立つ。
【数57】

つまり、Q(W、V)は、現在の各周波数帯域の分離行列に対して目的関数J(W)と同じ関数値を取り、全ての各周波数帯域の分離行列に対して目的関数の関数値以上の関数値を取る。従って、目的関数J(W)について、Q(W、V)を補助関数(補助変数はV)とすることができる。
【0055】
補助関数法の原理に基づき、変数W、Vを交互に更新しながら補助関数Q(W、V)を減少させることにより、目的関数J(W)を単調減少させることができる。従って、更新規則は、変数W、Vを交互に更新することにより得られる。式(26)より、補助変数Vについての補助関数Qの最小化は単に式(27)を式(23)に適用すればよい。
【0056】
以下、分離行列Wについての補助関数Qの最小化について説明する。式(24)で定義された補助関数は各周波数毎に算出された値の総和により得られるので、式(24)、(25)について以下の式を解くことにより(*は、複素共役である)、
【数58】

以下の式が得られる。
【数59】

式(29)を以下の行列式を用いて整理すると、
【数60】

以下の連立ベクトル方程式が得られる。
【数61】

ここで、δlkはクロネッカーのデルタである。これは、「A. Yeredor, “On Hybrid Exact-Approximate Joint Diaginalization,”Proc. CAMSAP, pp. 312-315, 2009.」に記載された、Hybrid Exact-Approximate Joint Diagonalization(HEAD)問題と同じ問題であり、全てのwk(ω)を同時に更新するための閉形式の解は現時点では未解決である。
【0057】
そこで、全てのwk(ω)を同時に更新する代わりに、一つのwk(ω)のみを更新し、他のwl(l≠k)を固定することを考える。この場合、問題は以下のように解決することができる。
【数62】

【数63】

【0058】
この式(32)、(33)は、それぞれwk(ω)のスケール及び方向を定める。式(33)に、以下のダミーの式(aは任意のベクトル)を加えることにより、
【数64】

k(ω)の方向は、以下の式から得ることができる。
【数65】

任意のベクトルaを前回の反復で得られたwk(ω)に置き換えることにより、wk(ω)の方向の更新は単に以下の式とすることができる。
【数66】

ここで、ekは、k番目の要素が1である単位ベクトルである。そして、最後に、式(32)を満たすように正規化が実施される。なお、これらの演算は、全てのkに対して、連続かつ反復して適用される。
【0059】
つまり、補助関数Q(W、V)について、その関数値が最小となる各周波数帯域の分離行列を求めることができる。
【0060】
従って、分離行列算出部23は、まず、各第1の周波数帯域信号に基づいて、分離行列を用いて生成されたベクトルykをパラメータとする式(8)の目的関数J(W)を設定する(ステップS304)。
【0061】
以下のステップS305、S306の処理は、kが1からKまで順次行われる。つまり、まずk=1についてステップS305、S306が行われ、続いてkをインクリメントしながらステップS305、S306が行われ、最後にk=KについてステップS305、S306が行われる。なお、分離行列の初期値は、例えば単位行列とすることができる。
【0062】
分離行列算出部23は、第1の周波数帯域信号及び各周波数帯域の分離行列の各成分をパラメータとする式(24)、(25)の補助関数を更新する(ステップS305)。分離行列算出部23は、全てのωに対して重み付き共分散行列Vk(ω)を以下の式により更新し、更新したVk(ω)を用いて式(24)、(25)の補助関数を更新する。
【数67】

【数68】

なお、式(37)に示すように、rkは全てのωに対して共通となる。
【0063】
次に、分離行列算出部23は、補助関数Q(W、V)の関数値が最小となる各周波数帯域の分離行列W(ω)を求めて、その各周波数帯域の分離行列W(ω)により現在の各周波数帯域の分離行列を更新する(ステップS306)。分離行列算出部23は、全てのωに対して分離行列Wの各行ベクトルwk(ω)を以下の式により更新する。
【数69】

さらに、分離行列算出部23は、更新した各行ベクトルwk(ω)を以下の式により正規化する。
【数70】

【0064】
次に、分離行列算出部23は、全てのkについて、つまりkが1からKまでVk(ω)及びwk(ω)を更新したか否かを判定する(ステップS307)。分離行列算出部23は、全てのkについて、Vk(ω)及びwk(ω)を更新していない場合、kをインクリメントして、ステップS305、S306の処理を繰り返す。なお、2回目以降のステップS305、S306の処理では、更新されたVk(ω)及びwk(ω)を用いて、新たなVk(ω)及びwk(ω)が算出される。
【0065】
一方、全てのkについてVk(ω)及びwk(ω)を更新すると、分離行列算出部23は、分離行列W(ω)が収束したか否かを判定する(ステップS308)。分離行列算出部23は、各周波数帯域の分離行列W(ω)の全ての要素の更新による値の変化が所定回数連続して所定値以下である場合に、分離行列W(ω)が収束したと判定する。
【0066】
分離行列算出部23は、分離行列W(ω)が収束していない場合、ステップS305〜S307の処理を繰り返し、分離行列W(ω)が収束すると、ステップS309へ移行する。
【0067】
なお、分離行列算出部23は、分離行列W(ω)が収束したか否かを判定するのではなく、更新処理を所定回数行ったか否かを判定してもよい。その場合、分離行列算出部23は、更新処理を所定回数行うまでステップS305〜S307の処理を繰り返し、所定回数行ったときにステップS309へ移行する。
【0068】
ステップS309において、信号変換部24は、同じ周波数帯域の全ての第1の周波数帯域信号から、その周波数帯域の分離行列W(ω)を用いて第2の周波数帯域信号を生成し、変換信号を生成する。信号変換部24は、全ての周波数帯域について、第2の周波数帯域信号を生成し、変換信号を生成する(ステップS309)。なお、信号変換部24は、式(5)により各観測信号x(ω)を各変換信号y(ω)に変換する。
【0069】
次に、逆周波数変換部25は、同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号を時間領域に変換して第2の時系列信号を生成する(ステップS310)。
【0070】
なお、逆周波数変換部25は、周波数変換部22が行った周波数変換の逆変換を行う。例えば、周波数変換部22が短時間フーリエ変換を用いて周波数変換を行っている場合は逆短時間フーリエ変換により逆変換を行う。
【0071】
図4に示す例では、第2の周波数帯域信号y1(ω1)、y1(ω2)、・・・、y1(ωN)から第2の時系列信号1が生成され、第2の周波数帯域信号y2(ω1)、y2(ω2)、・・・、y2(ωN)から第2の時系列信号2が生成され、第2の周波数帯域信号y3(ω1)、y3(ω2)、・・・、y3(ωN)から第2の時系列信号3が生成される。つまり、各第2の時系列信号は、各原信号、つまり各音源に対応して生成される。
【0072】
次に、制御部20は、各音源に対応して生成された第2の時系列信号をインターフェース部12を介して外部の装置に出力する(ステップS311)。第2の時系列信号は音源毎に分離されているため、音源毎に雑音の除去、目的音声の強調等を実施できる。そのため、外部の装置で音声認識処理を行う場合は認識精度を向上させることが可能となり、音声通信を行う場合は音声品質を向上させることが可能となる。また、入力音声が複数の楽器による音楽である場合には、楽器毎に音声を分離することも可能となる。なお、これらの処理は、外部の装置で実施するのではなく、信号処理装置1が実施してもよい。
【0073】
以上詳述したように、図3に示したフローチャートに従って動作することによって、信号処理装置1は、独立ベクトル分析の目的関数を補助関数法を用いた学習則に基づいて単調減少させることにより分離行列を算出することができるようになった。これにより、信号処理装置1は、独立ベクトル分析を用いた信号処理において、分離行列を安定して短時間に求めることができるようになった。また、自然勾配法を用いる場合のように、ステップサイズ等のパラメータのチューニングを行う必要もなくなった。
【0074】
図5は、音源数及びマイクロフォン数が2の場合の、独立ベクトル分析の目的関数を補助関数法により減少させたときの収束速度と、自然勾配法により減少させたときの収束速度とを比較するグラフを示す。図5に示すグラフ500では、縦軸は「Bingham, E., Hyv¨arinen, A.: A Fast Fixed-Point Algorithm for Independent Component Analysis of Complex Valued Signals. International Journal of Neural Systems 10(1), 1-8 (2000)」で提案された歪みの尺度であるSIR(source-to-interferences Ratio)を示し、横軸は反復回数を示す。グラフ501は補助関数法によるSIRを示し、グラフ502は自然勾配法(ステップサイズμ=0.1)によるSIRを示し、グラフ503は自然勾配法(μ=0.2)によるSIRを示し、グラフ504は自然勾配法(μ=0.3)によるSIRを示す。
【0075】
図5に示す例では、音源信号にATR−Promotions社の日本語音声データベース(Set B)を用い、インパルス応答に自律学習機能MRI研究室のRWCP実環境音声・音響データベースに収録されたものを用い、それぞれ16kHzにダウンサンプリングした後に畳み込み、シミュレーションにより混合した信号を入力信号としている。信号長は10秒である。用いたインパルス応答が収録された部屋の残響時間は300ms、マイクロフォン間隔は2.83cm、音源とマイクロフォンの距離は2mである。音源方向は10度から170度まで20度間隔に収録されており、その中から2つの音源信号、2つの音源方向をランダムに選択した20条件について測定を行っている。
【0076】
また、図5に示す例では、時間周波数分解には、フレーム長2048点、フレームシフト1024点のhamming窓関数を用いた短時間フーリエ変換を用いている。コントラスト関数としてG(yk)=GR(rk)=rkを用い、分離行列の初期値は単位行列としている。更新された分離行列に「Murata, N., Ikeda, S., Ziehe, A.: An Approach to Blind Source Separation Based on Temporal Structure of Speech Signals. Neurocomputing 41(1-4), 1-24 (2001)」で提案されたProjection backを適用した後、逆短時間フーリエ変換によって復元信号を求めている。
【0077】
グラフ502、503に示すように、自然勾配法では、μ=0.2の場合、μ=0.1の場合よりも速く収束するが、グラフ504に示すように、μ=0.3の場合には70〜80回目の反復において解が発散して解が求まらない状態が発生した。このように、自然勾配法では収束速度と安定性のトレードオフがあり、ステップサイズのチューニングが難しい。一方、補助関数法では、グラフ501に示すように、10回程度の反復で高いSIRが得られ、自然勾配法より速くSIRが収束している。
【0078】
なお、測定は、2.66GHzのCPUをもつノートPC上で、Matlab ver.7.12(R2011a)を用いて行った。このときの1反復あたりの平均計算時間は、補助関数法では0.15秒であり、自然勾配法では0.10秒であるが、収束までに要する総計算時間は、補助関数法の方が自然勾配法よりはるかに短いことがわかる。
【0079】
図6は、音源数及びマイクロフォン数が3の場合の、独立ベクトル分析の目的関数を、補助関数法により減少させたときの収束速度と、自然勾配法により減少させたときの収束速度とを比較するグラフを示す。図6に示すグラフ600では、縦軸はSIRを示し、横軸は反復回数を示す。グラフ601は補助関数法によるSIRを示し、グラフ602は自然勾配法(μ=0.1)によるSIRを示し、グラフ603は自然勾配法(μ=0.2)によるSIRを示す。なお、音源数及びマイクロフォン数以外の測定条件は、図5に示すグラフ500の測定条件と同じである。
【0080】
グラフ602、603に示すように、自然勾配法では、μ=0.2の場合、μ=0.1の場合よりも速く収束するが、μ=0.3の場合には1〜10回目の反復において解が発散して解が求まらない状態が発生した。一方、補助関数法では、グラフ601に示すように、10回程度の反復で高いSIRが得られ、この場合も、自然勾配法より速くSIRが収束している。
【0081】
この場合の1反復あたりの平均計算時間は、補助関数法では0.34秒であり、自然勾配法では0.16秒であるが、収束までに要する総計算時間は、補助関数法の方が自然勾配法よりはるかに短いことがわかる。
【0082】
図7は、音声分離処理の他の動作を示すフローチャートである。
【0083】
このフローチャートは、信号処理装置1において、前述した図3に示すフローチャートの代りに実行することが可能である。図7に示すフローチャートは、原信号が二つである場合に利用可能であり、図7に示すフローチャートでは、図3に示すフローチャートと異なり、分離行列算出部23は、補助関数の更新と、分離行列の更新とをk=1、2についてまとめて実行する。図7に示すステップS701〜S704、S708〜S710の処理は、図6に示すステップS301〜S304、S309〜S311の処理と同じであるため、説明を省略し、以下では、ステップS705〜S707の処理についてのみ説明する。
【0084】
原信号の数Kが2である場合、式(31)は、以下のように表される。
【数71】

【数72】

式(41)、(42)において、変数ωは単純化のために省略している。この場合、閉形式の解が得られることが知られている。
【0085】
式(42)は、V11とV21の両方がw2と直交することを示している。w2と直交する方向は二次元空間において一意に定められるので、V11とV21は平行である。同様に、V12とV22は平行である。したがって、w1とw2は、以下のように一般化固有値問題から算出することができる。
【数73】

ここで、λ1≧λ2と定義する。式(43)の両辺の左側からekhをかけると、以下の式が得られる。
【数74】

したがって、λkは以下の式で表される。
【数75】

1及びV2は重み付き共分散行列であるので、正の定値行列と仮定することができる。V1及びV2を正の定値行列とすると、λkは正の実数となる。
【0086】
式(41)を考慮すると、w1及びw2として以下の二つの解が算出される。
【数76】

【数77】

【0087】
式(46)及び式(47)は、何れも以下の式を表している。
【数78】

したがって、式(25)においてdetの項のみを考慮すると、以下のようになる。ここで、λ1≧λ2であるので、式(46)が式(25)を最小化する解となる。
【数79】

【0088】
ステップS705において、分離行列算出部23は、二つの原信号について、式(24)、(25)の補助関数を更新する。分離行列算出部23は、全てのωに対して重み付き共分散行列Vk(ω)(k=1、2)を式(37)、(38)により更新し、更新したV1(ω)、V2(ω)を用いて式(24)、(25)の補助関数を更新する。
【0089】
次に、分離行列算出部23は、補助関数Q(W、V)の関数値が最小となる各周波数帯域の分離行列W(ω)を求めて、その各周波数帯域の分離行列W(ω)により現在の各周波数帯域の分離行列を更新する(ステップS706)。
【0090】
分離行列算出部23は、全てのωに対して分離行列Wの各行ベクトルwk(ω)を以下のように更新する。最初に、分離行列算出部23は、以下の式により、H(ω)を算出する。
【数80】

次に、分離行列算出部23は、以下の式を満たすH(ω)の二つの固有ベクトルe1(ω)及びe2(ω)を、e1(ω)の固有値がe2(ω)の固有値以上となるように求める。なお、式(51)は、式(43)の両辺に左側からV1-1(ω)をかけることにより得られる。
【数81】

次に、分離行列算出部23は、式(46)により、w1(ω)及びw2(ω)を算出する。
【0091】
次に、分離行列算出部23は、分離行列W(ω)が収束したか否かを判定し(ステップS707)、分離行列W(ω)が収束していない場合、ステップS705〜S706の処理を繰り返し、分離行列W(ω)が収束すると、ステップS708へ移行する。
【0092】
なお、式(43)のλk(k=1、2)は、以下の式の解である。
【数82】

ここで、trは、行列のトレースを示す。λkは、以下の式で表される。
【数83】

ここで、ルート部分は、その実数部が非負であるように定義される。
【0093】
上述したように、λ1及びλ2は正の実数であるので、λ1+λ2とλ1−λ2は両方とも実数である。つまり、式(53)のルート部分は実数であり、定義により非負である。したがって、λ1及びλ2は、λ1≧λ2となるように、以下の式で表される。
【数84】

【数85】

【0094】
二つの固有値は、以下の式によって算出することができる。
【数86】

ここで、Hijは、Hのij番目の成分である。
【0095】
以上詳述したように、図7に示したフローチャートに従って動作することによって、信号処理装置1は、原信号が二つである場合に、独立ベクトル分析を用いた信号処理において、分離行列を安定して短時間に求めることができるようになった。
【0096】
図8は、音源数及びマイクロフォン数が2の場合の、独立ベクトル分析の目的関数を補助関数法により減少させたときの収束速度と、自然勾配法により減少させたときの収束速度とを比較するグラフを示す。図8に示すグラフ800では、縦軸はSIRを示し、横軸は反復回数を示す。グラフ801は図7のフローチャートの音声分離処理によるSIRを示し、グラフ802は図3のフローチャートの音声分離処理によるSIRを示し、グラフ803は自然勾配法(ステップサイズμ=0.1)によるSIRを示し、グラフ804は自然勾配法(μ=0.2)によるSIRを示し、グラフ805は自然勾配法(μ=0.3)によるSIRを示す。
【0097】
図8に示す例では、自律学習機能MRI研究室のRWCP実環境音声・音響データベースに記録された9方向からのインパルス応答を用いている。また、音源信号にATR−Promotions社の日本語音声データベース(Set B)の9つの会話を用い、それぞれ9方向に割り当て、16kHzにダウンサンプリングした後に畳み込み、全てのペアの組合せ(98=36通り)で混合した信号をそれぞれ入力信号としている。信号長は10秒である。用いたインパルス応答が収録された部屋の残響時間は300ms、マイクロフォン間隔は2.83cm、音源とマイクロフォンの距離は2mである。音源方向は10度から170度まで20度間隔に収録されている。
【0098】
また、図8に示す例では、時間周波数分解には、フレーム長4096点、フレームシフト2048点のhamming窓関数を用いた短時間フーリエ変換を用いている。コントラスト関数としてG(yk)=GR(rk)=rkを用い、分離行列の初期値は単位行列としている。更新された分離行列にProjection backを適用した後、逆短時間フーリエ変換によって復元信号を求めている。図8では、最初の5回の反復及び10回反復する毎に全音源及び全試行についてのSIRの平均が求められている。
【0099】
グラフ801、802に示すように、補助関数法では、10回程度の反復で高いSIRが得られ、自然勾配法より速くSIRが収束している。特に、図7のフローチャートの音声分離処理を行った場合、図3のフローチャートの音声分離処理を行った場合より更に速くSIRは収束しており、分離性能がより高いことを表している。
【0100】
なお、測定は、Intel Core i7−2620M 2.70GHzをもつノートPC上で、Matlab ver.7.13(R2011b)を用いて行った。このときの1反復あたりの平均計算時間は、図7のフローチャートの音声分離処理では0.14秒であり、図3のフローチャートの音声分離処理では0.14秒であり、自然勾配法では0.075秒であるが、収束までに要する総計算時間は、補助関数法の方が自然勾配法よりはるかに短いことがわかる。
【0101】
図9は、音声分離処理のさらに他の動作を示すフローチャートである。
【0102】
このフローチャートは、信号処理装置1において、前述した図3に示すフローチャートの代りに実行することが可能である。なお、図7に示したフローチャートは、原信号が二つ以上である場合に利用可能であったが、図9に示すフローチャートは、原信号が二つ以上である場合に利用可能である。図9に示すフローチャートでは、図3に示すフローチャートと異なり、分離行列算出部23は、補助関数の更新と、分離行列の更新とを二つの原信号ずつまとめて実行する。図9に示すステップS901〜S904、S908〜S910の処理は、図6に示すステップS301〜S304、S309〜S311の処理と同じであるため、説明を省略し、以下では、ステップS905〜S907の処理についてのみ説明する。
【0103】
補助関数法では分離行列を更新するために、式(31)の連立ベクトル方程式を解く必要がある。上述したように、式(31)は、原信号の数Kが2である場合に一般化固有値問題で解けることを利用すると、Kが2より大きい場合でも、k=m、k=n(ただしm≠n)以外のwk(ω)を固定して、wm(ω)、wn(ω)の二つずつを更新することができる。
【0104】
式(31)を、k=m、k=nについて連立させると、2K個の方程式が得られる。k=m、k=n(ただしm≠n)以外のwk(ω)を固定して、wm(ω)、wn(ω)を求める場合、未知数は2K個である。
【0105】
式(31)のうち、k=mで、l=m、l=nを除いたK−2個の方程式より、wm(ω)は、Vm(ω)wl(ω)(ただしl≠m、l≠n)と直交している。同様に、wn(ω)は、Vn(ω)wl(ω)(ただしl≠m、l≠n)と直交している。したがって、以下の式が成立する。
【数87】

ここで、im、inは、それぞれ第m成分、第n成分のみが1で、他の成分は0である単位ベクトルである。また、W(ω)に含まれているwm(ω)、wn(ω)は、更新前のベクトルであり、定数として扱われる。
【0106】
式(57)を変形することにより、以下の式が得られる。
【数88】

ここで、
【数89】

である。
【0107】
したがって、hm(ω)、hn(ω)が求まれば、以下の式により、wm(ω)、wn(ω)が求められる。
【数90】

【0108】
式(31)のうち、k=mでl=m、l=nの方程式と、k=nでl=m、l=nの方程式
【数91】

に、式(60)を代入することにより、以下の式が得られる。
【数92】

ここで、
【数93】

である。
【0109】
式(62)は、K=2の場合の式(41)、(42)と同型であり、K>2の場合もK=2の場合と同様に、閉形式の解が得られる。
【0110】
ステップS905において、分離行列算出部23は、K個の原信号のうち二つの原信号について、式(24)、(25)の補助関数を更新する。分離行列算出部23は、全てのωに対して重み付き共分散行列Vk(ω)(k=m、n)を式(37)、(38)により更新し、更新したVm(ω)、Vn(ω)を用いて式(24)、(25)の補助関数を更新する。
【0111】
次に、分離行列算出部23は、補助関数Q(W、V)の関数値が最小となる各周波数帯域の分離行列W(ω)を求めて、その各周波数帯域の分離行列W(ω)により現在の各周波数帯域の分離行列を更新する(ステップS906)。
【0112】
分離行列算出部23は、全てのωに対して分離行列Wの各行ベクトルwk(ω)を以下のように更新する。最初に、分離行列算出部23は、式(63)により、Um(ω)、Un(ω)を算出する。次に、分離行列算出部23は、以下の式により、H(ω)を算出する。
【数94】

次に、分離行列算出部23は、以下の式を満たすH(ω)の二つの固有ベクトルhm(ω)及びhn(ω)を、hm(ω)の固有値がhn(ω)の固有値以上となるように求める。
【数95】

次に、分離行列算出部23は、式(60)により、wm(ω)及びwn(ω)を算出する。さらに、分離行列算出部23は、wm(ω)及びwn(ω)を以下の式により正規化する。
【数96】

【0113】
次に、分離行列算出部23は、分離行列W(ω)が収束したか否かを判定し(ステップS907)、分離行列W(ω)が収束していない場合、ステップS905〜S906の処理を繰り返し、分離行列W(ω)が収束すると、ステップS908へ移行する。なお、ステップS905〜S906の処理は、各原信号について均等に実行するようにし、実行する順序は任意でよい。例えば、原信号が5つである場合、最初にk=1、2について処理し、次にk=3、4について処理し、次にk=5、1について処理し、次にk=2、3について処理し、次にk=4、5について処理し…という順序でステップS905〜S906の処理を実行することができる。
【0114】
式(63)に示すVm(ω)、Vn(ω)はK×Kの行列であり、Um(ω)、Un(ω)は2×2の行列である。つまり、k=m、nについて分離行列が更新された場合、k=mの原信号とk=nの原信号の関係においてのみ、統計的に独立になるように分離行列が更新されるのではない。この場合、k=mの原信号は、k=nの原信号との関係のみでなく、k≠mの全ての原信号に対して統計的に独立になるように分離行列が更新され、k=nの原信号は、k=mの原信号との関係のみでなく、k≠nの全ての原信号に対して統計的に独立になるように分離行列が更新される。したがって、ステップS905〜S906の処理を実行するペアについて、全ての組合せを網羅するように組み合わせる必要がなく、効率良く分離行列を更新することができる。
【0115】
以上詳述したように、図9に示したフローチャートに従って動作することによって、信号処理装置1は、原信号が二つ以上である場合に、独立ベクトル分析を用いた信号処理において、分離行列を安定してより短時間に求めることができるようになった。
【0116】
以上、本発明の好適な実施形態について説明してきたが、本発明はこれらの実施形態に限定されるものではない。例えば、信号処理装置1が分離する信号は、音声信号に限定されず、画像信号、脳波等の生体信号等であってもよい。その場合、信号入力部11は、複数の信号が混合された画像信号、生体信号を取得する。制御部20は、音声信号の場合と同様に、画像信号、生体信号について、独立ベクトル分析の目的関数を、補助関数法を用いた学習則に基づいて低減させることにより分離行列を算出する。
【符号の説明】
【0117】
1 信号処理装置
11 信号入力部
12 インターフェース部
13 記憶部
20 制御部
21 信号取得部
22 周波数変換部
23 分離行列算出部
24 信号変換部
25 逆周波数変換部

【特許請求の範囲】
【請求項1】
複数の原信号の数と同数であって且つそれぞれが複数の原信号が混合されたものに基づく複数の第1の時系列信号を取得する信号取得部と、
前記複数の第1の時系列信号のそれぞれを周波数変換して複数の周波数帯域に分割することにより、前記複数の第1の時系列信号のそれぞれに対して複数の第1の周波数帯域信号を生成する周波数変換部と、
前記第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号から、前記複数の原信号のそれぞれに対応付けられた複数の第2の周波数帯域信号を生成するための分離行列を前記複数の周波数帯域のそれぞれについて求める分離行列算出部と、
前記第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号及び同じ周波数帯域の前記分離行列を用いて前記複数の第2の周波数帯域信号を生成する信号変換部と、
前記複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号を逆周波数変換して第2の時系列信号を生成する逆周波数変換部と、
前記第2の時系列信号を外部に出力するインターフェース部と、を有し、
前記分離行列算出部は、
前記複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号をまとめたベクトルをパラメータとし、且つ関数値を低減させるほど前記ベクトルのそれぞれが統計的に独立になる目的関数を設定し、
前記複数の第1の周波数帯域信号及び各周波数帯域の分離行列の各成分をパラメータとし、現在の前記各周波数帯域の分離行列に対して前記目的関数と同じ関数値を取り、全ての前記各周波数帯域の分離行列に対して前記目的関数の関数値以上の関数値を取り、且つ関数値が最小となる前記各周波数帯域の分離行列を求めることが可能な補助関数を設定する処理と、
前記補助関数の関数値が最小となる前記各周波数帯域の分離行列を求めて、当該各周波数帯域の分離行列により現在の前記各周波数帯域の分離行列を更新する処理と、
を交互に繰り返すことにより前記ベクトルのそれぞれが統計的により独立になる前記各周波数帯域の分離行列を求める、ことを特徴とする信号処理装置。
【請求項2】
前記分離行列算出部は、前記補助関数を設定する一回の処理において、前記複数の原信号のうち一つの原信号に対応する、前記補助関数の補助変数を更新し、前記分離行列を更新する一回の処理において、前記一つの原信号に対応する、前記分離行列の成分を更新する、請求項1に記載の信号処理装置。
【請求項3】
前記分離行列算出部は、前記複数の原信号の数をKとし、前記複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する前記第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応する前記ベクトルをykとし、周波数帯域ωに対応する前記分離行列を次の行列W(ω)とし、
【数1】

次の関数J(W)を前記目的関数とし、
【数2】

次の関数Q(W、V)を前記補助関数とし、
【数3】

k(ω)を次の式により更新する処理と、
【数4】

k(ω)を次の式により更新する処理と、
【数5】

をkが1からKまで順次繰り返すことによりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、前記ベクトルのそれぞれが統計的により独立になる前記各周波数帯域の分離行列を求める、請求項2に記載の信号処理装置。
【請求項4】
前記分離行列算出部は、前記補助関数を設定する一回の処理において、前記複数の原信号のうち二つの原信号に対応する、前記補助関数の補助変数を更新し、前記分離行列を更新する一回の処理において、前記二つの原信号に対応する、前記分離行列の成分を更新する、請求項1に記載の信号処理装置。
【請求項5】
前記分離行列算出部は、前記複数の原信号の数をKとし、前記複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する前記第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応する前記ベクトルをykとし、周波数帯域ωに対応する前記分離行列を次の行列W(ω)とし、
【数6】

次の関数J(W)を前記目的関数とし、
【数7】

次の関数Q(W、V)を前記補助関数とし、
【数8】

K=2である場合に、Vk(ω)をk=1、2について次の式により更新する処理と、
【数9】

k(ω)をk=1、2について次の式により更新する処理と、
【数10】

によりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、前記ベクトルのそれぞれが統計的により独立になる前記各周波数帯域の分離行列を求める、請求項4に記載の信号処理装置。
【請求項6】
前記分離行列算出部は、前記複数の原信号の数をKとし、前記複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する前記第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応する前記ベクトルをykとし、周波数帯域ωに対応する前記分離行列を次の行列W(ω)とし、
【数11】

次の関数J(W)を前記目的関数とし、
【数12】

次の関数Q(W、V)を前記補助関数とし、
【数13】

k(ω)をk=m、n(1≦m≦K、1≦n≦K、m≠n)について次の式により更新する処理と、
【数14】

k(ω)をk=m、nについて次の式により更新する処理と、
【数15】

によりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、前記ベクトルのそれぞれが統計的により独立になる前記各周波数帯域の分離行列を求める、請求項4に記載の信号処理装置。
【請求項7】
複数の原信号の数と同数であって且つそれぞれが複数の原信号が混合されたものに基づく複数の第1の時系列信号を取得するステップと、
前記複数の第1の時系列信号のそれぞれを周波数変換して複数の周波数帯域に分割することにより、前記複数の第1の時系列信号のそれぞれに対して複数の第1の周波数帯域信号を生成するステップと、
前記第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号から、前記複数の原信号のそれぞれに対応付けられた複数の第2の周波数帯域信号を生成するための分離行列を前記複数の周波数帯域のそれぞれについて求めるステップと、
前記第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号及び同じ周波数帯域の前記分離行列を用いて前記複数の第2の周波数帯域信号を生成するステップと、
前記複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号を逆周波数変換して第2の時系列信号を生成するステップと、
前記第2の時系列信号を外部に出力するステップと、を含み、
前記分離行列を求めるステップにおいて、
前記複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号をまとめたベクトルをパラメータとし、且つ関数値を低減させるほど前記ベクトルのそれぞれが統計的に独立になる目的関数を設定し、
前記複数の第1の周波数帯域信号及び各周波数帯域の分離行列の各成分をパラメータとし、現在の前記各周波数帯域の分離行列に対して前記目的関数と同じ関数値を取り、全ての前記各周波数帯域の分離行列に対して前記目的関数の関数値以上の関数値を取り、且つ関数値が最小となる前記各周波数帯域の分離行列を求めることが可能な補助関数を設定する処理と、
前記補助関数の関数値が最小となる前記各周波数帯域の分離行列を求めて、当該各周波数帯域の分離行列により現在の前記各周波数帯域の分離行列を更新する処理と、
を交互に繰り返すことにより前記ベクトルのそれぞれが統計的により独立になる前記各周波数帯域の分離行列を求める、ことを特徴とする信号処理方法。
【請求項8】
前記分離行列を求めるステップにおいて、前記補助関数を設定する一回の処理で、前記複数の原信号のうち一つの原信号に対応する、前記補助関数の補助変数を更新し、前記分離行列を更新する一回の処理で、前記一つの原信号に対応する、前記分離行列の成分を更新する、請求項7に記載の信号処理方法。
【請求項9】
前記分離行列を求めるステップにおいて、前記複数の原信号の数をKとし、前記複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する前記第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応する前記ベクトルをykとし、周波数帯域ωに対応する前記分離行列を次の行列W(ω)とし、
【数16】

次の関数J(W)を前記目的関数とし、
【数17】

次の関数Q(W、V)を前記補助関数とし、
【数18】

k(ω)を次の式により更新する処理と、
【数19】

k(ω)を次の式により更新する処理と、
【数20】

をkが1からKまで順次繰り返すことによりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、前記ベクトルのそれぞれが統計的により独立になる前記各周波数帯域の分離行列を求める、請求項8に記載の信号処理方法。
【請求項10】
前記分離行列を求めるステップにおいて、前記補助関数を設定する一回の処理で、前記複数の原信号のうち二つの原信号に対応する、前記補助関数の補助変数を更新し、前記分離行列を更新する一回の処理で、前記二つの原信号に対応する、前記分離行列の成分を更新する、請求項7に記載の信号処理方法。
【請求項11】
前記分離行列を求めるステップにおいて、前記複数の原信号の数をKとし、前記複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する前記第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応する前記ベクトルをykとし、周波数帯域ωに対応する前記分離行列を次の行列W(ω)とし、
【数21】

次の関数J(W)を前記目的関数とし、
【数22】

次の関数Q(W、V)を前記補助関数とし、
【数23】

k(ω)をk=1、2について次の式により更新する処理と、
【数24】

k(ω)をk=1、2について次の式により更新する処理と、
【数25】

によりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、前記ベクトルのそれぞれが統計的により独立になる前記各周波数帯域の分離行列を求める、請求項10に記載の信号処理方法。
【請求項12】
前記分離行列を求めるステップにおいて、前記複数の原信号の数をKとし、前記複数の周波数帯域の分割数をNとし、周波数帯域ωに対応する前記第1の周波数帯域信号をまとめた信号ベクトルをx(ω)とし、k番目の原信号に対応する前記ベクトルをykとし、周波数帯域ωに対応する前記分離行列を次の行列W(ω)とし、
【数26】

次の関数J(W)を前記目的関数とし、
【数27】

次の関数Q(W、V)を前記補助関数とし、
【数28】

k(ω)をk=m、n(1≦m≦K、1≦n≦K、m≠n)について次の式により更新する処理と、
【数29】

k(ω)をk=m、nについて次の式により更新する処理と、
【数30】

によりW(ω)を更新し、当該W(ω)の更新を繰り返すことにより、前記ベクトルのそれぞれが統計的により独立になる前記各周波数帯域の分離行列を求める、請求項10に記載の信号処理方法。
【請求項13】
複数の原信号の数と同数であって且つそれぞれが複数の原信号が混合されたものに基づく複数の第1の時系列信号を取得するステップと、
前記複数の第1の時系列信号のそれぞれを周波数変換して複数の周波数帯域に分割することにより、前記複数の第1の時系列信号のそれぞれに対して複数の第1の周波数帯域信号を生成するステップと、
前記第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号から、前記複数の原信号のそれぞれに対応付けられた複数の第2の周波数帯域信号を生成するための分離行列を前記複数の周波数帯域のそれぞれについて求めるステップと、
前記第1の周波数帯域信号のうち同じ周波数帯域の全ての第1の周波数帯域信号及び同じ周波数帯域の前記分離行列を用いて前記複数の第2の周波数帯域信号を生成するステップと、
前記複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号を逆周波数変換して第2の時系列信号を生成するステップと、
前記第2の時系列信号を外部に出力するステップと、をコンピュータに実行させ、
前記分離行列を求めるステップにおいて、
前記複数の第2の周波数帯域信号のうち同じ原信号に対応付けられた全ての周波数帯域の第2の周波数帯域信号をまとめたベクトルをパラメータとし、且つ関数値を低減させるほど前記ベクトルのそれぞれが統計的に独立になる目的関数を設定し、
前記複数の第1の周波数帯域信号及び各周波数帯域の分離行列の各成分をパラメータとし、現在の前記各周波数帯域の分離行列に対して前記目的関数と同じ関数値を取り、全ての前記各周波数帯域の分離行列に対して前記目的関数の関数値以上の関数値を取り、且つ関数値が最小となる前記各周波数帯域の分離行列を求めることが可能な補助関数を設定する処理と、
前記補助関数の関数値が最小となる前記各周波数帯域の分離行列を求めて、当該各周波数帯域の分離行列により現在の前記各周波数帯域の分離行列を更新する処理と、
を交互に繰り返すことにより前記ベクトルのそれぞれが統計的により独立になる前記各周波数帯域の分離行列を求める、ことを特徴とするコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2013−68938(P2013−68938A)
【公開日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願番号】特願2012−184649(P2012−184649)
【出願日】平成24年8月23日(2012.8.23)
【出願人】(504202472)大学共同利用機関法人情報・システム研究機構 (119)