(57)【要約】【課題】歌唱者の歌唱中であってもスピーカからマイクへの伝達関数を算出することが可能なエコーキャンセル装置、カラオケ装置、エコーキャンセル方法およびプログラムを提供すること。【解決手段】本発明の実施形態に係るカラオケ装置１は、音声入力部１７において生成される入力信号に基づいて、入力信号の各周波数においてダブルトーク状態であるかシングルトーク状態であるかを判定し、シングルトーク状態である周波数の入力信号に基づいて、伝達関数を算出することができる。ここで、歌唱の基本周波数は随時変化することにより、シングルトーク状態である周波数も随時変化するから、所定時間経過するうちには、伝達関数算出に必要な全ての周波数がシングルトーク状態となり、歌唱中であっても、各周波数における伝達関数を算出することができる。【選択図】図２
2009150920.tif 000002
【特許請求の範囲】
【請求項１】
供給されるオーディオ信号を放音する放音手段と、
入力される音を入力信号として出力する収音手段と、
前記収音手段から出力される入力信号および前記放音手段に供給されるオーディオ信号を、所定のタイミングでフーリエ変換を行うことにより、それぞれ周波数領域の複素ベクトルＡ、Ｂを生成する処理を複数回行う変換手段と、
前記変換手段によって生成された複素ベクトルＡ、Ｂを、フーリエ変換が行われたタイミングごとに対応させて記憶する記憶手段と、
前記記憶手段に記憶された複数の複素ベクトルＡから１つの複素ベクトルＡを選択する処理を、複数回行う選択手段と、
前記選択手段に選択された複素ベクトルＡに係る各周波数の要素のうち、シングルトーク状態とみなせる所定の条件を満たす要素に対応する周波数を特定する処理を、前記選択手段による選択のたびに行う特定手段と、
前記特定手段によって特定された周波数ごとに、前記選択手段に選択された複素ベクトルＡと当該複素ベクトルＡに対応する複素ベクトルＢとを用いた所定の演算を前記選択手段による選択のたびに行うことによって、周波数ごとに複数の演算結果を取得し、当該複数の演算結果の周波数ごとの平均に基づいて、各周波数の伝達関数を算出する伝達関数算出手段と
を具備することを特徴とするエコーキャンセル装置。
【請求項２】
前記伝達関数算出手段は、
前記特定手段によって特定された周波数ごとに、前記選択手段に選択された複素ベクトルＡと当該複素ベクトルＡに対応する複素ベクトルＢの共役複素数とを乗算する処理を、前記選択手段による選択のたびに行って、周波数ごとに複数の第１の演算結果を取得し、
前記特定手段によって特定された周波数ごとに、前記選択手段に選択された複素ベクトルＡに対応する複素ベクトルＢと当該複素ベクトルＢの共役複素数とを乗算する処理を、前記選択手段による選択のたびに行って、周波数ごとに複数の第２の演算結果を取得し、
前記複数の第１の演算結果の平均を周波数ごとに算出した値から、前記複数の第２の演算結果の平均を周波数ごとに算出した値を、周波数ごとに除算することにより、各周波数の伝達関数を算出する
ことを特徴とする請求項１に記載のエコーキャンセル装置。
【請求項３】
前記特定手段が特定する周波数は、前記選択手段に選択された複素ベクトルＡに係る各周波数の要素のうち、前記各周波数の要素から当該複素ベクトルＡに対応する複素ベクトルＢに係る各周波数の要素を周波数ごとに除算することによって得られる演算結果の絶対値が予め定められたしきい値以下となる要素に対応する周波数である
ことを特徴とする請求項１または請求項２に記載のエコーキャンセル装置。
【請求項４】
前記特定手段が特定する周波数は、前記選択手段に選択された複素ベクトルＡの各周波数の要素のうち、前記各周波数の要素の絶対値が予め定められたしきい値以下となる要素に対応する周波数である
ことを特徴とする請求項１または請求項２に記載のエコーキャンセル装置。
【請求項５】
前記予め定められたしきい値は、周波数ごとに異なるしきい値である
ことを特徴とする請求項３または請求項４に記載のエコーキャンセル装置。
【請求項６】
前記伝達関数算出手段が算出した伝達関数と前記放音手段に供給されるオーディオ信号とに基づいてキャンセル信号を生成するキャンセル信号生成手段と、
前記収音手段から出力された入力信号から前記キャンセル信号を減算して出力する出力手段と
をさらに具備する
ことを特徴とする請求項１乃至請求項５のいずれかに記載のエコーキャンセル装置。
【請求項７】
請求項６に記載のエコーキャンセル装置と、
前記出力手段から出力された信号に基づいて、ピッチを算出するピッチ算出手段と
を具備することを特徴とするカラオケ装置。
【請求項８】
供給されるオーディオ信号を放音する放音過程と、
入力される音を入力信号として出力する収音過程と、
前記収音過程において出力される入力信号および前記放音過程において供給されるオーディオ信号を、所定のタイミングでフーリエ変換を行うことにより、それぞれ周波数領域の複素ベクトルＡ、Ｂを生成する処理を複数回行う変換過程と、
前記変換過程によって生成された複素ベクトルＡ、Ｂを、フーリエ変換が行われたタイミングごとに対応させて記憶手段に記憶する記憶過程と、
前記記憶手段に記憶された複数の複素ベクトルＡから１つの複素ベクトルＡを選択する処理を、複数回行う選択過程と、
前記選択過程によって選択された複素ベクトルＡに係る各周波数の要素のうち、シングルトーク状態とみなせる所定の条件を満たす要素に対応する周波数を特定する処理を、前記選択過程による選択のたびに行う特定過程と、
前記特定過程によって特定された周波数ごとに、前記選択過程において選択された複素ベクトルＡと当該複素ベクトルＡに対応する複素ベクトルＢとを用いた所定の演算を前記選択過程による選択のたびに行うことによって、周波数ごとに複数の演算結果を取得し、当該複数の演算結果の周波数ごとの平均に基づいて、各周波数の伝達関数を算出する伝達関数算出過程と
を備えることを特徴とするエコーキャンセル方法。
【請求項９】
コンピュータに、
供給されるオーディオ信号を放音する放音機能と、
入力される音を入力信号として出力する収音機能と、
前記収音機能によって出力される入力信号および前記放音機能に供給されるオーディオ信号を、所定のタイミングでフーリエ変換を行うことにより、それぞれ周波数領域の複素ベクトルＡ、Ｂを生成する処理を複数回行う変換機能と、
前記変換機能によって生成された複素ベクトルＡ、Ｂを、フーリエ変換が行われたタイミングごとに対応させて記憶手段に記憶する記憶機能と、
前記記憶手段に記憶された複数の複素ベクトルＡから１つの複素ベクトルＡを選択する処理を、複数回行う選択機能と、
前記選択機能によって選択された複素ベクトルＡに係る各周波数の要素のうち、シングルトーク状態とみなせる所定の条件を満たす要素に対応する周波数を特定する処理を、前記選択機能による選択のたびに行う特定機能と、
前記特定機能によって特定された周波数ごとに、前記選択機能において選択された複素ベクトルＡと当該複素ベクトルＡに対応する複素ベクトルＢとを用いた所定の演算を前記選択機能による選択のたびに行うことによって、周波数ごとに複数の演算結果を取得し、当該複数の演算結果の周波数ごとの平均に基づいて、各周波数の伝達関数を算出する伝達関数算出機能と
を実現するためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エコーキャンセルの技術に関する。
【背景技術】
【０００２】
カラオケ装置においては、歌唱者の歌唱の巧拙を採点するための方法として様々な方法が提案されている。例えば、歌唱者の歌唱のピッチを検出し、歌唱のピッチと手本となるリファレンスのピッチとの比較に基づいて採点する方法がある（例えば、特許文献１）。
【特許文献１】特開２００５−１０７３３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
歌唱者の歌唱は、マイクによって収音されるが、この収音にはスピーカから放音されるカラオケの伴奏も一緒に収音される場合がある。このような場合には、マイクによって収音された歌唱者の歌唱とカラオケの伴奏に基づいてピッチを検出することになり、歌唱者の歌唱のピッチが正確に検出されないことがあった。
【０００４】
このような場合に、様々なエコーキャンセル技術を用いてカラオケの伴奏部分を除去することができる。このようなエコーキャンセル技術は、適応型のＦＩＲ（Ｆｉｎｉｔｅ  ｉｍｐｕｌｓｅ  ｒｅｓｐｏｎｓｅ）フィルタの係数を逐次修正する方法（以下、ＦＩＲ方式という）、ＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  ｔｒａｎｓｆｏｒｍ）を使い伝達関数を求める方式（以下、ＦＦＴ方式という）がある。
【０００５】
ＦＩＲ方式によるタップ数はＦＦＴ方式のＦＦＴサイズに対応するものであり、その数値が大きくなればモデル化の精度が高くなる。サンプルごとの演算回数は、概ねＦＩＲ方式の場合はタップ数に比例するが、ＦＦＴ方式の場合はＦＦＴサイズの対数に比例するため、タップ数またはＦＦＴサイズが大きくなると、ＦＦＴ方式の演算数が少なくなる利点がある。
【０００６】
カラオケ装置などにエコーキャンセル技術を適用した場合、歌唱者は、マイクを持って歌唱することが多く、その位置や向きが変化することがあり、伝達関数を随時算出して更新することが望ましい。しかしながら、歌唱者の歌唱中は、カラオケの伴奏部分と歌唱者の歌唱部分をマイクが収音してしまう状態（以下、ダブルトーク状態という）では、このようなエコーキャンセル技術を用いることが難しく、歌唱者が歌唱しない前奏中、間奏中など、カラオケの伴奏部分だけがマイクに収音される状態（以下、シングルトーク状態という）である期間において伝達関数を算出し、歌唱者の歌唱中はこの伝達関数を使用しなくてはならなかった。
【０００７】
本発明は、上述の事情に鑑みてなされたものであり、歌唱者の歌唱中であってもスピーカからマイクへの伝達関数を算出することが可能なエコーキャンセル装置、カラオケ装置、エコーキャンセル方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述の課題を解決するため、本発明は、供給されるオーディオ信号を放音する放音手段と、入力される音を入力信号として出力する収音手段と、前記収音手段から出力される入力信号および前記放音手段に供給されるオーディオ信号を、所定のタイミングでフーリエ変換を行うことにより、それぞれ周波数領域の複素ベクトルＡ、Ｂを生成する処理を複数回行う変換手段と、前記変換手段によって生成された複素ベクトルＡ、Ｂを、フーリエ変換が行われたタイミングごとに対応させて記憶する記憶手段と、前記記憶手段に記憶された複数の複素ベクトルＡから１つの複素ベクトルＡを選択する処理を、複数回行う選択手段と、前記選択手段に選択された複素ベクトルＡに係る各周波数の要素のうち、シングルトーク状態とみなせる所定の条件を満たす要素に対応する周波数を特定する処理を、前記選択手段による選択のたびに行う特定手段と、前記特定手段によって特定された周波数ごとに、前記選択手段に選択された複素ベクトルＡと当該複素ベクトルＡに対応する複素ベクトルＢとを用いた所定の演算を前記選択手段による選択のたびに行うことによって、周波数ごとに複数の演算結果を取得し、当該複数の演算結果の周波数ごとの平均に基づいて、各周波数の伝達関数を算出する伝達関数算出手段とを具備することを特徴とするエコーキャンセル装置を提供する。
【０００９】
また、別の好ましい態様において、前記伝達関数算出手段は、前記特定手段によって特定された周波数ごとに、前記選択手段に選択された複素ベクトルＡと当該複素ベクトルＡに対応する複素ベクトルＢの共役複素数とを乗算する処理を、前記選択手段による選択のたびに行って、周波数ごとに複数の第１の演算結果を取得し、前記特定手段によって特定された周波数ごとに、前記選択手段に選択された複素ベクトルＡに対応する複素ベクトルＢと当該複素ベクトルＢの共役複素数とを乗算する処理を、前記選択手段による選択のたびに行って、周波数ごとに複数の第２の演算結果を取得し、前記複数の第１の演算結果の平均を周波数ごとに算出した値から、前記複数の第２の演算結果の平均を周波数ごとに算出した値を、周波数ごとに除算することにより、各周波数の伝達関数を算出してもよい。
【００１０】
また、別の好ましい態様において、前記特定手段が特定する周波数は、前記選択手段に選択された複素ベクトルＡに係る各周波数の要素のうち、前記各周波数の要素から当該複素ベクトルＡに対応する複素ベクトルＢに係る各周波数の要素を周波数ごとに除算することによって得られる演算結果の絶対値が予め定められたしきい値以下となる要素に対応する周波数であってもよい。
【００１１】
また、別の好ましい態様において、前記特定手段が特定する周波数は、前記選択手段に選択された複素ベクトルＡの各周波数の要素のうち、前記各周波数の要素の絶対値が予め定められたしきい値以下となる要素に対応する周波数であってもよい。
【００１２】
また、別の好ましい態様において、前記予め定められたしきい値は、周波数ごとに異なるしきい値であってもよい。
【００１３】
また、別の好ましい態様において、前記伝達関数算出手段が算出した伝達関数と前記放音手段に供給されるオーディオ信号とに基づいてキャンセル信号を生成するキャンセル信号生成手段と、前記収音手段から出力された入力信号から前記キャンセル信号を減算して出力する出力手段とをさらに具備してもよい。
【００１４】
また、本発明は、上記記載のエコーキャンセル装置と、前記出力手段から出力された信号に基づいて、ピッチを算出するピッチ算出手段とを具備することを特徴とするカラオケ装置を提供する。
【００１５】
また、本発明は、供給されるオーディオ信号を放音する放音過程と、入力される音を入力信号として出力する収音過程と、前記収音過程によって出力される入力信号および前記放音過程に供給されるオーディオ信号を、所定のタイミングでフーリエ変換を行うことにより、それぞれ周波数領域の複素ベクトルＡ、Ｂを生成する処理を複数回行う変換過程と、前記変換過程によって生成された複素ベクトルＡ、Ｂを、フーリエ変換が行われたタイミングごとに対応させて記憶手段に記憶する記憶過程と、前記記憶手段に記憶された複数の複素ベクトルＡから１つの複素ベクトルＡを選択する処理を、複数回行う選択過程と、前記選択過程によって選択された複素ベクトルＡに係る各周波数の要素のうち、シングルトーク状態とみなせる所定の条件を満たす要素に対応する周波数を特定する処理を、前記選択過程による選択のたびに行う特定過程と、前記特定過程によって特定された周波数ごとに、前記選択過程において選択された複素ベクトルＡと当該複素ベクトルＡに対応する複素ベクトルＢとを用いた所定の演算を前記選択過程による選択のたびに行うことによって、周波数ごとに複数の演算結果を取得し、当該複数の演算結果の周波数ごとの平均に基づいて、各周波数の伝達関数を算出する伝達関数算出過程とを備えることを特徴とするエコーキャンセル方法を提供する。
【００１６】
また、本発明は、コンピュータに、供給されるオーディオ信号を放音する放音機能と、入力される音を入力信号として出力する収音機能と、前記収音機能において出力される入力信号および前記放音機能において供給されるオーディオ信号を、所定のタイミングでフーリエ変換を行うことにより、それぞれ周波数領域の複素ベクトルＡ、Ｂを生成する処理を複数回行う変換機能と、前記変換機能によって生成された複素ベクトルＡ、Ｂを、フーリエ変換が行われたタイミングごとに対応させて記憶手段に記憶する記憶機能と、前記記憶手段に記憶された複数の複素ベクトルＡから１つの複素ベクトルＡを選択する処理を、複数回行う選択機能と、前記選択機能によって選択された複素ベクトルＡに係る各周波数の要素のうち、シングルトーク状態とみなせる所定の条件を満たす要素に対応する周波数を特定する処理を、前記選択機能による選択のたびに行う特定機能と、前記特定機能によって特定された周波数ごとに、前記選択機能において選択された複素ベクトルＡと当該複素ベクトルＡに対応する複素ベクトルＢとを用いた所定の演算を前記選択機能による選択のたびに行うことによって、周波数ごとに複数の演算結果を取得し、当該複数の演算結果の周波数ごとの平均に基づいて、各周波数の伝達関数を算出する伝達関数算出機能とを実現するためのプログラムを提供する。
【発明の効果】
【００１７】
本発明によれば、歌唱者の歌唱中であってもスピーカからマイクへの伝達関数を算出することが可能なエコーキャンセル装置、カラオケ装置、エコーキャンセル方法およびプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の一実施形態について説明する。
【００１９】
＜実施形態＞
本発明の実施形態に係るカラオケ装置１は、後述するようなエコーキャンセル機能を有している。カラオケ装置１のハードウエアの構成について、図１を用いて説明する。図１は、カラオケ装置１のハードウエアの構成を示すブロック図である。
【００２０】
このカラオケ装置１は、後述する音声出力部１６が有するスピーカからの放音を音声入力部１７が有するマイクロフォンで収音し、音声出力部１６のスピーカに供給されるオーディオ信号と、後述する音声入力部１７のマイクロフォンの収音内容に基づいて、スピーカからマイクロフォンへの伝達関数Ｈを計算することによって、エコーキャンセル機能を実現する。
【００２１】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１は、記憶部１２に記憶されたプログラムをＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３にロードして実行する。これにより、ＣＰＵ１１が、バス１０を介して、カラオケ装置１の各部について制御する。また、ＲＡＭ１３は、ＣＰＵ１１が各データの加工などを行う際のワークエリアとして機能する。
【００２２】
記憶部１２は、ハードディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、不揮発性メモリなどの記憶手段であって、上述したプログラム、各種情報を記憶する。
【００２３】
操作部１４は、例えばキーボード、マウス、リモコンなどであり、カラオケ装置１の利用者が操作部１４を操作すると、その操作内容を表す情報がＣＰＵ１１へ出力される。
【００２４】
表示部１５は、液晶ディスプレイなどの表示デバイスであって、ＣＰＵ１１によって入力される映像データに基づく表示、カラオケ装置１を操作するためのメニュー画面などの各種画面の表示を行う。また、ＣＰＵ１１の制御に基づいて、操作部１４の操作に対応するポインタなどの表示を行う。
【００２５】
音声出力部１６は、スピーカを有し、入力されるオーディオ信号に基づいて放音する。
【００２６】
音声入力部１７は、収音を行うマイクロフォンを有し、マイクロフォンの収音に基づいたオーディオ信号（以下、入力信号という）を生成して出力する。
【００２７】
通信部１８は、有線、無線などによって、配信サーバなどとデータの送受信を行う通信手段である。通信部１８は、利用者が操作部１４を操作することによって、選択されるカラオケ曲を示す情報を送信し、この情報に対応したカラオケ曲の伴奏を示すＭＩＤＩ（Ｍｕｓｉｃａｌ  Ｉｎｓｔｒｕｍｅｎｔ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）形式などの演奏データ、カラオケ曲の歌詞を示す歌詞テキストデータおよび色替え指示を示すワイプデータなどの歌詞表示データを受信する。
【００２８】
そして、ＣＰＵ１１は、通信部１８が受信した歌詞表示データに基づいて、映像データを生成して表示部１５に出力することにより、表示部１５にカラオケ曲の歌詞などを表示させる。また、ＣＰＵ１１は、通信部１８が受信した演奏データに基づいて、オーディオ信号（以下、伴奏信号という）を生成する。ＣＰＵ１１は、生成したオーディオ信号である伴奏信号を音声出力部１６に供給して放音させる。以上が、カラオケ装置１のハードウエアの構成の説明である。
【００２９】
次に、カラオケ装置１のＣＰＵ１１が記憶部１２に記憶されたプログラムを実行することによって実現する機能のうち、エコーキャンセル機能について、図２を用いて説明する。図２は、ＣＰＵ１１が実現する機能を示したソフトウエアの構成を示すブロック図である。
【００３０】
ダブルトーク判定部１０１は、音声出力部１６に供給される伴奏信号と、音声入力部１７によって生成された入力信号とが入力され、これらの信号に対してＦＦＴを施して生成した周波数領域の複素ベクトルを出力するとともに、これらを用いて、ダブルトーク状態か否かを周波数ごとに判定し、判定結果を示す判定情報を生成する。ダブルトーク判定部１０１の詳細構成について、図３を用いて説明する。図３は、ダブルトーク判定部１０１の構成を示すブロック図である。
【００３１】
ＦＦＴ部１０１１は、入力信号が入力され、入力された入力信号にＦＦＴを施して、所定のタイミングごとに周波数領域の複素ベクトルＡを生成する。また、伴奏信号についても同様にして複素ベクトルＢを生成する。そして、生成した複素ベクトルＡと複素ベクトルＢとを対応させて組にしてバッファ部１０１２に記憶させる。そして、複素ベクトルＡと複素ベクトルＢとを生成するたびに、これらを対応させてバッファ部１０１２に記憶させる。
【００３２】
バッファ部１０１２は、上述のように、ＦＦＴ部１０１１から出力された複素ベクトルＡ、Ｂを、生成されるタイミングごとに対応させて組にして記憶する。
【００３３】
選択部１０１３は、バッファ部１０１２に記憶された複素ベクトルＡから１つの複素ベクトルＡを選択し、この複素ベクトルＡと、これに対応する複素ベクトルＢの組を読み出して、信号比算出部１０１４に出力する。そして、この選択を複数回（本実施形態においてはＮ回とする）繰り返す。このような選択は、所定のアルゴリズムによって定められた方法で行われる。例えば、バッファ部１０１２に記憶された複素ベクトルの組から、ランダムに選択するものであってもよいし、早い時刻に生成された順に選択するものであってもよく、どのようなアルゴリズムで行なわれてもよい。本実施形態においては、早い時刻に生成された順に選択するものとする。
【００３４】
信号比算出部１０１４は、選択部１０１３によって選択された組の複素ベクトルＡ、Ｂを用いた以下の数式（１）によって、信号比Ｐを算出する。
Ｐｍ＝｜Ａｍ／Ｂｍ｜・・・（１）
ただし、「Ｘ／Ｙ」は、複素ベクトルＸとＹとの対応する要素ごとの商を要素とする複素ベクトルを示し、｜Ｚ｜は複素ベクトルＺの絶対値（以下の数式においても同じ）を示す。また、ｍ＝１、２、・・・、Ｎであり、Ａｍ、Ｂｍは、選択部１０１３においてｍ回目に選択された組の複素ベクトルＡ、Ｂを示し、Ｐｍはｍ回目に選択された組の複素ベクトルＡ、Ｂによって算出された信号比Ｐである。ここで、複素ベクトルＡ、Ｂは、生成された順に選択されているから、ｍが大きくなるほど、後の時刻において生成された複素ベクトルであることを示している。言い換えれば、ｍは、ＦＦＴが行われる時間間隔を単位とした時刻を示している。
【００３５】
このように算出された信号比Ｐｍは、特定の時刻ｍにおいて、各周波数（Ｆｋ：ｋ＝１、２、・・・、ｎ）における入力信号の伴奏信号に対する割合（以下、信号比率という）を示し、例えば、図４（ａ）に示すようになっている。上述したように、信号比Ｐ１、Ｐ２、・・・とｍが大きくなるほど、後の時刻における入力信号と伴奏信号との信号比率を示すから、図４（ｂ）に示すように、周波数ごとの信号比率の時刻変化として表すこともできる。図４（ｂ）は、ｍによって示される時刻と信号比率との関係にして、各周波数Ｆｋ別に示したものである。
【００３６】
そして、信号比算出部１０１４は、算出した信号比Ｐｍを評価部１０１５に出力するとともに、伝達関数算出部１０２に、複素ベクトルＡｍ、Ｂｍを出力する。
【００３７】
評価部１０１５は、入力された信号比Ｐｍに基づいて、周波数Ｆｋごとに入力信号がダブルトーク状態か否（シングルトーク状態）を判断する。上述のように、信号比率は入力信号の伴奏信号に対する割合であるから、信号比率が大きいほど入力信号が大きい、すなわち音声入力部１７が伴奏音以外の音（この場合には歌唱者の歌唱）を多く収音していることになり、ダブルトーク状態と判定する。
【００３８】
具体的には、評価部１０１５は、入力された信号比Ｐｍにおいて、各周波数Ｆｋのうち所定のしきい値以上の信号比率に対応する周波数をダブルトーク状態である周波数として検出し、それ以外（所定のしきい値未満）である周波数をダブルトーク状態でない周波数、すなわちシングルトーク状態である周波数として判定する。例えば、時刻ｍ＝１におけるダブルトーク状態と検出される周波数の範囲を図４（ａ）に示した。また、周波数Ｆｋごとの信号比率の時刻変化として表した場合について、周波数Ｆ１におけるダブルトーク状態となる期間を図４（ｂ）に示した。
【００３９】
そして、評価部１０１５は、上述のように、信号比Ｐｍの各周波数の信号比率のうち、時刻ｍにおけるシングルトーク状態とみなせる所定の条件を満たす信号比率に対応する周波数Ｆｋを特定し、特定された周波数（以下、周波数Ｆｐという）を示す判定情報Ｃｍを伝達関数算出部１０２に出力する。以上が、ダブルトーク判定部１０１の構成の説明である。
【００４０】
図２に戻る。伝達関数算出部１０２は、複素ベクトルＡｍ、Ｂｍ、および判定情報Ｃｍが入力され、これらに基づいて周波数ごとの伝達関数Ｈ（Ｆｋ）を算出する。伝達関数算出部１０２の詳細構成について、図５を用いて説明する。図５は、伝達関数算出部１０２の構成を示すブロック図である。
【００４１】
算出部１０２１は、複素ベクトルＡｍ、Ｂｍ、および判定情報Ｃｍが入力される。そして、以下の数式（２）（３）によってＨａｍ、Ｈｂｍを算出する。
Ｈａｍ＝（Ａｍ＊Ｂｍ＊）・・・（２）
Ｈｂｍ＝（Ｂｍ＊Ｂｍ＊）・・・（３）
ただし、「Ｘ＊Ｙ」は、複素ベクトルＸとＹとの対応する要素ごとの積を要素とする複素ベクトル（以下の数式においても同じ）を示す。また「Ｂｍ＊」はＢｍの共役複素数（以下の数式においても同じ）である。
【００４２】
そして算出部１０２１は、算出したＨａｍ、Ｈｂｍの各周波数の要素Ｈａｍ（Ｆｋ）、Ｈｂｍ（Ｆｋ）のうち、判定情報Ｃｍが示す周波数Ｆｐに対応する要素を抽出したＨａｍ（Ｆｐ）、Ｈｂｍ（Ｆｐ）をバッファ部１０２２に出力して、周波数ごとに分類させて記憶させる。
【００４３】
バッファ部１０２２は、算出部１０２１から出力されたＨａｍ（Ｆｐ）、Ｈｂｍ（Ｆｐ）を周波数Ｆｋ別に分類して記憶する。バッファ部１０２２は、図６に示すように、Ｈａｍ（Ｆｐ）を記憶するＨａバッファと、Ｈｂｍ（Ｆｐ）を記憶するＨｂバッファとを有し、ＨａバッファおよびＨｂバッファは、それぞれＦｋバッファ（Ｆ１バッファ、Ｆ２バッファ、・・・、Ｆｎバッファ）を有し、周波数Ｆｐに応じて分類される。例えば、ｐ＝１であれば、Ｆ１バッファに記憶される。また、Ｆｋバッファは、所定数（以下、ｑという）の値を記憶でき、ｑ個を超えた場合には、最も古い時刻に記憶された値から消去していく。すなわち、Ｆｋバッファに記憶された値は、最新のｑ個の値となる。
【００４４】
そして、バッファ部１０２２は、ＨａバッファおよびＨｂバッファにおけるＦｋバッファにおいて記憶した値が、全ての周波数でｑ個に達すると、各Ｆｋバッファに記憶された値Ｈａｊ（Ｆｋ）、Ｈｂｊ（Ｆｋ）（ｊ＝１〜ｑ、ｋ＝１〜ｎ）を平均化部１０２３に出力する。なお、各Ｆｋバッファにおいて記憶した値が、全ての周波数でｑ個に達することにより、後述するように、これらの値に基づいて伝達関数が算出できるから、ダブルトーク判定部１０１におけるＦＦＴ部１０１１の処理を停止させてもよく、例えば、カラオケ曲の最後の方などに達したことにより、新たに伝達関数の算出が必要でない場合などにおいて停止させるようにすればよい。
【００４５】
平均化部１０２３は、Ｈａｊ（Ｆｋ）、Ｈｂｊ（Ｆｋ）が入力され、以下の数式（４）によって周波数ごとの伝達関数Ｈ（Ｆｋ）を算出し、キャンセル信号生成部１０３に出力する。
Ｈ（Ｆｋ）＝Ａｖｅ（Ｈａｊ（Ｆｋ））／Ａｖｅ（Ｈｂｊ（Ｆｋ））・・・（４）
ただし「Ａｖｅ（Ｈａｊ（Ｆｋ））」は、複素数であるＨａｊ（Ｆｋ）のｊ＝１〜ｑを平均して得られる複素数（以下の数式においても同じ）を示す。
【００４６】
ここで、上記方法により伝達関数Ｈが計算できる根拠について説明する。入力信号は、音声出力部１６のスピーカからの放音が、音声入力部１７のマイクロフォンによって収音されたものとノイズ信号とをあわせた信号であるから、選択部１０１３で選択される１つの組である複素ベクトルＡ、Ｂ、および当該組に対応するタイミングにおいて想定されるノイズ信号を示す複素ベクトルＥ（仮の値であって計算により導出されるものではない）は、以下の数式（５）が成り立つ。
Ａ＝Ｈ＊Ｂ＋Ｅ・・・（５）
よって、
Ｈ＝（Ａ−Ｅ）／Ｂ・・・（６）
となる。
【００４７】
次に、数式（６）の分母Ｂの共役複素数Ｂ＊を数式（６）の分母分子に乗算すると、以下の数式（７）が得られる。
Ｈ＝（（Ａ−Ｅ）＊Ｂ＊）／Ｂ＊Ｂ＊
＝（（Ａ＊Ｂ＊）−（Ｅ＊Ｂ＊））／（Ｂ＊Ｂ＊）・・・（７）
【００４８】
数式（７）を様々な組の複素ベクトルＡ、Ｂで計算し、分母分子をそれぞれ平均すると、分子の第２項（Ｅ＊Ｂ＊）は、相関の無いクロススペクトルの平均であるから、「０」となり、以下の数式（８）が得られ、これを周波数の要素ごとに表わすと数式（９）となる。
Ｈ＝Ａｖｅ（Ａ＊Ｂ＊）／Ａｖｅ（Ｂ＊Ｂ＊）・・・（８）
Ｈ（Ｆｋ）＝Ａｖｅ（Ａ（Ｆｋ）＊Ｂ＊（Ｆｋ））／Ａｖｅ（Ｂ（Ｆｋ）＊Ｂ＊（Ｆｋ））                                                        ・・・（９）
ただし、Ａｖｅ（Ａ（Ｆｋ）＊Ｂ＊（Ｆｋ））は、周波数Ｆｋにおいてシングルトーク状態と判定された周波数のＡ（Ｆｐ）とＢ（Ｆｐ）の共役複素数との積から算出した時間平均である。
【００４９】
このように、各周波数Ｆｋにおいてシングルトーク状態と判定された期間における入力信号と伴奏信号とに基づいて、周波数Ｆｋ別に伝達関数Ｈ（Ｆｋ）を算出することができる。ここで、歌唱者の歌唱中はダブルトーク状態となるが、マイクロフォンによって収音される歌唱者の歌唱の周波数分布は、その歌唱の基本周波数およびその倍音付近に分布することになるから、これらの周波数においてはダブルトーク状態となっても、それ以外のほとんどの周波数においては、シングルトーク状態であることになる。
【００５０】
このため、シングルトーク状態である周波数を抜き出せば、この周波数における伝達関数を算出できる。一方、ダブルトーク状態である周波数においては、伝達関数を算出することができないが、歌唱の基本周波数は曲のメロディなどに合わせて変化していくことにより、ダブルトーク状態と判定される周波数は逐次変化していくから、一定期間内には全ての周波数Ｆｋにおいてシングルトーク状態と判定される期間を得ることができる。これにより、歌唱者が歌唱を続けていても全ての周波数Ｆｋにおける伝達関数Ｈ（Ｆｋ）を算出することができる。以上が、伝達関数算出部１０２の構成の説明である。
【００５１】
図２に戻る。キャンセル信号生成部１０３は、伝達関数算出部１０２において算出された伝達関数Ｈ（Ｆｋ）が入力されると、別途、異なる伝達関数が入力されるまでは、この伝達関数を現状の伝達関数であるものとして設定する。以下、この周波数領域の伝達関数を伝達関数Ｈという。
【００５２】
そして、キャンセル信号生成部１０３は、音声出力部１６のスピーカに供給される伴奏信号と、設定された伝達関数とに基づいて、このスピーカからの音を音声入力部１７のマイクロフォンが収音すると想定される信号を示すキャンセル信号を生成する。具体的には、伴奏信号にＦＦＴを施した複素ベクトルＢと伝達関数Ｈとの要素ごとの積（Ｂ＊Ｈ）を算出し、この算出結果に対して逆ＦＦＴを行うことで、キャンセル信号を生成する。
【００５３】
減算部１０４は、音声入力部１７において生成された入力信号と、キャンセル信号生成部１０３において生成されたキャンセル信号とが入力される。そして、減算部１０４は、入力信号からキャンセル信号を減算した出力信号を出力する。このような出力信号は、音声入力部１７のマイクロフォンが収音した内容が、音声出力部１６のスピーカからの放音のみである場合には、その放音が低減または消去されたようなオーディオ信号となる。一方歌唱者の歌唱を音声入力部１７のマイクロフォンで収音した場合には、音声出力部１６のスピーカからの音が低減または消去されることにより、出力信号は、ほぼ歌唱者の歌唱を示すオーディオ信号となる。
【００５４】
次に、本実施形態に係るカラオケ装置１の動作について説明する。まず、カラオケ装置１の利用者（以下、歌唱者という）は操作部１４を操作して、カラオケ曲を選択する。そして、カラオケ曲に係る各種データを通信部１８によって受信すると、カラオケ曲が開始される。そして、歌唱者は、カラオケ曲にあわせて歌唱を行う。
【００５５】
カラオケ装置１は、ダブルトーク判定部１０１において、歌唱者の歌唱によって生成された入力信号について、周波数ごとにダブルトーク状態かシングルトーク状態かを判定する。そして、伝達関数算出部１０２は、入力信号から生成される複素ベクトルＡと伴奏信号から生成される複素ベクトルＢの各要素のうち、シングルトーク状態である周波数に対応する要素に基づいて、各周波数の伝達関数Ｈ（Ｆｋ）を算出する。このとき歌唱の基本周波数は随時変化することにより、シングルトーク状態である周波数は随時変化する。これにより、所定時間経過すると伝達関数算出に必要な全ての周波数がシングルトーク状態となり、各周波数において伝達関数を算出することができる。
【００５６】
また、カラオケ装置１は、このような伝達関数の算出が歌唱中であっても可能であるから、この算出を定期的に行うことにより、歌唱者が利用する音声入力部１７のマイクロフォンの向きや位置が変化しても、その位置に応じた伝達関数を算出することができる。
【００５７】
そして、キャンセル信号生成部１０３は、算出された伝達関数が設定されると、伴奏信号と設定された伝達関数とに基づいて、キャンセル信号が生成され、減算部１０４において入力信号から減算されることにより、出力信号が出力される。この出力信号は、歌唱者の歌唱と音声出力部１６のスピーカからの音とを含む入力信号から、このスピーカからの音が低減または消去された音を示すオーディオ信号となる。このとき、キャンセル信号生成部１０３は、定期的に伝達関数が算出されるたびに、設定される伝達関数が更新されるから、最新の状況に近い伝達関数を用いたキャンセル信号を生成することができる。
【００５８】
そして、歌唱者の歌唱の巧拙を評価するために、例えば、ＣＰＵ１１によってピッチ検出が行われる構成であるときには、この出力信号を用いてピッチの検出を行うようにする。これにより、音声入力部１７が生成した入力信号をそのまま用いてピッチの検出をするよりも、音声出力部１６のスピーカからの音が低減または消去されることにより、ほぼ歌唱者の歌唱を反映した出力信号を用いてピッチの検出をすることにより、より精密な検出をすることができる。
【００５９】
このように、本発明の実施形態に係るカラオケ装置１は、音声入力部１７において生成される入力信号に基づいて、入力信号の各周波数においてダブルトーク状態であるかシングルトーク状態であるかを判定し、シングルトーク状態である周波数の入力信号に基づいて、伝達関数を算出することができる。ここで、歌唱の基本周波数は随時変化することにより、シングルトーク状態である周波数も随時変化するから、所定時間経過するうちには、伝達関数算出に必要な全ての周波数がシングルトーク状態となり、各周波数における伝達関数を算出することができる。このように、歌唱中であっても伝達関数を算出することができるから、定期的に伝達関数を算出することにより、最新の状況に近い伝達関数を用いた精密なエコーキャンセル機能を実現することができる。
【００６０】
以上、本発明の実施形態について説明したが、本発明は以下のように、さまざまな態様で実施可能である。
【００６１】
＜変形例１＞
上述した実施形態においては、ダブルトーク判定部１０１は、入力信号と伴奏信号との周波数ごとの信号比率からダブルトーク状態か否かを判定していたが、入力信号の周波数ごとの信号強度から判定してもよい。この場合には、時刻ｍにおける周波数ごとの複素ベクトルＡｍの絶対値が、所定のしきい値以上であれば、ダブルトーク状態として判定するようにすればよい。
【００６２】
ここで、所定のしきい値は、予め定められた値でもよいし、時刻ｍより前の所定時間の信号強度に基づいて定められた値、例えば、その期間内の最大値に対する所定割合などとして随時変更されるようにしてもよい。このように、ダブルトーク判定部１０１は、複素ベクトルＡのみに基づいてダブルトーク状態か否かの判定を行うようにしてもよい。
【００６３】
＜変形例２＞
上述した実施形態、変形例１において、ダブルトーク状態か否かの判定に係る所定のしきい値については、周波数ごとに異なる値としてもよい。例えば、入力信号の高周波数帯域においては、歌唱者の歌唱の倍音成分が多くなるが、倍音成分の信号強度は低くなりやすいため、そのような周波数帯域においては、所定のしきい値を他の周波数帯域に比べて低くしてもよい。
【００６４】
＜変形例３＞
上述した実施形態においては、伝達関数の算出は定期的に行われるものとしたが、一定時間の間隔で行なわれることに限られない。例えば、バッファ部１０２２はが、ＨａバッファおよびＨｂバッファにおけるＦｋバッファにおいて記憶した値が、全ての周波数でｑ個に達すると、各Ｆｋバッファに記憶された値を平均化部１０２３に出力するときに、全てのＦｋバッファに記憶された内容を一旦消去する。そして、改めてＦｋバッファにおいて記憶した値が全ての周波数でｑ個に達したときに、各Ｆｋバッファに記憶された値を平均化部１０２３に出力するようにして伝達関数の算出が行われるようにすればよい。このようにすると、歌唱の内容によっては、各周波数におけるシングルトーク状態と判定される比率が変わってくるから、Ｆｋバッファにおいて記憶した値が全ての周波数でｑ個に達するまでの時間が変わってくることになり、伝達関数の算出が一定時間ごとに行われるとは限らない。
【００６５】
また、通信端末１８が受信する演奏データに伝達関数の算出を行うタイミングを示す情報が含まれるようにして、このタイミングに基づいて伝達関数の算出が行われるようにしてもよい。このようにすると、例えば、カラオケ曲のフレーズの切り替わりなど特定のタイミングにおいて伝達関数の算出が行われるようにすることができ、また、曲調などに応じて伝達関数の算出の頻度を変えることもできる。
【００６６】
＜変形例４＞
上述した実施形態においては、伝達関数算出部１０２は、全ての周波数の伝達関数Ｈ（Ｆｋ）を算出してからキャンセル信号生成部１０３に出力していたが、周波数ごとに伝達関数を算出してキャンセル信号生成部１０３に出力するようにしてもよい。この場合は、バッファ部１０２２は、全ての周波数におけるＦｋバッファに記憶された値がｑ個に達しなくても、ｑ個に達したＦｋバッファがあれば、そのＦｋバッファに記憶された値を平均化部１０２３に出力し、その周波数の伝達関数の算出を行なうようにすればよい。そして、算出した特定の周波数の伝達関数をキャンセル信号生成部１０３に出力し、キャンセル信号生成部１０３は、設定された伝達関数の周波数のうち、入力された周波数の伝達関数を更新するようにすればよい。このようにすると、シングルトーク状態と判定される比率の高い周波数においては、伝達関数の更新が頻繁に行われ、より最新の状態に近い伝達関数を用いたエコーキャンセル機能を実現することができる。
【００６７】
＜変形例５＞
上述した実施形態において、伝達関数を算出する周波数、また周波数の範囲を設定するようにしてもよい。例えば、歌唱などのピッチが不安定な音とは対照的に、伴奏信号の音に係る周波数分布において、強度の大きい周波数は、その音程（基本周波数）、音色（倍音成分）などに応じた周波数に限られる場合がある。この様な場合には、通信部１８において受信される演奏データが、カラオケ曲の伴奏音において強度が大きくなると想定される周波数を示す情報を含むようにして、この周波数、またその周波数範囲に限定した伝達関数を算出するように、ＦＦＴ部１０１１におけるＦＦＴ処理を行うようにしてもよい。このようにすると、伝達関数の算出に係る演算量を低減することができる。
【図面の簡単な説明】
【００６８】
【図１】実施形態に係るカラオケ装置のハードウエアの構成を示すブロック図である。
【図２】実施形態に係るカラオケ装置のエコーキャンセル機能に係るソフトウエアの構成を示すブロック図である。
【図３】実施形態に係るダブルトーク判定部の構成を示すブロック図である。
【図４】実施形態に係るダブルトーク判定の説明図である。
【図５】実施形態に係る伝達関数算出部の構成を示すブロック図である。
【図６】実施形態に係る伝達関数算出部のバッファ部の構成を示すブロック図である。ブロック図である。
【符号の説明】
【００６９】
１…カラオケ装置、１０…バス、１１…ＣＰＵ、１２…記憶部、１３…ＲＡＭ、１４…操作部、１５…表示部、１６…音声出力部、１７…音声入力部、１８…通信部、１０１…ダブルトーク判定部、１０２…伝達関数算出部、１０３…キャンセル信号生成部、１０４…減算部、１０１１…ＦＦＴ部、１０１２…バッファ部、１０１３…選択部、１０１４…信号比算出部、１０１５…評価部、１０２１…算出部、１０２２…バッファ部、１０２３…平均化部
【図１】
2009150920.tif 000003
【図２】
2009150920.tif 000004
【図３】
2009150920.tif 000005
【図４】
2009150920.tif 000006
【図５】
2009150920.tif 000007
【図６】
2009150920.tif 000008