以下に、図面を参照しつつ、本願の開示する雑音除去装置の一実施形態について詳細に説明する。なお、以下では、本願の開示する雑音除去装置の一実施形態として後述する実施例により、本願が開示する技術が限定されるものではない。
図1は、実施例1に係る雑音除去装置を示す図である。同図に示すように、実施例1に係る雑音除去装置1は、除去部4、混入検知部5および制御部6を有する。
そして、図1に示す第1の入力部2は、主に第1の音声が入力される。また、図1に示す第2の入力部3は、主に第2の音声が入力される。
また、図1に示す除去部4は、第2の入力部3から取得した第2の信号に基づいて更新されるフィルタ係数を用いて、第1の入力部2から取得した第1の信号から第2の音声の成分を除去する。
また、図1に示す混入検知部5は、第1の信号と第2の信号との間の相関性を示す相関値を算出し、当該算出された相関値が所定の閾値を超えるか否かを判定する。さらに、混入検知部5は、第1の信号の出力レベルと第2の信号の出力レベルとを比較し、第1の信号の出力レベルと第2の信号の出力レベルとの差が所定の閾値を超えるか否かを判定する。そして、混入検知部5は、相関値が所定の閾値を超えるものと判定し、かつ出力レベルの差が所定の閾値を超えるものと判定した場合には、第2の信号に第1の音声成分が混入している旨を検知する。
また、図1に示す制御部6は、混入検知部5により第2の信号に第1の音声の成分が含まれている旨が検知された場合に、フィルタ係数の更新を停止するように制御する。
すなわち、実施例1に係る雑音除去装置は、第2の信号に第1の音声の成分が混入している場合には、フィルタ係数の更新を停止する。このとき、実施例1に係る雑音除去装置は、第1の信号と第2の信号との相関の度合いが高いかどうかを判定することにより、第2の信号に第1の音声の成分が混入しているか否かを判定する。したがって、第2の信号に第1の音声の成分が混入しているか否かを検知する精度を上げることができ、第2の信号に第1の音声の成分が混入している状態でのフィルタ係数の更新を回避できる。よって、結果的に、第1の音声から第2の音声の成分を精度よく除去できる。
[雑音除去装置の構成(実施例2)]
図2は、実施例2に係る構成を示す図である。なお、以下では、実施例2に係る雑音除去装置を、ショッピングセンタなどの公共スペースにて音声コミュニケーションを使った対人サービスを行うサービス提供ロボットに適用した場合の一実施形態について説明する。
図2に示すように、サービス提供ロボット100は、音声取得用マイクロホン(MIC_S)110、雑音取得用マイクロホン(MIC_N)120および音声再生スピーカ130を有する。さらに、サービス提供ロボット100は、同図に示すように、A/D(アナログデジタル変換器)140a〜140c、D/A(デジタルアナログ変換器)150、音声認識部160およびロボットコントローラー170を有する。
音声取得用マイクロホン110は、主にサービス提供ロボット100の利用者から発せられた発話音声の入力を受け付ける。雑音取得用マイクロホン120は、主にサービス提供ロボット100を取り巻く環境内に流れているアナウンスやBGMなど、利用者から発せられる発話音声以外の環境音の入力を受け付ける。音声再生スピーカ130は、サービス提供ロボット100にて再生される音声を利用者に向けて出力する。
A/D140aは、音声取得用マイクロホン110を介して入力されるアナログの音声信号をデジタルの音声信号に変換し、雑音除去装置200に出力する。A/D140bは、雑音取得用マイクロホン120を介して入力されるアナログの雑音信号をデジタルの雑音信号に変換し、雑音除去装置200に出力する。A/D140cは、後述するD/A150を介して入力されるアナログの再生音声信号をデジタルの再生音声信号に変換し、雑音除去装置200に出力する。
音声認識部160は、雑音除去装置200から出力される音声信号の認識処理を実行し、認識結果をロボットコントローラー170に送出する。例えば、音声認識部160は、公知の音声認識手法を用いて、利用者の発した音声に含まれる単語や文節などを抽出する。そして、音声認識部160は、抽出した単語や文節などを認識結果としてロボットコントローラー170に送出する。
ロボットコントローラー170は、音声認識部160から送出された音声認識結果に応じてデジタルの再生音声信号を生成し、生成した再生音声信号をD/A150に送出する。例えば、ロボットコントローラー170は、音声認識部160から送出された単語や文節に対応する応答(単語や文節)を特定し、特定した応答を再生する再生音声信号を生成する。また、ロボットコントローラー170は、再生音声信号をD/A150に送出する場合に、サービス提供ロボット100を音源とする音声が再生されることを示す音声再生フラグを後述する雑音除去装置200(フィルタ係数推定器222,232)に出力する。例えば、ロボットコントローラー170は、音声再生状態にある場合には、“True(=音声再生)”を音声再生フラグとして出力し、音声無再生状態にある場合には、“False(=音声無再生)”を音声再生フラグとして出力する。
D/A150は、後述するロボットコントローラー170から送出されたデジタルの再生音声信号をアナログの信号に変換し、音声再生スピーカ130に送出する。
雑音除去装置200は、後述するノイズキャンセル部220およびエコーキャンセル部230により、A/D140aから出力された音声信号から雑音成分および再生音声成分を除去した音声信号を音声認識部160に出力する。雑音除去装置200は、例えば、図2に示すように、音声入力検出器210、ノイズキャンセル部220およびエコーキャンセル部230を有する。
音声入力検出器210は、A/D140aから出力された音声信号およびA/D140bから出力された雑音信号を用いて、雑音信号に音声信号が混入しているか否かを検出する。そして、音声入力検出器210は、雑音信号に音声信号が混入しているか否かを示す音声入力フラグを、後述するノイズキャンセル部220(フィルタ係数推定器222)に送出する。
図3は、実施例2に係る音声入力検出器の構成を示す図である。例えば、同図に示すように、音声入力検出器210は、ディレイタップ211a,211bと、フレーム分割処理部212a,212bと、相互相関検出器213と、信号レベル比較器214と、フラグ生成器215を有する。
ディレイタップ211a,211bは、既知の遅延(例えば、A/Dにおける遅延差や伝送経路での遅延など)を調整する。例えば、ディレイタップ211aは、A/D140aから出力された音声信号について、A/D140aにおける遅延差などを調整し、フレーム分割処理部212aに送出する。また、例えば、ディレイタップ211bは、A/D140bから出力された雑音信号について、A/D140bにおける遅延差などを調整し、フレーム分割処理部212bに送出する。
フレーム分割処理部212a,212bは、ディレイタップ211a,211bから送出された信号を分割し、相互相関検出器213および信号レベル比較器214にそれぞれ送出する。例えば、フレーム分割処理部212aは、ディレイタップ211aから送出された音声信号を、数サンプル(例えば、512サンプル)を1フレームとして逐次分割する。なお、フレーム分割処理部212a,212b以降の処理は、全てフレーム単位で処理する。
そして、フレーム分割処理部212aは、分割した各音声信号を相互相関検出器213および信号レベル比較器214にそれぞれ送出する。同様に、フレーム分割処理部212bは、例えば、ディレイタップ211bから送出された雑音信号を、数サンプル(例えば、512サンプル)を1フレームとして逐次分割する。そして、フレーム分割処理部212bは、分割した各音声信号を相互相関検出器213および信号レベル比較器214にそれぞれ送出する。
相互相関検出器213は、フレーム分割処理部212aから送出された音声信号と、フレーム分割処理部212bから送出された雑音信号との間の相関性を示す相互相関値を算出する。
例えば、相互相関検出器213は、音声信号と雑音信号とを所定の位相で重ね合わせ、重ね合わせた所定の位相を中心とする前後50サンプルの範囲で音声信号と雑音信号との相互相関演算を行い、相互相関値を算出する。そして、相互相関検出器213は、算出した相互相関値が最大値となる相関最大位置情報を取得する。さらに、相互相関検出器213は、相互相関値の最大値が予め定めた閾値よりも大きいか否かを判定する。判定の結果、相互相関値の最大値が予め定めた閾値よりも大きい場合は、相互相関検出器213は、“True(=相関有り)”を相関有無情報として後述するフラグ生成器215に送出する。これとは反対に、判定の結果、相互相関値の最大値が予め定めた閾値よりも小さい場合は、“False(=相関無し)”を相関有無情報として後述するフラグ生成器215に送出する。
信号レベル比較器214は、フレーム分割処理部212aから送出される音声信号の信号レベル(例えば、電力値)とフレーム分割処理部212bから送出される雑音信号の信号レベル(例えば、電力値)とを比較する。例えば、図3に示すように、信号レベル比較器214は、二乗平均演算器214aおよびパワー比較器214bを有する。
二乗平均演算器214aは、フレーム分割処理部212aから送出された音声信号の電圧値、およびフレーム分割処理部212bから送出された雑音信号の電圧値をそれぞれ二乗し、音声信号および雑音信号の電力値をそれぞれ算出する。そして、二乗平均演算器214aは、音声信号および雑音信号の電力値を後述するパワー比較器214bに送出する。
パワー比較器214bは、相互相関検出器213により取得された相関最大位置情報に対応する位相で、二乗平均演算器214aから送出された音声信号および雑音信号を重ね合わせる。そして、パワー比較器214bは、相関最大位置情報に対応する位相で音声信号と雑音信号とを重ね合わせた時の、音声信号の電力値と雑音信号の電力値の平均値の差を算出し、算出した差が予め定めた閾値より大きいか否かを判定する。判定の結果、算出した差が予め定めた閾値より大きい場合には、パワー比較器214bは、“True(=レベル差有り)”をレベル比較情報として後述するフラグ生成器215に送出する。これとは反対に、判定の結果、算出した差が予め定めた閾値以下である場合には、パワー比較器214bは、 “False(=レベル差無し)”をレベル比較情報として後述するフラグ生成器215に送出する。なお、平均値はフレーム単位で処理する。
フラグ生成器215は、相互相関検出器213および信号レベル比較器214から送出される相関有無情報及びレベル比較情報の組合せと、生成する音声入力フラグの内容との対応関係を予め定義した判定テーブルを有する。そして、フラグ生成器215は、この判定テーブルに従って、雑音信号に音声信号が混入しているか否かを示す音声入力フラグを生成し、生成したフラグを後述するノイズキャンセル部220に送出する。なお、音声入力フラグは、分割したフレーム単位で出力し、例えば、1フレームを512サンプルで分割した場合は、512サンプルが同じフラグを出力する。
図4は、実施例2に係る音声入力フラグの判定テーブル例を示す図である。同図に示すように、判定テーブルには、一番左の列の項目として相互相関検出器213から送出される相関有無情報(最大相互相関値>しきい値)が定義される。例えば、相互相関検出器213から送出される相関有無情報が「True」である場合には、雑音信号と音声信号との間に相関があることを示し、相関有無情報が「False」である場合には、雑音信号と音声信号との間に相関がないことを示す。
また、図4に示すように、判定テーブルには、真ん中の列の項目として信号レベル比較器214から送出されるレベル比較情報(二乗平均差>しきい値)が定義される。例えば、信号レベル比較器214から送出されるレベル比較情報が「True」である場合には、雑音信号と音声信号との間にレベル差があることを示し、レベル比較情報が「False」である場合には、雑音信号と音声信号との間にレベル差がないことを示す。
また、図4に示すように、判定テーブルには、一番右の列の項目として、フラグ生成器215が生成すべき音声入力フラグの種別が定義される。例えば、音声入力フラグが「True」である場合には、雑音信号に音声信号が混入していることを示し、音声入力フラグが「False」である場合には、雑音信号に音声信号が混入していないことを示す。
そして、図4に示すように、判定テーブルには、相互相関検出器213および信号レベル比較器214から送出される相関有無情報及びレベル比較情報が共に「True」である場合にのみ、生成すべき音声入力フラグの種別を「True」とするように定義されている。
例えば、フラグ生成器215は、相互相関検出器213および信号レベル比較器214から送出される相関有無情報及びレベル比較情報が共に“True”である場合には、図4に示す判定テーブル最上段の行に定義された情報に従う。すなわち、フラグ生成器215は、雑音信号への音声信号の混入があることを示す“True”の音声入力フラグを生成する。
また、例えば、フラグ生成器215は、相互相関検出器213および信号レベル比較器214から送出される相関有無情報及びレベル比較情報が共に“False”である場合には、図4に示す判定テーブル4段目の行に定義された情報に従う。すなわち、フラグ生成器215は、雑音信号への音声信号の混入がないことを示す“False”の音声入力フラグを生成する。
また、例えば、フラグ生成器215は、相互相関検出器213および信号レベル比較器214から送出される相関有無情報及びレベル比較情報のいずれか一方が“False”である場合には、図4に示す判定テーブル2,3段目の行に定義された情報に従う。すなわち、フラグ生成器215は、雑音信号への音声信号の混入がないことを示す“False”の音声入力フラグを生成する。
ノイズキャンセル部220は、図2に示すように、FIR(Finite impulse response)フィルタ221およびフィルタ係数推定器222を有する。
FIRフィルタ221は、フィルタ係数推定器222から送出されるノイズキャンセル(NC)用のフィルタ係数を用いて、A/D140aから出力される音声信号から雑音成分を除去する。なお、ノイズキャンセル(NC)用のフィルタ係数は、音声信号に含まれる雑音成分を「0」にするように、雑音信号を適応する場合の伝達関数の係数として用いる。
フィルタ係数推定器222は、A/D140bから出力される雑音信号に基づいて、ノイズキャンセル(NC)用のフィルタ係数の更新を行い、更新したフィルタ係数をFIRフィルタ221に送出する。また、フィルタ係数推定器222は、音声入力検出器210から送出される音声入力フラグ、およびロボットコントローラー170から送出される音声再生フラグに基づいて、ノイズキャンセル(NC)用のフィルタ係数の更新を制御する。
例えば、フィルタ係数推定器222は、音声再生フラグに対応付けて、音声再生フラグの示す音声再生状態および音声再生状態に応じた対応動作を予め定義した実行判定テーブルを有する。そして、フィルタ係数推定器222は、この実行判定テーブルに従って、ノイズキャンセル用のフィルタ係数の更新を行う。
図5は、実施例2に係るフィルタ係数更新の実行判定テーブル例を示す図である。同図に示すように、実行判定テーブルには、一番左の列の項目として音声再生フラグの種別、真ん中の列の項目として音声再生フラグの示す音声再生の状態、一番右の列の項目としてフィルタ係数推定器222の対応動作が定義される。例えば、実行判定テーブルには、音声再生フラグ「True」に対応付けて、音声再生状態「音声再生」、対応動作「係数更新停止」が定義される。また、例えば、同図に示すように、実行判定テーブルには、音声再生フラグ「False」に対応付けて、音声再生状態「音声無再生」、対応動作「係数更新」が定義される。なお、実行判定テーブルには、音声再生状態(「音声再生」、「音声無再生」)は、必ずしも定義されている必要はない。
例えば、フィルタ係数推定器222は、フィルタ係数の更新を実行するタイミングで、音声再生フラグ“True”を入力済みである場合には、同図に示す実行判定テーブルに基づいて音声再生状態にあると判定する。そして、フィルタ係数推定器222は、同図に示す実行判定テーブルに従って、ノイズキャンセル(NC)用のフィルタ係数の更新停止を決定する。また、例えば、フィルタ係数推定器222は、フィルタ係数更新を実行するタイミングで、音声再生フラグ“False”を入力済みである場合には、同図に示す実行判定テーブルに基づいて音声無再生状態にあると判定する。そして、フィルタ係数推定器222は、同図に示す実行判定テーブルに従って、ノイズキャンセル(NC)用のフィルタ係数の更新を行う。
また、フィルタ係数推定器222は、音声入力フラグに対応付けて、音声入力フラグの示す音声入力状態(雑音信号への音声信号の混入の有無)および音声入力状態に応じた対応動作を予め定義したもう一つの実行判定テーブルを有する。そして、フィルタ係数推定器222は、この実行判定テーブルに従って、ノイズキャンセル用のフィルタ係数の更新を行う。
図6は、実施例2に係るフィルタ係数更新の実行判定テーブル例を示す図である。同図に示すように、実行判定テーブルには、一番左の列の項目として音声入力フラグの種別、真ん中の列の項目として雑音信号への音声信号の混入の有無を示す音声入力混入状態、一番右の列の項目としてフィルタ係数推定器222の対応動作が定義される。例えば、実行判定テーブルには、音声入力フラグ「True」に対応付けて、音声入力状態「音声入力混入有り」、対応動作「係数更新停止」が定義される。また、例えば、同図に示すように、実行判定テーブルには、音声入力フラグ「False」に対応付けて、音声入力混入状態「音声入力混入なし」、対応動作「係数更新」が定義される。
例えば、フィルタ係数推定器222は、フィルタ係数更新を実行するタイミングで、音声入力フラグ“True”を入力済みである場合には、同図に示す実行判定テーブルに基づいて、音声入力混入有り(雑音信号への音声信号の混入有)の状態にあると判定する。そして、フィルタ係数推定器222は、同図に示す実行判定テーブルに従って、ノイズキャンセル(NC)用のフィルタ係数の更新停止を決定する。また、例えば、フィルタ係数推定器222は、フィルタ係数更新を実行するタイミングで、音声入力フラグ“False”を入力済みである場合には、同図に示す実行判定テーブルに基づいて、音声入力混入なし(雑音信号への音声信号の混入無)の状態にあると判定する。そして、フィルタ係数推定器222は、同図に示す実行判定テーブルに従って、ノイズキャンセル(NC)用のフィルタ係数の更新を行う。
上記したフィルタ係数の更新についてまとめると、例えば、フィルタ係数推定器222は、フィルタ係数の更新を実行するタイミングで、少なくとも、音声再生フラグ“True”、音声入力フラグ“True”のいずれか一方を入力済みである場合には、フィルタ係数の更新を停止する。
なお、フィルタ係数推定器222は、例えば、ノイズキャンセル(NC)用のフィルタ係数の更新を停止した場合には、前回使用したフィルタ係数をそのままFIRフィルタ221に送出する。なお、フィルタ係数推定器222によりフィルタ係数の更新が停止されている間、FIRフィルタ221は、前回使用したフィルタ係数を用いて、音声信号から雑音成分を除去する。
エコーキャンセル部230は、図2に示すように、FIR(Finite impulse response)フィルタ231およびフィルタ係数推定器232を有する。
FIRフィルタ231は、フィルタ係数推定器232から送出されるエコーキャンセル(EC)用のフィルタ係数を用いて、A/D140aから出力される音声信号から再生音声成分を除去する。なお、エコーキャンセル(EC)用のフィルタ係数は、音声信号に含まれる再生音声成分を「0」にするように、再生音声信号を適応する場合の伝達関数の係数として用いる。
フィルタ係数推定器232は、A/D140cから出力される再生音声信号に基づいて、エコーキャンセル(EC)用のフィルタ係数の更新を行い、更新したフィルタ係数をFIRフィルタ231に送出する。また、フィルタ係数推定器232は、ロボットコントローラー170から送出される音声再生フラグに基づいて、エコーキャンセル(EC)用のフィルタ係数の更新を制御する。なお、フィルタ係数推定器232は、図には示さないが、上述したフィルタ係数推定器222と同様の実行判定テーブル(例えば、図5参照)を有する。
例えば、フィルタ係数推定器232は、フィルタ係数の更新を実行するタイミングで、音声再生フラグ“True”を入力済みである場合には、音声再生状態にあると判定し、フィルタ係数の更新を行う。また、フィルタ係数推定器232は、フィルタ係数更新を実行するタイミングで、音声再生フラグ“False”を入力済みである場合には、音声無再生状態にあると判定し、フィルタ係数の更新を停止する。
なお、フィルタ係数推定器232は、例えば、エコーキャンセル(EC)用のフィルタ係数の更新を停止した場合には、前回使用したフィルタ係数をそのままFIRフィルタ231に送出する。なお、フィルタ係数推定器232によりフィルタ係数の更新が停止されている間、FIRフィルタ231は、前回使用したフィルタ係数を用いて、音声信号から再生音声成分を除去する。
なお、音声入力検出器210、ノイズキャンセル部220およびエコーキャンセル部230は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路である。あるいは、音声入力検出器210、ノイズキャンセル部220およびエコーキャンセル部230は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路であってもよい。
[雑音除去装置による処理(実施例2)]
図7〜図9は、実施例2に係る雑音除去装置による処理の流れを示す図である。まず、図7を用いて、音声入力検出器210による処理の流れを説明する。同図に示すように、音声入力検出器210は、A/D140aから出力された音声信号およびA/D140bから出力された雑音信号を受け付けると(ステップS1肯定)、雑音信号に音声信号が混入しているか否かを検出する(ステップS2)。
そして、音声入力検出器210は、雑音信号に音声信号が混入していると判定した場合には(ステップS2肯定)、雑音信号への音声信号の混入があることを示す音声入力フラグ“True”をノイズキャンセル部220に送出する(ステップS3)。一方、音声入力検出器210は、雑音信号に音声信号が混入していないと判定した場合には(ステップS2否定)、雑音信号への音声信号の混入がないことを示す音声入力フラグ“False”をノイズキャンセル部220に送出する(ステップS4)。
次に、図8を用いて、ノイズキャンセル部220による処理の流れを説明する。同図に示すように、フィルタ係数推定器222は、フィルタ係数の更新を実行するタイミングで、入力済みである音声入力フラグまたは音声再生フラグの少なくとも一方が“True”である場合には(ステップS1肯定)、次のように動作する。すなわち、フィルタ係数推定器222は、ノイズキャンセル(NC)用のフィルタ係数の更新を停止する(ステップS2)。そして、フィルタ係数推定器222は、前回使用したノイズキャンセル(NC)用のフィルタ係数をFIRフィルタ221に送出する(ステップS3)。その結果、フィルタ係数推定器222によりフィルタ係数の更新が停止されている間、FIRフィルタ221は、前回使用したフィルタ係数を用いて、音声信号から雑音成分を除去する。
ここで、ステップS1の説明に戻る。フィルタ係数推定器222は、フィルタ係数の更新を実行するタイミングで、入力済みである音声入力フラグまたは音声再生フラグの少なくとも一方が“True”ではない場合(双方がFalseである場合)には(ステップS1否定)、次のように動作する。すなわち、フィルタ係数推定器222は、ノイズキャンセル(NC)用のフィルタ係数を更新する(ステップS4)。そして、フィルタ係数推定器222は、更新後のノイズキャンセル(NC)用のフィルタ係数をFIRフィルタ221に送出する(ステップS5)。その結果、FIRフィルタ221は、フィルタ係数推定器222により更新されたフィルタ係数を用いて、音声信号から雑音成分を除去する。
続いて、図9を用いて、エコーキャンセル部230による処理の流れを説明する。同図に示すように、フィルタ係数推定器232は、フィルタ係数の更新を実行するタイミングで、入力済みである音声再生フラグが“True”の場合には(ステップS1肯定)、次のように動作する。すなわち、フィルタ係数推定器232は、エコーキャンセル(EC)用のフィルタ係数を更新する(ステップS2)。そして、フィルタ係数推定器232は、更新後のエコーキャンセル(EC)用のフィルタ係数をFIRフィルタ231に送出する(ステップS3)。その結果、FIRフィルタ231は、フィルタ係数推定器232により更新されたフィルタ係数を用いて、音声信号から再生音声成分を除去する。
ここで、ステップS1の説明に戻る。フィルタ係数推定器232は、フィルタ係数の更新を実行するタイミングで、入力済みである音声再生フラグが“True”ではない場合(Falseである場合)には(ステップS1否定)、次のように動作する。すなわち、フィルタ係数推定器232は、エコーキャンセル(EC)用のフィルタ係数の更新を停止する(ステップS4)。そして、フィルタ係数推定器232は、前回使用したエコーキャンセル(EC)用のフィルタ係数をFIRフィルタ231に送出する(ステップS5)。その結果、フィルタ係数推定器232によりフィルタ係数の更新が停止されている間、FIRフィルタ231は、前回使用したフィルタ係数を用いて、音声信号から再生音声成分を除去する。
[実施例2による効果]
上述してきたように、実施例2によれば、雑音除去装置200は、雑音信号に音声信号が混入しているか否かを判定して、混入していると判定した場合には音声入力フラグ“True”を生成する。そして、雑音除去装置200は、ノイズキャンセル用のフィルタ係数更新のタイミングで、入力済みである音声再生フラグまたは音声入力フラグの少なくとも一方が“True”の場合には、フィルタ係数の更新を停止する。
すなわち、雑音除去装置200は、雑音信号に音声信号が混入している場合には、フィルタ係数の更新を停止する。このとき、雑音除去装置200は、音声信号と雑音信号との相関の度合いが高いかどうかを判定することにより、雑音信号に音声信号が混入しているか否かを判定する。したがって、雑音信号に音声信号が混入しているか否かを検知する精度を上げることができ、雑音信号に音声信号が混入している状態でのフィルタ係数の更新を回避できる。よって、結果的に、音声信号から雑音音声の成分を精度よく除去できる。
また、雑音除去装置200は、エコーキャンセル用のフィルタ係数更新のタイミングで、入力済みである音声再生フラグが“True”の場合には、フィルタ係数の更新を停止する。
すなわち、雑音除去装置200は、音声再生が行われていない状態でのエコーキャンセル用のフィルタ係数の更新を回避できる。よって、結果的に、音声信号から再生音声成分を精度よく除去できる。
なお、上述してきた実施例2の雑音除去装置200は、エコーキャンセルが必須の処理でなければ、エコーキャンセル部230を有する必要はなく、ノイズキャンセル部220のみを有すればよい。
また、上記の実施例2において、音声取得用マイクロホン110に音声を入力することが可能な範囲に存在する人を検出した場合に、ロボットコントローラー170から音声入力フラグをノイズキャンセル部220に出力するようにしてもよい。
図10は、実施例3に係る構成を示す図である。同図に示すように、サービス提供ロボット100は、音声取得用マイクロホン(MIC_S)110、雑音取得用マイクロホン(MIC_N)120および音声再生スピーカ130を有する。さらに、サービス提供ロボット100は、同図に示すように、A/D(アナログデジタル変換器)140a〜140c、D/A(デジタルアナログ変換器)150、音声認識部160およびロボットコントローラー170を有する。また、同図に示すように、雑音除去装置200は、ノイズキャンセル部220およびエコーキャンセル部230を有する。
ここで、雑音除去装置200は、音声入力検出器210を有さない点が実施例2とは異なる。また、サービス提供ロボット100が、音声取得用マイクロホン110に音声を入力することが可能な範囲に存在する人を検出する人検出部180を新たに有する点が実施例2とは異なる。
人検出部180は、ビジョン(カメラ)を有し、音声取得用マイクロホン110に音声を入力することが可能な範囲に存在する人を検出する。例えば、人検出部180は、ビジョン(カメラ)を用いて、音声取得用マイクロホン110の指向方向の一定距離内(例えば、100cm)に人を検出すると、音声入力フラグ“True”を出力すべき旨をロボットコントローラー170に送出する。なお、人検出部180は、エッジ抽出やパターンマッチングなどの既存技術を用いて、ビジョンにより撮影した画像データについて画像認識を実行し、音声取得用マイクロホン110に音声を入力することが可能な範囲に存在する人を検出する。
また、人検出部180は、ビジョン(カメラ)ではなく、音声取得用マイクロホンの指向方向に存在する物体を検出可能な位置に取り付けられた赤外線センサーや超音波センサーなどの距離測定センサー(距離センサー)を有することもできる。この場合に、人検出部180は、距離センサーを用いて、既定の距離以内に物体がある場合には、一定時間物体との距離を計測する。そして、人検出部180は、一定時間計測した物体との距離に変化がある場合には、音声入力フラグ“True”を出力すべき旨をロボットコントローラー170に送出する。一方、人検出部180は、一定時間計測した物体の距離が変わらない場合には、音声入力フラグ“False” を出力すべき旨をロボットコントローラー170に送出する。なお、人検出部180は、上記したビジョン(カメラ)や距離センサーに限らず、リアルタイムに人検知する装置であれば、どのような装置でも用いることができ、それらの装置を単体あるいは組み合わせで用いることもできる。
ロボットコントローラー170は、人検出部180から音声入力フラグを出力すべき旨を入力すると、ノイズキャンセル部220に音声入力フラグを出力する。
ノイズキャンセル部220は、ロボットコントローラー170から音声入力フラグを入力すると、上述した実施例2と同様に動作する。すなわち、フィルタ係数推定器222は、ノイズキャンセル用のフィルタ係数更新のタイミングで、ロボットコントローラー170から音声入力フラグを入力済みである場合には、ノイズキャンセル用のフィルタ係数の更新を停止する。
また、上記の実施例2で説明した雑音除去装置200をハンズフリー電話300に同様に適用することができる。
[雑音除去装置の構成(実施例4)]
図11は、実施例4に係る構成を示す図である。同図に示すように、ハンズフリー電話300は、音声取得用マイクロホン(MIC_S)310、雑音取得用マイクロホン(MIC_N)320および音声再生スピーカ330を有する。さらに、ハンズフリー電話300は、同図に示すように、雑音除去装置200、A/D(アナログデジタル変換器)340a,340b、D/A(デジタルアナログ変換器)350を有する。また、同図に示すように、雑音除去装置200は、音声入力検出器210、ノイズキャンセル部220、エコーキャンセル部230および受話音声入力検出器240を有する。
ここで、雑音除去装置200は、図11に示すように、受話音声入力検出器240を有する点が、実施例2に係る雑音除去装置200とは異なる。
受話音声入力検出器240は、音声再生スピーカ330を介して出力された遠端話者信号に対応する受話音声が、音声信号に混入しているか否かを検出する。なお、受話音声入力検出器240は、実施例2で説明した音声入力検出器210の処理と同様の処理を行って、音声信号に受話音声が混入しているか否かを検出する。
図12は、実施例4に係る受話音声入力検出器240の構成を示す図である。例えば、同図に示すように、受話音声入力検出器240は、ディレイタップ241a,241bと、フレーム分割処理部242a,242bと、相互相関検出器243と、信号レベル比較器244と、フラグ生成器245を有する。なお、ディレイタップ241a,241b、フレーム分割処理部242a,242b、相互相関検出器243、信号レベル比較器244およびフラグ生成器245の処理は、上述した実施例2の音声入力検出器210と同様であるので、以下に簡単に説明する。
ディレイタップ241a,241bは、既知の遅延(例えば、A/Dにおける遅延差や伝送経路での遅延など)を調整する。フレーム分割処理部242a,242bは、ディレイタップ241a,241bから送出された信号を分割し、相互相関検出器243および信号レベル比較器244にそれぞれ送出する。
相互相関検出器243は、フレーム分割処理部242aから送出された音声信号と、フレーム分割処理部242bから送出された遠端話者信号との間の相関性を示す相互相関値を算出する。そして、相互相関検出器243は、相互相関値の最大値と閾値との比較結果に応じて、“True(=相関有り)”あるいは“False(=相関無し)”の相関有無情報をフラグ生成器245に送出する。
信号レベル比較器244は、例えば、図12に示すように、二乗平均演算器244aおよびパワー比較器244bを有する。信号レベル比較器244は、フレーム分割処理部242aから送出される音声信号の信号レベル(例えば、電力値)とフレーム分割処理部242bから送出される遠端話者信号の信号レベル(例えば、電力値)とを比較する。そして、信号レベルの比較結果に応じて、信号レベル比較器244は、“True(=レベル差有り)”あるいは“False(=レベル差無し)”のレベル比較情報をフラグ生成器245に送出する。
フラグ生成器245は、相互相関検出器243および信号レベル比較器244から送出された相関有無情報及びレベル比較情報に基づいて、音声信号に遠端話者信号が混入しているか否かを示す受話音声入力フラグを生成し、生成したフラグをノイズキャンセル部220に送出する。フラグ生成器245は、相関有無情報及びレベル比較情報に基づいて、音声信号への遠端話者信号の混入があることを示す“True”、あるいは音声信号への遠端話者信号の混入がないことを示す“False”の受話音声入力フラグをノイズキャンセル部220に送出する。
[雑音除去装置による処理(実施例4)]
図13〜図15は、実施例4に係る雑音除去装置による処理の流れを示す図である。まず、図13を用いて、受話音声入力検出器240による処理の流れを説明する。同図に示すように、受話音声入力検出器240は、A/D340aから出力された音声信号および遠端話者信号を入力すると(ステップS1肯定)、音声信号に遠端話者信号が混入しているか否かを検出する(ステップS2)。
そして、受話音声入力検出器240は、音声信号に遠端話者信号が混入していると判定した場合には(ステップS2肯定)、音声信号への遠端話者信号の混入があることを示す受話音声入力フラグ“True”をノイズキャンセル部220に送出する(ステップS3)。一方、音声入力検出器240は、音声信号に遠端話者信号が混入していないと判定した場合には(ステップS2否定)、音声信号への遠端話者信号の混入がないことを示す音声入力フラグ“False”をノイズキャンセル部220に送出する(ステップS4)。
次に、図14を用いて、ノイズキャンセル部220による処理の流れを説明する。同図に示すように、フィルタ係数推定器222は、フィルタ係数の更新を実行するタイミングで、入力済みである音声入力フラグまたは受話音声入力フラグの少なくとも一方が“True”の場合には(ステップS1肯定)、次のように動作する。すなわち、フィルタ係数推定器222は、ノイズキャンセル(NC)用のフィルタ係数の更新を停止する(ステップS2)。そして、フィルタ係数推定器222は、前回使用したノイズキャンセル(NC)用のフィルタ係数をFIRフィルタ221に送出する(ステップS3)。その結果、フィルタ係数推定器222によりフィルタ係数の更新が停止されている間、FIRフィルタ221は、前回使用したフィルタ係数を用いて、音声信号から雑音成分を除去する。
ここで、ステップS1の説明に戻る。フィルタ係数推定器222は、フィルタ係数の更新を実行するタイミングで、入力済みである音声入力フラグまたは受話音声入力フラグの少なくとも一方が“True”ではない場合(双方がFalseである場合)には(ステップS1否定)、次のように動作する。すなわち、フィルタ係数推定器222は、ノイズキャンセル(NC)用のフィルタ係数を更新する(ステップS4)。そして、フィルタ係数推定器222は、更新後のノイズキャンセル(NC)用のフィルタ係数をFIRフィルタ221に送出する(ステップS5)。その結果、FIRフィルタ221は、フィルタ係数推定器222により更新されたフィルタ係数を用いて、音声信号から雑音成分を除去する。
なお、実施例4に係るノイズキャンセル部220は、上述した実施例2と同様に、音声再生フラグが存在しえる場合(例えば、ハンズフリー電話300がコンテンツ再生機能等を有する場合)には、音声再生フラグも加味してフィルタ係数の更新を制御してもよい。例えば、フィルタ係数更新のタイミングで、入力済みである音声入力フラグ、受話音声入力フラグまたは音声再生フラグの少なくともいずれか一つが“True”である時には、ノイズキャンセル用のフィルタ係数の更新を停止する。
続いて、図15を用いて、エコーキャンセル部230による処理の流れを説明する。同図に示すように、フィルタ係数推定器232は、フィルタ係数の更新を実行するタイミングで、入力済みである受話音声入力フラグが“True”の場合には(ステップS1肯定)、次のように動作する。すなわち、フィルタ係数推定器232は、エコーキャンセル(EC)用のフィルタ係数を更新する(ステップS2)。そして、フィルタ係数推定器232は、更新後のエコーキャンセル(EC)用のフィルタ係数をFIRフィルタ231に送出する(ステップS3)。その結果、FIRフィルタ231は、フィルタ係数推定器232により更新されたフィルタ係数を用いて、音声信号から受話音声成分を除去する。
ここで、ステップS1の説明に戻る。フィルタ係数推定器232は、フィルタ係数の更新を実行するタイミングで、入力済みである受話音声入力フラグが“True”ではない場合(Falseである場合)には(ステップS1否定)、次のように動作する。すなわち、フィルタ係数推定器232は、エコーキャンセル(EC)用のフィルタ係数の更新を停止する(ステップS4)。そして、フィルタ係数推定器232は、前回使用したエコーキャンセル(EC)用のフィルタ係数をFIRフィルタ231に送出する(ステップS5)。その結果、フィルタ係数推定器232によりフィルタ係数の更新が停止されている間、FIRフィルタ231は、前回使用したフィルタ係数を用いて、音声信号から受話音声成分を除去する。
すなわち、実施例4に係るエコーキャンセル部230は、上述した実施例2とは異なり、音声再生フラグではなく、受話音声入力フラグに基づいて、エコーキャンセル用のフィルタ係数の更新を制御する。
[実施例4による効果]
上述してきたように、実施例4によれば、雑音除去装置200は、音声信号に遠端話者信号が混入しているか否かを検出し、検出結果に応じた受話音声入力フラグを生成する。そして、音声入力フラグおよび受話音声入力フラグに基づいてフィルタ係数の更新を制御する。例えば、音声信号に遠端話者信号が混入している場合には、ノイズキャンセル用のフィルタ係数の更新を停止する。
すなわち、雑音除去装置200は、音声信号に遠端話者信号が混入している場合には、フィルタ係数の更新を停止する。このとき、雑音除去装置200は、音声信号と遠端話者信号との相関の度合いが高いかどうかを判定することにより、音声信号に遠端話者信号が混入しているか否かを判定する。したがって、音声信号に遠端話者信号が混入しているか否かを検知する精度を上げることができ、音声信号に遠端話者信号が混入している状態でのフィルタ係数の更新を回避できる。よって、結果的に、音声信号から雑音成分を精度よく除去できる。
また、雑音除去装置200は、音声信号に遠端話者信号が混入していない状態でのエコーキャンセル用のフィルタ係数の更新を回避できるので、音声信号から受話音声成分を精度よく除去できる。
また、前述した実施例2の音声取得用マイクロホン110の代わりに、ビームフォーム型マイクロホンを適用した場合には、次のような問題が考えられる。すなわち、音声再生スピーカ130からビームフォーム型マイクロホンに回り込む音声の特性(エコー特性)は、ビームフォーム型マイクロホンの指向方向によって異なる。そのため、例えば、ビームフォーム型マイクロホンの指向方向を移動した直後などでは、エコーキャンセル部230におけるフィルタ係数更新の追従に遅延が発生する結果、音声信号が劣化してしまう。
また、ビームフォーム型マイクロホンの指向方向によって、ビームフォーム型マイクロホンに入力される雑音の特性が異なることが考えられる。そのため、上述したエコーキャンセル部230と同様に、ビームフォーム型マイクロホンの指向方向を移動した直後などでは、ノイズキャンセル部220においてもフィルタ係数更新の追従に遅延が発生し、音声信号が劣化する恐れがある。
そこで、以下の実施例5では、音声取得用マイクロホン110の代わりに、ビームフォーム型マイクロホンを適用した場合に、フィルタ係数更新の追従に発生する遅延に対処する実施形態を説明する。
[雑音除去装置の構成(実施例5)]
図16は、実施例5に係る構成を示す図である。同図に示すように、サービス提供ロボット100は、音声取得用ビームフォーム型マイクロホン(MIC_SB)191、雑音取得用マイクロホン(MIC_N)120および音声再生スピーカ130を有する。さらに、サービス提供ロボット100は、同図に示すように、A/D140a〜140c、D/A150、音声認識部160、ロボットコントローラー170、人検出部180およびアレイマイク制御部192を有する。
音声取得用ビームフォーム型マイクロホン191は、指向性を有し、主にサービス提供ロボット100の利用者から発せられた発話音声の入力を受け付ける。
雑音取得用マイクロホン120は、主にサービス提供ロボット100を取り巻く環境内に流れているアナウンスやBGMなど、利用者から発せられる発話音声以外の環境音の入力を受け付ける。音声再生スピーカ130は、サービス提供ロボット100にて再生される音声を利用者に向けて出力する。
A/D140aは、音声取得用ビームフォーム型マイクロホン191を介して入力されるアナログの音声信号をデジタルの音声信号に変換し、雑音除去装置200に出力する。A/D140bは、雑音取得用マイクロホン120を介して入力されるアナログの雑音信号をデジタルの雑音信号に変換し、雑音除去装置200に出力する。A/D140cは、後述するD/A150を介して入力されるアナログの再生音声信号をデジタルの再生音声信号に変換し、雑音除去装置200に出力する。
音声認識部160は、雑音除去装置200から出力される音声信号の認識処理を実行し、認識結果をロボットコントローラー170に送出する。
ロボットコントローラー170は、音声認識部160から送出された音声認識結果に応じてデジタルの再生音声信号を生成し、生成した再生音声信号をD/A150に送出する。また、ロボットコントローラー170は、再生音声信号をD/A150に送出する場合に、サービス提供ロボット100を音源とする音声が再生されることを示す音声再生フラグを後述する雑音除去装置200(フィルタ係数推定器222,232)に出力する。例えば、ロボットコントローラー170は、音声再生状態にある場合には、“True(=音声再生)”を音声再生フラグとして出力し、音声無再生状態にある場合には、“False(=音声無再生)”を音声再生フラグとして出力する。
また、ロボットコントローラー170は、後述する人検出部180から送出された位置情報(音声取得用ビームフォーム型マイクロホン191に音声入力可能な範囲に検出した人の位置情報)に応じて、アレイマイク制御部192に指向方向の設定指示を送出する。
D/A150は、後述するロボットコントローラー170から送出されたデジタルの再生音声信号をアナログの信号に変換し、音声再生スピーカ130に送出する。
アレイマイク制御部192は、音声取得用ビームフォーム型マイクロホン191に対して音声入力を受け付ける指向方向を設定することにより、音声取得用ビームフォーム型マイクロホン191の指向方向を制御する。例えば、アレイマイク制御部192は、ロボットコントローラー170から送出された指向方向の設定指示に応じて、音声取得用ビームフォーム型マイクロホン191に対して指向方向を設定する。そして、アレイマイク制御部192は、音声取得用ビームフォーム型マイクロホン191の指向方向を示すビームフォーミング制御情報を後述するノイズキャンセル部220およびエコーキャンセル部230にそれぞれ送出する。
人検出部180は、ビジョン(カメラ)や、赤外線センサーあるいは超音波センサーなどの距離測定センサー(距離センサー)を有し、音声取得用ビームフォーム型マイクロホン191に音声を入力することが可能な範囲に存在する人を検出する。例えば、人検出部180は、ビジョン(カメラ)や距離センサーを用いて、音声取得用ビームフォーム型マイクロホン191の指向方向の一定距離内(例えば、100cm)に人を検出すると、検出した人の位置情報をロボットコントローラー170に出力する。
なお、音声取得用ビームフォーム型マイクロホン191が、音声の入力受付方向に対して指向方向を自動追従させる機能を有する場合には、指向方向を示すビームフォーミング制御情報を後述するアレイマイク制御部192に送出することもできる。アレイマイク制御部192は、音声取得用ビームフォーム型マイクロホン191から送出された指向方向を後述するノイズキャンセル部220およびエコーキャンセル部230にそれぞれ送出する。
雑音除去装置200は、後述するノイズキャンセル部220およびエコーキャンセル部230により、A/D140aから出力された音声信号から雑音成分および再生音声成分を除去した音声信号を音声認識部160に出力する。雑音除去装置200は、例えば、図16に示すように、音声入力検出器210、ノイズキャンセル部220およびエコーキャンセル部230を有する。
音声入力検出器210は、A/D140aから出力された音声信号およびA/D140bから出力された雑音信号を用いて、雑音信号に音声信号が混入しているか否かを検出する。そして、音声入力検出器210は、雑音信号に音声信号が混入しているか否かを示す音声入力フラグを、後述するノイズキャンセル部220(フィルタ係数推定器222)に送出する。
例えば、音声入力検出器210は、上述した実施例2と同様に、音声信号と雑音信号とが最も相関が高い位相を検出する。そして、音声入力検出器210は、最も相関が高い位相で音声信号と雑音信号とを重ね合わせ、互いの信号の電力値の平均値の差を算出し、算出した差が所定の閾値を超えているか否かを判定する。そして、音声入力検出器210は、判定結果に基づいて、雑音信号に音声信号が混入しているか否かを示す音声入力フラグを生成し、生成した音声入力フラグをノイズキャンセル部220(フィルタ係数推定器222)に送出する。例えば、音声入力検出器210は、雑音信号に音声信号が混入している場合には、“True(=混入有り)”を音声入力フラグとして送出し、雑音信号に音声信号が混入していない場合には、“False(=混入無)”を音声入力フラグとして送出する。
ノイズキャンセル部220は、図16に示すように、FIRフィルタ221、フィルタ係数推定器222およびフィルタ係数初期値メモリ223を有する。
FIRフィルタ221は、フィルタ係数推定器222から送出されるノイズキャンセル(NC)用のフィルタ係数を用いて、A/D140aから出力される音声信号から雑音成分を除去する。なお、ノイズキャンセル(NC)用のフィルタ係数は、音声信号に含まれる雑音成分を「0」にするように、雑音信号を適応する場合の伝達関数の係数として用いる。
フィルタ係数初期値メモリ223は、音声取得用ビームフォーム型マイクロホン191の指向方向に対応付けて、各指向方向ごとに、予め設定可能なノイズキャンセル(NC)用のフィルタ係数の初期値をそれぞれ記憶する。
フィルタ係数推定器222は、A/D140bから出力される雑音信号に基づいて、ノイズキャンセル(NC)用のフィルタ係数の更新を行い、更新したフィルタ係数をFIRフィルタ221に送出する。例えば、フィルタ係数推定器222は、まず、アレイマイク制御部192から送出されたビームフォーミング制御情報(指向方向を示す情報)に対応するノイズキャンセル(NC)用のフィルタ係数の初期値をフィルタ係数初期値メモリ223から読み込む。
そして、フィルタ係数推定器222は、ロボットコントローラー170から送出される音声再生フラグに基づいて、エコーキャンセル(EC)用のフィルタ係数の更新を制御する。例えば、フィルタ係数推定器222は、フィルタ係数の更新を実行するタイミングで、音声再生フラグ“False”および音声入力フラグ“False”の双方を入力済みである場合には、「雑音信号への音声信号の混入無」および「音声無再生状態」と判定する。そして、フィルタ係数推定器222は、フィルタ係数初期値メモリ223から読み込んだ初期値を用いて、音声信号に含まれる雑音成分を「0」にするように、ノイズキャンセル(NC)用のフィルタ係数の更新を行う。フィルタ係数の更新後、フィルタ係数推定器222は、更新したノイズキャンセル(NC)用のフィルタ係数をFIRフィルタ221に送出する。
なお、フィルタ係数推定器222は、更新したフィルタ係数をビームフォーミング制御情報(指向方向を示す情報)に対応付けてフィルタ係数初期値メモリ223に上書き更新する。
また、例えば、フィルタ係数推定器222は、フィルタ係数の更新を実行するタイミングで、少なくとも、音声再生フラグ“True”、音声入力フラグ“True”のいずれか一方を入力済みである場合には、フィルタ係数の更新を停止する。なお、フィルタ係数の更新を停止した場合には、フィルタ係数推定器222は、前回使用したノイズキャンセル(NC)用のフィルタ係数をFIRフィルタ221に送出する。
エコーキャンセル部230は、図16に示すように、FIRフィルタ231、フィルタ係数推定器232およびフィルタ係数初期値メモリ233を有する。
FIRフィルタ231は、フィルタ係数推定器232から送出されるエコーキャンセル(EC)用のフィルタ係数を用いて、A/D140aから出力される音声信号から再生音声成分を除去する。なお、エコーキャンセル(EC)用のフィルタ係数は、音声信号に含まれる再生音声成分を「0」にするように、再生音声信号を適応する場合の伝達関数の係数として用いる。
フィルタ係数初期値メモリ233は、音声取得用ビームフォーム型マイクロホン191の指向方向に対応付けて、各指向方向ごとに、予め設定可能なエコーキャンセル(EC)用のフィルタ係数の初期値をそれぞれ記憶する。
フィルタ係数推定器232は、A/D140cから出力される再生音声信号に基づいて、エコーキャンセル(EC)用のフィルタ係数の更新を行い、更新したフィルタ係数をFIRフィルタ231に送出する。例えば、フィルタ係数推定器232は、まず、アレイマイク制御部192から送出されたビームフォーミング制御情報(指向方向を示す情報)に対応するエコーキャンセル(EC)用のフィルタ係数の初期値をフィルタ係数初期値メモリ233から読み込む。
そして、フィルタ係数推定器232は、ロボットコントローラー170から送出される音声再生フラグに基づいて、エコーキャンセル(EC)用のフィルタ係数の更新を制御する。例えば、フィルタ係数推定器232は、フィルタ係数の更新を実行するタイミングで、音声再生フラグ“True”を入力済みである場合には、「音声再生状態」と判定する。そして、フィルタ係数推定器232は、フィルタ係数初期値メモリ233から読み込んだ初期値を用いて、音声信号に含まれる再生音声成分を「0」にするように、エコーキャンセル(EC)用のフィルタ係数の更新を行う。フィルタ係数の更新後、フィルタ係数推定器232は、更新したエコーキャンセル(EC)用のフィルタ係数をFIRフィルタ231に送出する。
なお、フィルタ係数推定器232は、更新したフィルタ係数をビームフォーミング制御情報(指向方向を示す情報)に対応付けてフィルタ係数初期値メモリ233に上書き更新する。
また、フィルタ係数推定器232は、フィルタ係数更新を実行するタイミングで、音声再生フラグ“False”を入力済みである場合には、「音声無再生状態」と判定し、フィルタ係数の更新を停止する。なお、フィルタ係数の更新を停止した場合には、フィルタ係数推定器232は、前回使用したエコーキャンセル(EC)用のフィルタ係数をFIRフィルタ231に送出する。
例えば、フィルタ係数推定器232は、フィルタ係数の更新を実行するタイミングで、音声再生フラグ“True”を入力済みである場合には、音声再生状態にあると判定し、フィルタ係数の更新を行う。また、フィルタ係数推定器232は、フィルタ係数更新を実行するタイミングで、音声再生フラグ“False”を入力済みである場合には、音声無再生状態にあると判定し、フィルタ係数の更新を停止する。
[実施例5による効果]
上述してきたように、実施例5によれば、雑音除去装置200は、フィルタ係数初期値メモリ223に、音声取得用ビームフォーム型マイクロホン191について予め設定可能な指向方向に対応するノイズキャンセル用のフィルタ係数の初期値を記憶しておく。また、雑音除去装置200は、フィルタ係数初期値メモリ233は、音声取得用ビームフォーム型マイクロホン191について予め設定可能な指向方向に対応するエコーキャンセル用のフィルタ係数の初期値を記憶しておく。そして、ビームフォーム型マイクロホンの指向方向を移動した直後などであっても、指向方向に対応したフィルタ係数の初期値を用いて、ノイズキャンセル用およびエコーキャンセル用のフィルタ係数の更新を行う。このようなことから、フィルタ係数更新の追従に発生する遅延を回避することができる。
また、以下の実施例6では、主に雑音取得用マイクロホンから雑音を入力するA/D140bで、サービス提供ロボット100を音源とする再生音声も入力する場合の一実施形態について説明する。実施例6に係る雑音除去装置200は、物理的あるいは機能的に統合した一つの処理部で、ノイズまたはエコーキャンセル用のフィルタ係数の更新を実行する。
図17は、実施例6に係る構成を示す図である。同図に示すように、サービス提供ロボット100は、音声取得用マイクロホン(MIC_S)110、雑音取得用マイクロホン(MIC_N)120および音声再生スピーカ130を有する。さらに、サービス提供ロボット100は、同図に示すように、A/D140a,140b、D/A150、音声認識部160およびロボットコントローラー170を有する。
音声取得用マイクロホン110は、主にサービス提供ロボット100の利用者から発せられた発話音声の入力を受け付ける。雑音取得用マイクロホン120は、主にサービス提供ロボット100を取り巻く環境内に流れているアナウンスやBGMなど、利用者から発せられる発話音声以外の環境音の入力を受け付ける。音声再生スピーカ130は、サービス提供ロボット100にて再生される音声を利用者に向けて出力する。
A/D140aは、音声取得用マイクロホン110を介して入力されるアナログの音声信号をデジタルの音声信号に変換し、雑音除去装置200に出力する。
A/D140bは、雑音取得用マイクロホン120を介して入力されるアナログの雑音信号をデジタルの雑音信号に変換し、雑音除去装置200に出力する。また、A/D140bは、後述するD/A150を介して入力されるアナログの再生音声信号をデジタルの音声信号に変換し、雑音除去装置200に出力する。
音声認識部160は、雑音除去装置200から受け付ける音声信号の認識処理を実行し、認識結果をロボットコントローラー170に送出する。
ロボットコントローラー170は、音声認識部160から送出された音声認識結果に応じてデジタルの再生音声信号を生成し、生成した再生音声信号をD/A150に送出する。また、ロボットコントローラー170は、再生音声信号をD/A150に送出する場合に、サービス提供ロボット100を音源とする音声が再生されることを示す音声再生フラグを後述する雑音除去装置200(フィルタ係数推定器252)に出力する。例えば、ロボットコントローラー170は、音声再生状態にある場合には、“True(=音声再生)”を音声再生フラグとして出力し、音声無再生状態にある場合には、“False(=音声無再生)”を音声再生フラグとして出力する。
D/A150は、後述するロボットコントローラー170から送出されたデジタルの再生音声信号をアナログの信号に変換し、音声再生スピーカ130に送出する。
雑音除去装置200は、後述するノイズキャンセル/エコーキャンセル部250により、A/D140aから出力された音声信号から雑音成分および再生音声成分を除去した音声信号を音声認識部160に出力する。雑音除去装置200は、例えば、図17に示すように、音声入力検出器210、ノイズキャンセル/エコーキャンセル部250を有する。
音声入力検出器210は、A/D140aから出力された音声信号およびA/D140bから出力された雑音信号を用いて、雑音信号に音声信号が混入しているか否かを検出する。そして、音声入力検出器210は、雑音信号に音声信号が混入しているか否かを示す音声入力フラグを、後述するノイズキャンセル/エコーキャンセル部250(フィルタ係数推定器252)に送出する。
例えば、音声入力検出器210は、上述した実施例2と同様に、音声信号と雑音信号とが最も相関が高い位相を検出する。そして、音声入力検出器210は、最も相関が高い位相で音声信号と雑音信号とを重ね合わせ、互いの信号の電力値の平均値の差を算出し、算出した差が所定の閾値を超えているか否かを判定する。そして、音声入力検出器210は、判定結果に基づいて、雑音信号に音声信号が混入しているか否かを示す音声入力フラグを生成し、生成した音声入力フラグをノイズキャンセル/エコーキャンセル部250(フィルタ係数推定器252)に送出する。例えば、音声入力検出器210は、雑音信号に音声信号が混入している場合には、“True(=混入有り)”を音声入力フラグとして送出し、雑音信号に音声信号が混入していない場合には、“False(=混入無)”を音声入力フラグとして送出する。
ノイズキャンセル/エコーキャンセル部250は、図17に示すように、FIRフィルタ251、フィルタ係数推定器252およびフィルタ係数初期値メモリ253を有する。
FIRフィルタ251は、フィルタ係数推定器252から送出されるノイズキャンセル(NC)用またはエコーキャンセル(EC)用のフィルタ係数を用いて、A/D140aから出力される音声信号から雑音成分または再生音声成分を除去する。なお、ノイズキャンセル(NC)用のフィルタ係数は、音声信号に含まれる雑音成分を「0」にするように、雑音信号を適応する場合の伝達関数の係数として用いる。また、エコーキャンセル(EC)用のフィルタ係数は、音声信号に含まれる再生音声成分を「0」にするように、再生音声信号を適応する場合の伝達関数の係数として用いる。
フィルタ係数初期値メモリ253は、ノイズキャンセル(NC)用のフィルタ係数の初期値と、エコーキャンセル(EC)用のフィルタ係数の初期値とをそれぞれ記憶する。
フィルタ係数推定器252は、A/D140bから出力される雑音信号または再生音声信号に基づいて、ノイズキャンセル(NC)用またはエコーキャンセル(EC)用のフィルタ係数の更新を行い、更新したフィルタ係数をFIRフィルタ251に送出する。
図18に、フラグの状態とフィルタ係数推定器252の動作との対応関係を示す。図18は、実施例6に係る雑音除去装置を説明する図である。同図の列の項目は、フィルタ係数推定器252に入力される信号の種別を示し、同図の行の項目は、入力される信号に応じたフラグの内容、ロードするフィルタ係数の初期値の種類およびフィルタ係数の更新の実否を示す。
例えば、図18に示す列の項目の一番左に示すように、フィルタ係数推定器252に雑音信号のみが入力される場合のフラグの内容は、音声入力フラグ「OFF」、音声再生フラグ「OFF」となる。なお、音声入力フラグ「ON」は、雑音信号に音声信号が混入していることを示すフラグであり、音声入力フラグ「OFF」は、雑音信号に音声信号が混入していないことを示すフラグである。音声再生フラグ「ON」は、音声信号に再生音声信号が混入していることを示すフラグであり、音声再生フラグ「OFF」は、音声信号に再生音声信号が混入していないことを示すフラグである。
そして、例えば、フィルタ係数推定器252に雑音信号のみが入力される場合に、フィルタ係数初期値メモリ253からロードするフィルタ係数の初期値の種別は、「NC」となる。なお、「NC」はノイズキャンセル用のフィルタ係数の初期値を示す。また、フィルタ係数推定器252に雑音信号のみが入力される場合のフィルタ係数の更新の実否は、「ON」となる。なお、フィルタ係数の更新「ON」は、フィルタの更新を実行すべきことを示し、フィルタ係数の更新「OFF」は、フィルタの更新を停止すべきことを示す。
また、例えば、図18に示す列の項目の左から2番目に示すように、フィルタ係数推定器252に音声信号のみが入力される場合のフラグの内容は、音声入力フラグ「ON」、音声再生フラグ「OFF」となる。また、フィルタ係数推定器252に音声信号のみが入力される場合に、フィルタ係数初期値メモリ253からロードするフィルタ係数の初期値の種別は、「NC」となる。また、フィルタ係数推定器252に音声信号のみが入力される場合のフィルタ係数の更新の実否は、「OFF」となる。
また、例えば、図18に示す列の項目の左から3番目に示すように、フィルタ係数推定器252に再生音声信号のみが入力される場合のフラグの内容は、音声入力フラグ「OFF」、音声再生フラグ「ON」となる。また、フィルタ係数推定器252に再生音声信号のみが入力される場合に、フィルタ係数初期値メモリ253からロードするフィルタ係数の初期値の種別は、「EC」となる。なお、「EC」はエコーキャンセル用のフィルタ係数の初期値を示す。また、フィルタ係数推定器252に再生音声信号のみが入力される場合のフィルタ係数の更新の実否は、「ON」となる。
また、例えば、図18に示す列の項目の左から4番目に示すように、フィルタ係数推定器252に音声信号および再生音声信号が入力される場合のフラグの内容は、音声入力フラグ「ON」、音声再生フラグ「ON」となる。また、フィルタ係数推定器252に音声信号および再生音声信号が入力される場合に、フィルタ係数初期値メモリ253からロードするフィルタ係数の初期値の種別は、「EC」となる。また、フィルタ係数推定器252に音声信号および再生音声信号が入力される場合のフィルタ係数の更新の実否は、「OFF」となる。
フィルタ係数推定器252は、フィルタ係数の更新を実行する場合に、図18に示す対応関係に従って、フィルタ係数初期値メモリ253から、ノイズキャンセル(NC)用あるいはエコーキャンセル(EC)用のフィルタ係数の初期値を読み込む。そして、フィルタ係数推定器252は、読み込んだフィルタ係数の初期値を用いて、同図に示す対応関係に従ったフィルタ係数の更新を行う。
例えば、フィルタ係数推定器252は、雑音信号のみが入力される場合には、図18に示す対応関係に従って、ノイズキャンセル用のフィルタ係数の初期値をロードする。そして、フィルタ係数推定器252は、ノイズキャンセル用のフィルタ係数の初期値を用いて、ノイズキャンセル用のフィルタ係数を更新する。
また、例えば、フィルタ係数推定器252は、音声信号のみが入力される場合には、図18に示す対応関係に従って、ノイズキャンセル用のフィルタ係数の初期値をロードする。そして、フィルタ係数推定器252は、ノイズキャンセル用のフィルタ係数の初期値を用いたノイズキャンセル用のフィルタ係数の更新は行わず、ロードしたノイズキャンセル用のフィルタ係数の初期値をFIRフィルタ251に送出する。FIRフィルタ251は、ノイズキャンセル用のフィルタ係数の初期値を用いて、音声信号から雑音成分を除去する。
また、例えば、フィルタ係数推定器252は、再生音声信号のみが入力される場合には、図18に示す対応関係に従って、エコーキャンセル用のフィルタ係数の初期値をロードする。そして、フィルタ係数推定器252は、エコーキャンセル用のフィルタ係数の初期値を用いて、エコーキャンセル用のフィルタ係数を更新する。
また、例えば、フィルタ係数推定器252は、音声信号および音声再生信号の双方が入力される場合には、図18に示す対応関係に従って、エコーキャンセル用のフィルタ係数の初期値をロードする。そして、フィルタ係数推定器252は、エコーキャンセル用のフィルタ係数の初期値を用いたエコーキャンセル用のフィルタ係数の更新は行わず、ロードしたエコーキャンセル用のフィルタ係数の初期値をFIRフィルタ251に送出する。FIRフィルタ251は、エコーキャンセル用のフィルタ係数の初期値を用いて、音声信号から再生音声成分を除去する。
なお、フィルタ係数推定器252は、更新したフィルタ係数をフィルタ係数初期値メモリ253に上書き更新する。
[実施例6による効果]
上述してきたように、実施例6によれば、主に雑音取得用マイクロホン120から雑音を入力するA/D140bで、サービス提供ロボット100を音源とする再生音声も入力する場合にも、上述した実施例2と同様にしてフィルタ係数を更新できる。
以下、本願の開示する雑音除去装置の他の実施形態を説明する。
(装置構成等)
例えば、図2に示した雑音除去装置200の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、雑音除去装置200の分散・統合の具体的形態は図示のものに限られず、例えば、ノイズキャンセル部220のFIRフィルタ221とフィルタ係数推定器222とを機能的または物理的に統合する。このように、雑音除去装置200の全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)主に第2の音声が入力される第2の入力部から取得した第2の信号に基づいて更新されるフィルタ係数を用いて、主に第1の音声が入力される第1の入力部から取得した第1の信号から前記第2の音声の成分を除去する除去部と、
前記第1の信号と前記第2の信号との間の相関性を示す相関値を算出し、当該算出された相関値が所定の閾値を超えるか否かを判定するとともに、前記第1の信号の出力レベルと前記第2の信号の出力レベルとを比較して前記第1の信号の出力レベルと前記第2の信号の出力レベルとの差が所定の閾値を超えるか否かを判定し、前記相関値が所定の閾値を超えるものと判定し、かつ前記出力レベルの差が所定の閾値を超えるものと判定した場合には、前記第2の信号に前記第1の音声成分が混入している旨を検知する混入検知部と、
前記混入検知部により前記第2の信号に前記第1の音声の成分が混入している旨が検知された場合に、前記フィルタ係数の更新を停止するように制御する制御部と
を有することを特徴とする雑音除去装置。
(付記2)雑音除去装置を有する音声出力装置から再生出力される第3の音声に対応する信号である第3の信号に基づいて更新されるフィルタ係数を用いて、前記第1の入力部から出力される第1の信号から前記第3の音声の成分を除去する再生音除去部と、
前記第3の音声の再生を検知する再生検知部と、
をさらに有し、
前記制御部は、前記再生検知部により前記第3の音声の再生が検知された場合に、前記第2の信号に基づいて更新されるフィルタ係数の更新を停止するように制御するとともに、前記第3の信号に基づいて更新されるフィルタ係数を更新することを特徴とする付記1に記載の雑音除去装置。
(付記3)主に第2の音声が入力される第2の入力部から取得した第2の信号に基づいて更新されるフィルタ係数を用いて、主に第1の音声が入力される第1の入力部から取得した第1の信号から前記第2の音声の成分を除去する除去部と、
前記第1の入力部に前記第1の音声を入力することが可能な範囲に存在する人を検出する人検出部と、
前記人検出部により人が検出された場合には、前記フィルタ係数の更新を停止するように制御する制御部と
を有することを特徴とする付記1に記載の雑音除去装置。
(付記4)指向性を有し、主に第1の音声が入力される第1の入力部と、
主に第2の音声が入力される第2の入力部と、
主に雑音除去装置を音源とする第3の音声が入力される第3の入力部と、
前記第1の入力部の指向方向に対応付けて、各指向方向ごとに、前記第2の入力部から取得した第2の信号に基づいて更新される第1のフィルタ係数の初期値をそれぞれ記憶する第1の記憶部と、
前記第1の入力部の指向方向に対応付けて、各指向方向ごとに、前記第3の入力部から取得した第3の信号に基づいて更新される第2のフィルタ係数の初期値をそれぞれ記憶する第2の記憶部と、
前記第1の入力部に前記第1の音声を入力することが可能な範囲に存在する人を検出する人検出部と、
前記人検出部により人が検出された場合に、当該検出された方向に前記第1の入力部の指向方向を向けるように制御する方向制御部と、
前記第2の信号に前記第1の音声成分が混入しているか否かを検知する混入検知部と、
前記第3の音声の再生を検知する再生検知部と、
前記混入検知部による検知結果および前記再生検知部による検知結果に応じて、前記方向制御部により制御された指向方向に対応する前記第1のフィルタ係数の初期値を前記第1の記憶部から読み込んで、当該読み込んだ初期値を用いて第1のフィルタ係数を更新し、更新した第1のフィルタ係数を当該読み込んだ初期値の代わりに前記第1の記憶部に格納する第1の更新部と、
前記混入検知部による検知結果および前記再生検知部による検知結果に応じて、前記方向制御部により制御された指向方向に対応する前記第2のフィルタ係数の初期値を前記第2の記憶部から読み込んで、当該読み込んだ初期値を用いて第2のフィルタ係数を更新し、更新した第2のフィルタ係数を当該読み込んだ初期値の代わりに前記第2の記憶部に格納する第2の更新部と
を有することを特徴とする雑音除去装置。
(付記5)主に第1の音声が入力される第1の入力部と、
第2の音声および雑音除去装置を音源とする第3の音声が入力される第2の入力部と、
前記第2の入力部から取得した第2の信号に基づいて更新される第1のフィルタ係数の初期値を記憶する第1の記憶部と、
前記第2の入力部から取得した第3の信号に基づいて更新される第2のフィルタ係数の初期値を記憶する第2の記憶部と、
前記第2の信号に前記第1の音声成分が混入しているか否かを検知する混入検知部と、
前記第3の音声の再生を検知する再生検知部と、
前記混入検知部により前記第2の信号に前記第1の音声成分が混入していないことが検知された場合には、前記第1のフィルタ係数の初期値を前記第1の記憶部から読み込んで、当該読み込んだ初期値を用いて第1のフィルタ係数を更新し、当該更新した第1のフィルタ係数を前記第1の記憶部に格納し、前記再生検知部により前記第3の音声の再生が検知された場合には、前記第2のフィルタ係数の初期値を前記第2の記憶部から読み込んで、当該読み込んだ初期値を用いて第2のフィルタ係数を更新し、当該更新した第2のフィルタ係数を前記第2の記憶部に格納する更新部と
を有することを特徴とする雑音除去装置。