(57)【特許請求の範囲】
【請求項１】
入力信号にハウリングが発生していない時間であるハウリング観測時間を計測するとともに前記入力信号にハウリングが発生した場合に当該ハウリングを検出する検出手段と、
前記ハウリング観測時間に基づいてゲインを設定することにより、検出されたハウリングの抑圧処理の解除時間を制御する制御手段と、
前記入力信号に対してハウリング抑圧解除まで前記ゲインを用いたハウリング抑圧処理を行う抑圧手段と、
を有することを特徴とするハウリング制御装置。
【請求項２】
前記制御手段は、
前記ハウリング抑圧処理のために用いられるゲインをハウリング抑圧後も維持する待ち時間を前記ハウリング観測時間に基づいて設定する待ち時間設定部と、
ハウリング抑圧後、設定された待ち時間が経過すると前記ゲインを初期値に戻すゲイン制御部と、
を有することを特徴とする請求項１記載のハウリング制御装置。
【請求項３】
前記待ち時間設定部は、
前記ハウリング観測時間および過去に設定された待ち時間に応じて今回の待ち時間を設定することを特徴とする請求項２記載のハウリング制御装置。
【請求項４】
前記待ち時間設定部は、
前記ハウリング観測時間が所定基準より長い場合に、前記今回の待ち時間を前記過去に設定された待ち時間より短く設定し、
前記ハウリング観測時間が所定基準より短い場合に、前記今回の待ち時間を前記過去に設定された待ち時間より長く設定することを特徴とする請求項３記載のハウリング制御装置。
【請求項５】
前記制御手段は、
前記ハウリング抑圧処理のために用いられるゲインのハウリング抑圧後における更新量を前記ハウリング観測時間に基づいて設定する更新量設定部と、
ハウリング抑圧後、設定された更新量だけ前記ゲインを更新するゲイン制御部と、
を有することを特徴とする請求項１記載のハウリング制御装置。
【請求項６】
前記更新量設定部は、
前記ハウリング観測時間および過去に設定された更新量に応じて今回の更新量を設定することを特徴とする請求項５記載のハウリング制御装置。
【請求項７】
前記更新量設定部は、
前記ハウリング観測時間が所定基準より長い場合に、前記今回の更新量を前記過去に設定された更新量より大きく設定し、
前記ハウリング観測時間が所定基準より短い場合に、前記今回の更新量を前記過去に設定された更新量より小さく設定することを特徴とする請求項６記載のハウリング制御装置。
【請求項８】
前記検出手段は、
入力信号を複数の周波数帯域の帯域分割信号に分割する帯域分割部と、
分割されて得られた帯域分割信号のそれぞれの帯域レベルを算出する帯域レベル算出部と、
算出された前記帯域分割信号のそれぞれの帯域レベルの平均値を算出する帯域レベル平均値算出部と、を有し、
前記帯域レベルおよび前記帯域レベル平均値の比を用いてハウリングを検出することを特徴とする請求項１記載のハウリング制御装置。
【請求項９】
前記抑圧手段は、
前記帯域分割信号に対して前記制御手段によって設定されるゲインを乗算するハウリング抑圧部と、
前記ゲインが乗算された前記帯域分割信号を合成する帯域合成部と、
を有することを特徴とする請求項８記載のハウリング制御装置。
【請求項１０】
前記抑圧手段は、
前記制御手段によって設定されるゲインおよび前記帯域分割信号の帯域幅に応じてフィルタリング処理のための係数を算出するフィルタ係数算出部と、
算出された係数を前記帯域分割信号に乗算するパラメトリックイコライザと、
を有することを特徴とする請求項８記載のハウリング制御装置。
【請求項１１】
入力信号にハウリングが発生していない時間であるハウリング観測時間を計測するステップと、
前記入力信号にハウリングが発生した場合に当該ハウリングを検出するステップと、
前記ハウリング観測時間に基づいてゲインを設定することにより、検出されたハウリングの抑圧処理の解除時間を制御するステップと、
前記入力信号に対してハウリング抑圧解除まで前記ゲインを用いたハウリング抑圧処理を行うステップと、
を有することを特徴とするハウリング制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、補聴器や拡声システム等，マイクロホンとスピーカを有する音響装置において、スピーカとマイクロホン間の音響結合により発生するハウリングを制御するハウリング制御装置に関する。
【０００２】
【従来の技術】
従来、この種のハウリング制御装置は、図１５に示すように、入力端子1008と、帯域分割部1001と、帯域レベル算出部1002と、帯域レベル平均値算出部1003と、ハウリング検出部1004と、ゲイン制御部1005と、ハウリング抑圧部1006と、帯域合成部1007と、出力端子1009とを備えていた。
【０００３】
帯域分割部1001は、入力端子1008に入力されるマイクロホンアンプやAD変換器等の出力信号を、1フレーム（フレーム長：10〜100[ms]程度）バッファリングし、ポリフェーズフィルタや高速フーリエ変換（FFT:Fast Fourier Transform）、バンドパスフィルタ等の方法により、フレーム単位に時間信号x(t)を予め設定された数（例えばM、Mは正の整数）の周波数帯域の信号（帯域分割信号）xi(t)（i=0からM-1の正整数、帯域番号と呼ぶ）に分割する。以後の処理はフレーム単位でM個の帯域分割信号毎に独立に処理を行なう。
【０００４】
帯域レベル算出部1002は、帯域分割部1001で帯域分割された帯域分割信号xi(t)を用いて各帯域のパワー、或いは振幅等のレベルLi(t)を算出する。
【０００５】
帯域レベル平均値算出部1003は、M個の各帯域レベルLi(t)を加えて、加えた帯域数(M)で割ることにより帯域レベル平均値Lave(t)を算出する。
【０００６】
ハウリング検出部1004は、図１６のフローチャートに示すような処理で各帯域分割信号毎のハウリング検出フラグdtct_flg-iに値を設定する。
【０００７】
まず、現在ハウリング抑圧中であるか否かを確認するため、ハウリング検出フラグdtct_flg-iの値を確認する（S1001）。ハウリング検出フラグdtct_flg-iの値が0x0000（0xnnnnはnnnnが１６進数であることを表す）である場合、現在ハウリング抑圧中ではないと判断し、ハウリングの判定を行う。
【０００８】
次に、帯域レベルLi(t)と帯域レベル平均値Lave(t)を用いて次式にしたがってレベル比Ri(t)を算出する（S1002）。
Ri(t) = Li(t) / Lave(t)
【０００９】
次に、レベル比Ri(t)とレベル比閾値Th_Rを比較する（S1003）。比較の結果、Ri(t)＞Th_Rの場合、ハウリング検出用カウンタdtct_cnt-iの値をカウント閾値Th_cntと比較する（S1004）。
【００１０】
dtct_cnt-i＞Th_cntの場合、現フレームの帯域レベル平均値Lave(t)を基準レベルLref-i(t)に代入し（S1005）、ハウリング検出フラグdtct_flg-iの値を0xffffに設定する（S1006）。
【００１１】
dtct_cnt-i≦Th_cntの場合、カウンタdtct_cnt-iの値を1つインクリメントする（S1007）。
【００１２】
S1003の比較の結果、Ri(t)≦Th_Rの場合、カウンタdtct_cnt-iの値を'0'にリセットする（ステップS1008）。
【００１３】
ゲイン制御部1005は、図１７のフローチャートに示すような処理でゲインGi(t)を設定する。
【００１４】
まず、ハウリング検出フラグdtct_flg-iを参照し、ハウリングが検出されたか否かを確認する（S1011）。dtct_flg-i=0xffffの場合、ハウリングを抑圧するため次式にしたがってゲインGi(t)を更新する（S1012）。
Gi(t) = Gi(t-1)×Gdown
ここでGdownはゲインを下げるための更新量であり、0＜Gdown＜1の値をとる。
【００１５】
次に、帯域レベルLi(t)と基準レベルLref-i(t)との比とゲイン制御用閾値Th_Ctrl_gainを比較する（S1013）。比較の結果、Li(t)/Lref-i(t)＜Th_Ctrl_gainの場合、ハウリングの発生がおさまっているため、ゲインGi(t)を'1'に戻す処理へと移行するため、ハウリング検出フラグdtct_flg-iの値を0x0000に設定する（S1014）。
【００１６】
S1011の比較の結果、ハウリング検出フラグdtct_flg-i=0x0000の場合、ハウリングが発生していないため、ゲインGi(t)が1未満であれば，ゲインを1倍に戻すように次式にしたがってゲインGi(t)を更新する（S1015）。
Gi(t) = Gi(t-1)×Gup
ここでGupはゲインを上げるための更新量であり、Gup＞1の値をとる。
【００１７】
ハウリング抑圧部1006は、次式にしたがって、帯域分割部1001で帯域分割された帯域分割信号xi(t)にゲイン制御部1005で設定されたゲインGi(t)を乗じて、yi(t)を得る。
yi(t) = xi(t) × Gi(t)
【００１８】
帯域合成部1007は、上記yi(t)を、ポリフェーズフィルタや、FFT等、帯域分割部1001で行なった帯域分割方法と対応した方法により時間信号y(t)を算出する。
【００１９】
【発明が解決しようとする課題】
しかし、このような従来のハウリング制御装置では、ハウリングの抑圧を解除する際、ハウリングが発生しやすい状態か否かを考慮していないため、例えば、補聴器などで、装着に時間が掛かりハウリングが発生しやすい状況が続くのにもかかわらず、ハウリングの抑圧を解除してしまい、ハウリングの発生→抑圧→解除→発生→抑圧→解除→・・・が繰り返され耳障りとなるという問題があった。
【００２０】
本発明はこのような問題を解決するためになされたもので、ハウリングの発生状況に応じて、ハウリング抑圧解除までの時間を制御して、ハウリングの抑圧、解除の繰り返しを無くすことができるハウリング制御装置を提供するものである。
【００２１】
【課題を解決するための手段】
本発明のハウリング制御装置は、入力信号にハウリングが発生していない時間であるハウリング観測時間を計測するとともに前記入力信号にハウリングが発生した場合に当該ハウリングを検出する検出手段と、前記ハウリング観測時間に基づいてゲインを設定することにより、検出されたハウリングの抑圧処理の解除時間を制御する制御手段と、前記入力信号に対してハウリング抑圧解除まで前記ゲインを用いたハウリング抑圧処理を行う抑圧手段と、を有する構成を採る。
【００２２】
本発明のハウリング制御装置は、前記制御手段は、前記ハウリング抑圧処理のために用いられるゲインをハウリング抑圧後も維持する待ち時間を前記ハウリング観測時間に基づいて設定する待ち時間設定部と、ハウリング抑圧後、設定された待ち時間が経過すると前記ゲインを初期値に戻すゲイン制御部と、を有する構成を採る。
【００２３】
本発明のハウリング制御装置は、前記待ち時間設定部は、前記ハウリング観測時間および過去に設定された待ち時間に応じて今回の待ち時間を設定する構成を採る。
【００２４】
本発明のハウリング制御装置は、前記待ち時間設定部は、前記ハウリング観測時間が所定基準より長い場合に、前記今回の待ち時間を前記過去に設定された待ち時間より短く設定し、前記ハウリング観測時間が所定基準より短い場合に、前記今回の待ち時間を前記過去に設定された待ち時間より長く設定する構成を採る。
【００２５】
本発明のハウリング制御装置は、前記制御手段は、前記ハウリング抑圧処理のために用いられるゲインのハウリング抑圧後における更新量を前記ハウリング観測時間に基づいて設定する更新量設定部と、ハウリング抑圧後、設定された更新量だけ前記ゲインを更新するゲイン制御部と、を有する構成を採る。
【００２６】
本発明のハウリング制御装置は、前記更新量設定部は、前記ハウリング観測時間および過去に設定された更新量に応じて今回の更新量を設定する構成を採る。
【００２７】
本発明のハウリング制御装置は、前記更新量設定部は、前記ハウリング観測時間が所定基準より長い場合に、前記今回の更新量を前記過去に設定された更新量より大きく設定し、前記ハウリング観測時間が所定基準より短い場合に、前記今回の更新量を前記過去に設定された更新量より小さく設定する構成を採る。
【００２８】
本発明のハウリング制御装置は、前記検出手段は、入力信号を複数の周波数帯域の帯域分割信号に分割する帯域分割部と、分割されて得られた帯域分割信号のそれぞれの帯域レベルを算出する帯域レベル算出部と、算出された前記帯域分割信号のそれぞれの帯域レベルの平均値を算出する帯域レベル平均値算出部と、を有し、前記帯域レベルおよび前記帯域レベル平均値の比を用いてハウリングを検出する構成を採る。
【００２９】
本発明のハウリング制御装置は、前記抑圧手段は、前記帯域分割信号に対して前記制御手段によって設定されるゲインを乗算するハウリング抑圧部と、前記ゲインが乗算された前記帯域分割信号を合成する帯域合成部と、を有する構成を採る。
【００３０】
これらの構成によれば、入力信号にハウリングが発生した場合に、ハウリング観測時間に基づくゲインを用いてハウリング抑圧解除までの時間を制御するため、ハウリングの発生、停止が頻発する過渡的な状況においてもハウリングの抑圧、解除の繰り返しを無くすことができる。
【００３１】
本発明のハウリング制御装置は、前記抑圧手段は、前記制御手段によって設定されるゲインおよび前記帯域分割信号の帯域幅に応じてフィルタリング処理のための係数を算出するフィルタ係数算出部と、算出された係数を前記帯域分割信号に乗算するパラメトリックイコライザと、を有する構成を採る。
この構成によれば、フィルタリング処理のための係数を帯域分割信号に乗算するため、入出力間の遅延時間を短くすることができる。
【００３２】
本発明のハウリング制御方法は、入力信号にハウリングが発生していない時間であるハウリング観測時間を計測するステップと、前記入力信号にハウリングが発生した場合に当該ハウリングを検出するステップと、前記ハウリング観測時間に基づいてゲインを設定することにより、検出されたハウリングの抑圧処理の解除時間を制御するステップと、前記入力信号に対してハウリング抑圧解除まで前記ゲインを用いたハウリング抑圧処理を行うステップと、を有するようにした。
この方法によれば、入力信号にハウリングが発生した場合に、ハウリング観測時間に基づくゲインを用いてハウリング抑圧解除までの時間を制御するため、ハウリングの発生、停止が頻発する過渡的な状況においてもハウリングの抑圧、解除の繰り返しを無くすことができる。
【００３３】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照して説明する。
【００３４】
（第１の実施の形態）
図１〜図５は本発明の第１の実施の形態のハウリング制御装置を示す図である。
【００３５】
図１に示すように、本実施の形態のハウリング制御装置は、マイクロホンアンプやAD変換器等の出力信号を入力される入力端子110と、入力端子110に入力された信号を複数の周波数帯域の信号に分割する帯域分割部101と、帯域分割部101で分割された複数の周波数帯域の信号の帯域レベルを算出する帯域レベル算出部102と、帯域レベル算出部102で算出された各帯域レベルの平均値を算出する帯域レベル平均値算出部103と、帯域レベルと帯域レベル平均値に基づいてハウリングを検出するとともに、ハウリングが発生していない時間（ハウリング計測時間）を計測するハウリング検出部104と、ハウリング計測時間と前回の待ち時間から今回設定する待ち時間を決定する待ち時間設定部105と、ハウリング検出部104の結果に基づいてゲインを設定するゲイン制御部106と、ゲイン制御部106にて設定されたゲインを帯域分割部101で帯域分割された周波数帯域信号に乗ずるハウリング抑圧部107と、複数の周波数帯域信号を合成する帯域合成部108と、合成された信号を出力する出力端子111とを備えている。
【００３６】
このようなハウリング制御装置の動作を図２のフローチャートを参照して説明する。
【００３７】
まず、帯域分割部101により、入力端子110に入力された信号を、1フレーム（フレーム長：10〜100[ms]程度）バッファリングし、ポリフェーズフィルタや高速フーリエ変換、バンドパスフィルタ等の方法により、フレーム単位に時間信号x(t)を予め設定された数(例えばM、Mは正の整数)の周波数帯域の信号（帯域分割信号）xi(t)（i=0からM-1の正整数、iを帯域番号と呼ぶ）に分割する（S11）。以後の処理はフレーム単位でM個の帯域分割信号毎に独立に処理を行なう。
【００３８】
次いで、帯域レベル算出部102において、帯域分割部101で帯域分割された帯域分割信号xi(t)を用いて各帯域のパワー、或いは振幅等のレベルLi(t)を算出する。（S12）
【００３９】
次いで、帯域レベル平均値算出部103において、M個の各帯域レベルLi(t)を加えて、加えた帯域数(M)で割ることにより帯域レベル平均値Lave(t)を算出する（S13）。
【００４０】
次いで、ハウリング検出部104において、図３のフローチャートに示す処理によりハウリングを検出する（S14）。
【００４１】
図３に示すように、まず、現在ハウリング抑圧中であるか否かを確認するため、ハウリング検出フラグdtct_flg-iの値を確認する（S21）。
【００４２】
ハウリング検出フラグdtct_flg-iの値が0x0000である場合、現在ハウリング抑圧中ではないと判断し、ハウリング観測時間how_off_cnt-iの値を'1'インクリメントし、ハウリングが発生していない時間をカウントする（S22）。
【００４３】
次いで、帯域レベルLi(t)と帯域レベル平均値Lave(t)を用いて次式にしたがってレベル比Ri(t)（iは帯域番号）を算出する（S23）
Ri(t) = Li(t) / Lave(t)
【００４４】
次いで、算出したレベル比Ri(t)とレベル比閾値Th_Rを比較し（S24）、比較の結果、Ri(t)＞Th_Rの場合、ハウリング検出用カウンタdtct_cnt-iの値をカウント閾値Th_cntと比較する（S25）。
【００４５】
比較の結果、dtct_cnt-i＞Th_cntの場合、現フレームの帯域レベル平均値Lave(t)を基準レベルLref-i(t)に代入し（S26）、ハウリング検出フラグdtct_flg-iの値を0xffffに設定する（S27）。
【００４６】
S25の判定の結果、dtct_cnt-i≦Th_cntの場合、カウンタdtct_cnt-iの値を1つインクリメントする（S28）。
【００４７】
S24の判定の結果、Ri(t)≦Th_Rの場合、カウンタdtct_cnt-iの値を'0'にリセットする（S29）。
【００４８】
このようにして設定されるハウリング観測時間how_off_cnt-iと前回設定された待ち時間から、待ち時間設定部105において、今回の待ち時間wait_time-iを設定する（S15）。
【００４９】
待ち時間設定部105は、フレーム毎にハウリング観測時間how_off_cnt-iを参照し、この値に基づいて図４の状態遷移図に従って待ち時間を設定する。図４には、(a)、(b)２通りの状態遷移例を示す。なお、T1、T2の値は、例えば、T1＝1563フレーム、T2＝18750フレームなどとする。
【００５０】
待ち時間設定の基本的な考え方は、ハウリング観測時間how_off_cnt-iが長ければ、頻繁にハウリングが発生していないため、待ち時間wait_time-iをより短い時間に、ハウリング観測時間how_off_cnt-iが短ければ、頻繁にハウリングが発生しているため、待ち時間wait_time-iをより長い時間に設定する。
【００５１】
まず、図４(a)において、初期状態は状態１であり、状態１ではwait_time-iは0フレームとし、how_off_cnt-i≧T1の間は状態１にとどまる。
【００５２】
how_off_cnt-i＜T1になると、状態１から状態２に遷移し、状態２ではwait_time-iは、例えば3125フレームとする。T1≦how_off_cnt-i≦T2の間は状態２にとどまり、how_off_cnt-i＞T2となると状態１に戻る。
【００５３】
さらにhow_off_cnt-i＜T1になると、状態２から状態３に遷移し、状態３ではwait_time-iは、例えば9375フレームとする。T1≦how_off_cnt-i≦T2の間は状態３にとどまり、how_off_cnt-i＞T2となると状態２に戻る。
【００５４】
さらにhow_off_cnt-i＜T1になると、状態３から状態４に遷移し、状態４ではwait_time-iは、例えば18750フレームとする。how_off_cnt-i≦T2の間は状態４にとどまり、how_off_cnt-i＞T2となると状態３に戻る。
【００５５】
次に、図４(b)において、初期状態は状態１であり、状態１ではwait_time-iは0フレームとし、how_off_cnt-i≧T1の間は状態１にとどまる。
【００５６】
how_off_cnt-i＜T1になると、状態１から状態２に遷移し、状態２ではwait_time-iは、例えば3125フレームとする。T1≦how_off_cnt-i≦T2の間は状態２にとどまり、how_off_cnt-i＞T2となると状態１に戻る。
【００５７】
さらにhow_off_cnt-i＜T1になると、状態２から状態３に遷移し、状態３ではwait_time-iは、例えば9375フレームとする。T1≦how_off_cnt-i≦T2の間は状態３にとどまり、how_off_cnt-i＞T2となると状態１に戻る。
【００５８】
さらにhow_off_cnt-i＜T1になると、状態３から状態４に遷移し、状態４ではwait_time-iは、例えば18750フレームとする。how_off_cnt-i≦T2の間は状態４にとどまり、how_off_cnt-i＞T2となると状態２に戻る。
【００５９】
ここで、例えば、サンプリング周波数Fs=20（kHz）、FFTポイント数＝128サンプル、フレームシフト＝64サンプルの場合、T1の1563フレーム≒５ｓ、T2の18750フレーム＝６０ｓ、状態２の待ち時間3125フレーム＝１０ｓ、状態３の待ち時間9375フレーム＝３０ｓ、状態４の待ち時間18750フレーム＝６０ｓとなる。
【００６０】
次いで、ゲイン制御部106において、図５のフローチャートに示す処理によりゲインを制御する（S16）。
【００６１】
図５に示すように、まず、ハウリング検出部104で設定したハウリング検出フラグdtct_flg-iを参照し、ハウリングが検出されたか否かを確認する（S41）。
【００６２】
dtct_flg-i=0x0000の場合、ハウリングが発生していないと判断し、ゲインGi(t)が1未満であれば、ゲインを'1'に戻すように次式にしたがってゲインGi(t)を更新する（S42）。
Gi(t) = Gi(t-1)×Gup1
ここでGup1はゲインを上げるための更新量であり、Gup1>1の値をとる。
【００６３】
dtct_flg-i=0xffffの場合、ハウリングが検出されたと判断し、ゲイン制御フラグctrl_gain_flg-iを参照し、ハウリングを抑圧するためにゲインGi(t)（iは帯域番号）を下げるか、抑圧を解除するためにゲインGi(t)を上げるかの判定を行なう（S43）。ctrl_gain_flg-i=0x0000の場合，ハウリングを抑圧するため，次式にしたがってゲインGi(t)を更新する（S44）。
Gi(t) = Gi(t-1)×Gdown
ここでGdownはゲインを下げるための更新量であり、0＜Gdown＜1の値をとる。また、ゲインの下限値を設けることにより、必要以上の抑圧を防止することができる。
【００６４】
次いで、帯域レベルLi(t)と基準レベルLref-i(t)との比とゲイン制御用閾値Th_Ctrl_gainを比較する（S45）。
【００６５】
比較の結果、Li(t)/Lref-i(t)≧Th_Ctrl_gainの場合、処理を終了する。Li(t)/Lref-i(t)＜Th_Ctrl_gainの場合、ハウリングの発生がおさまっていると判断し、ゲインGi(t)を'1'に戻す処理へと移行するため、ctrl_gain_flg-iの値を0xffffに設定し（S46）、ゲインGi(t)を直ちに'1'に戻すかを判定するための待ち時間設定フラグwait_ctrl_flg-iの値を0xffffに設定する（S47）。
【００６６】
S43の比較の結果、ctrl_gain_flg-i=0xffffの場合、ハウリングがおさまっていると判断し、待ち時間が設定されているかを判定するため待ち時間設定フラグwait_ctrl_flg-iの値を参照する（S48）。wait_ctrl_flg-i=0xffffの場合、ゲインを'1'に戻す処理（ゲイン復帰処理）を行うまでの待ち時間wait_time-iが設定されていないため，待ち時間設定部105で設定された待ち時間を参照し設定する（S49）。
【００６７】
その後、次回に備えてハウリング観測時間how_off_cnt-iを'0'にリセットし、待ち時間が設定されたことを示すため、wait_ctrl_flgを0x0000に設定する（S50）。
【００６８】
S48の比較の結果、wait_ctrl_flg-i=0x0000の場合、待ち時間が設定されているため次のステップへと進む。
【００６９】
次いで、待ち時間wati_time-iを参照し、ゲイン復帰処理を行なうか否かを判断する（S51）。wait_time-i=0の場合、ハウリング抑圧後、設定した待ち時間を経過したため、ゲインを'1'に戻すように次式にしたがってゲインGi(t)を更新する（S52）。
Gi(t) = Gi(t-1)×Gup0
ここでGup0はゲインを上げるための更新量であり、Gup0>1の値をとる。
【００７０】
次いで、このゲインGi(t)がゲイン閾値Gup_Th（例えば，0.7倍（=-3.0[dB]））を超えたかを判定し（S53）、ゲインGi(t)がゲイン閾値Gup_Thを超えた場合、ハウリング検出フラグdtct_flg-i及びゲイン制御フラグctrl_gain_flg-iに0x0000を設定し、ハウリングの検出を再開するように設定する（S54）。
【００７１】
S51の比較の結果、待ち時間wait_time-i>0の場合、設定した待ち時間をまだ経過していないため、wait_time-iを'1'デクリメントする（S55）。
【００７２】
次に、このようにして求めたゲインGi(t)を使い、ハウリング抑圧部107において、次式のように、帯域分割部101で帯域分割された帯域分割信号xi(t)にゲインGi(t)を乗じてyi(t)を得る（S17）。
yi(t) = xi(t) × Gi(t)
【００７３】
次いで、帯域合成部108において、上記yi(t)を、ポリフェーズフィルタや、FFT等、帯域分割部101で行なった帯域分割方法と対応した方法により時間信号y(t)を算出し、出力端子111を介してy(t)をDA変換器、アンプ、スピーカ等に出力する。
【００７４】
以上のように、本実施の形態のハウリング制御装置は、ハウリング検出部104において、ハウリングが発生していないフレーム数をカウントし、待ち時間設定部105において、このフレーム数と前回の待ち時間に基づいて、ハウリングの抑圧を止めるまでの待ち時間を設定しているので、ハウリングの発生、停止が頻発する過渡的な状況においてもハウリングの抑圧、解除を繰り返さずハウリングの抑圧を継続して行なうことができる。
【００７５】
なお、本実施の形態においては、帯域分割部101で分割した帯域分割信号それぞれのレベルを帯域レベル算出部102で算出したが、帯域レベル算出部102で帯域分割部101で分割した周波数帯域信号を、予め設定された数分合算して１帯域としてもよい。例えば、帯域分割部101においてFFTにて時間信号を128ポイントに周波数分割し、帯域レベル算出部102においてFFT4ポイントを1帯域とすると、帯域数は16帯域（=128[point]/2/4[point]）となる。
【００７６】
本実施の形態の他の態様としては、図６に示すように、ハウリング抑圧部107及び帯域合成部108に代わって、分割された周波数帯域毎にフィルタ処理を行うパラメトリックイコライザ121とパラメトリックイコライザ121の各周波数帯域毎のフィルタ係数を算出するフィルタ係数算出部120を設けたことを特徴とする。
【００７７】
パラメトリックイコライザ121は、図７に示すように、２次のIIR（Infinite Impulse Response）フィルタ121aが直列に分割された帯域数分（M個）接続されている。
【００７８】
IIRフィルタ121aは、遅延器1201〜1204と、乗算器1205〜1209と、加算器1210〜1212とを備えており、各乗算器1205〜1209の係数a0,a1,a2,b1,b2はフィルタ係数算出部120で算出した係数が使われ、サンプル単位で処理を行う。
【００７９】
このハウリング制御装置の動作は、図８のフローチャートに示すように、上述の実施の形態と同様に、入力信号x(t)を複数の帯域分割信号xi(t)に分割し、それぞれのレベルLi(t)を算出するとともに、全ての帯域分割信号のレベルの平均値Lave(t)を算出し、このレベルLi(t)とレベルの平均値Lave(t)に基づいてハウリングの発生を検出し、ハウリングが検出されていないフレーム数と前回の待ち時間から待ち時間を設定し、この待ち時間に基づいてゲインの制御を行う（S11〜S16）。
【００８０】
次いで、フィルタ係数算出部120において、帯域レベル算出部102で帯域レベルを算出する際に割り振った帯域ごとに、ゲイン制御部106で算出されたゲインと、予め設定されている帯域幅及びＱ（フィルタの形状を決める値）に基づいてパラメトリックイコライザ121 (IIRフィルタ121a)の係数を算出する（S61）。
【００８１】
ここで、帯域分割部101においてFFTにて時間信号を128ポイントに周波数分割したときの例を示す。サンプリング周波数を20[kHz]とすると、FFT1ポイントあたりの周波数分解能は156.25[Hz]となる。帯域レベル算出部102においてFFT4ポイントを1帯域とした場合、帯域数は16帯域（=128[point]/2/4[point]）、帯域幅は625[Hz]（=156.25[Hz]×4[point]）となる。ゲイン制御部106は、この帯域毎にゲインを算出する。フィルタ係数算出部120では、このゲインと、予め設定されている帯域幅（625[Hz]）、及びＱを基にパラメトリックイコライザ（IIRフィルタ121a）121の係数を双一次変換等の方法を用いて算出する。
【００８２】
次いで、パラメトリックイコライザ121において、フィルタ係数算出部120で算出されたフィルタ係数に基づいて、サンプル単位にフィルタリング処理を行なう(S62)。
【００８３】
このように構成することによって、入出力間の遅延時間を短くすることができる。
【００８４】
（第２の実施の形態）
図９〜図１２は本発明の第２の実施の形態のハウリング制御装置を示す図である。なお、本実施の形態は、上述の第１の実施の形態と略同様に構成されているので、同様な構成には同一の符号を付して特徴部分のみ説明する。
【００８５】
本実施の形態においては、上述の第１の実施の形態の待ち時間設定部105の代わりにゲインを復帰させる（１倍にする）ための更新量Gup-iの制御を行う更新量設定部201を設け、ゲイン制御部202の更新量を可変としたことを特徴としている。
【００８６】
具体的には、図１０のフローチャートに示すように、上述の第１の実施の形態と同様、入力信号x(t)を複数の帯域分割信号xi(t)に分割し、それぞれのレベルLi(t)を算出するとともに、全ての周波数帯域信号のレベルの平均値Lave(t)を算出し、このレベルLi(t)とレベルの平均値Lave(t)に基づいてハウリングの発生を検出する（S11〜S14）。
【００８７】
次いで、更新量設定部201において、ハウリング検出部104で観測されたハウリング観測時間how_off_cnt-iと、前回設定された更新量Gup-iから、今回の更新量Gup-iを設定する（S71）。
【００８８】
更新量設定部201は、フレーム毎にハウリング観測時間how_off_cnt-iを参照し、この値に基づいて図１１の状態遷移図に従って今回Gup-iを設定する。図１１には、(a)、(b)２通りの状態遷移例を示す。なお、T1、T2の値は、例えば、T1＝1563フレーム、T2＝18750フレームなどとする。
【００８９】
更新量設定の基本的な考え方は、ハウリング観測時間how_off_cnt-iが長ければ、頻繁にハウリングが発生していないため、更新量Gup-i（＞１）をより大きな値に設定し、ハウリング観測時間how_off_cnt-iが短ければ、頻繁にハウリングが発生しているため、更新量Gup-i（＞１）をより長い時間に設定する。
【００９０】
まず、図１１(a)において、初期状態は状態１であり、状態１ではGup-iは、例えば1.003690（=5.0dB/s相当）とし、how_off_cnt-i≧T1の間は状態１にとどまる。
【００９１】
how_off_cnt-i＜T1になると、状態１から状態２に遷移し、状態２ではGup-iは、例えば1.00147（=2.0dB/s相当）とする。T1≦how_off_cnt-i≦T2の間は状態２にとどまり、how_off_cnt-i＞T2となると状態１に戻る。
【００９２】
さらにhow_off_cnt-i＜T1になると、状態２から状態３に遷移し、状態３ではGup-iは、例えば1.00037（=0.5dB/s相当）とする。T1≦how_off_cnt-i≦T2の間は状態３にとどまり、how_off_cnt-i＞T2となると状態２に戻る。
【００９３】
さらにhow_off_cnt-i＜T1になると、状態３から状態４に遷移し、状態４ではGup-iは、例えば1.00007（=0.1dB/s相当）とする。how_off_cnt-i≦T2の間は状態４にとどまり、how_off_cnt-i＞T2となると状態３に戻る。
【００９４】
次に、図４(b)において、初期状態は状態１であり、状態１ではGup-iは、例えば1.003690（=5.0dB/s相当）とし、how_off_cnt-i≧T1の間は状態１にとどまる。
【００９５】
how_off_cnt-i＜T1になると、状態１から状態２に遷移し、状態２ではGup-iは、例えば1.00147（=2.0dB/s相当）とする。T1≦how_off_cnt-i≦T2の間は状態２にとどまり、how_off_cnt-i＞T2となると状態１に戻る。
【００９６】
さらにhow_off_cnt-i＜T1になると、状態２から状態３に遷移し、状態３ではGup-iは、例えば1.00037（=0.5dB/s相当）とする。T1≦how_off_cnt-i≦T2の間は状態３にとどまり、how_off_cnt-i＞T2となると状態１に戻る。
【００９７】
さらにhow_off_cnt-i＜T1になると、状態３から状態４に遷移し、状態４ではGup-iは、例えば1.00007（=0.1dB/s相当）とする。how_off_cnt-i≦T2の間は状態４にとどまり、how_off_cnt-i＞T2となると状態２に戻る。
【００９８】
ここで、例えば、サンプリング周波数Fs=20（kHz）、FFTポイント数＝128サンプル、フレームシフト＝64サンプルの場合、T1の1563フレーム≒５ｓ、T2の18750フレーム＝６０ｓとなる。
【００９９】
次いで、ゲイン制御部202において、図１２のフローチャートに示す処理によりゲインを制御する（S72）
【０１００】
図１２に示すように、まず、ハウリング検出フラグdtct_flg-iを参照し、ハウリングが検出されたか否かを確認する（S81）。
【０１０１】
dtct_flg-i=0x0000の場合、ハウリングが発生していないと判断し、ゲインGi(t)が1未満であれば、ゲインを'1'に戻すように次式にしたがってゲインGi(t)を更新する（S82）。
Gi(t) = Gi(t-1)×Gup1
ここでGup1はゲインを上げるための更新量であり、Gup1＞1の値をとる。
【０１０２】
dtct_flg-i=0xffffの場合、ハウリングが検出されたと判断し、ハウリングを抑圧するようなゲインを設定するため、ゲイン制御フラグctrl_gain_flg-iを参照し、ハウリングを抑圧するためゲインGi(t)（iは帯域番号）を下げるか、抑圧を解除するためゲインGi(t)を上げるかの判定を行なう（S83）。
【０１０３】
ctrl_gain_flg-i=0x0000の場合、ハウリングを抑圧するため、次式にしたがってゲインGi(t)を更新する（S84）。
Gi(t) = Gi(t-1)×Gdown
ここでGdownはゲインを下げるための更新量であり、0＜Gdown＜1の値をとる。また、ゲインの下限値を設けることにより、必要以上の抑圧の防止が可能となる。
【０１０４】
次いで、帯域レベルLi(t)と基準レベルLref-i(t)との比とゲイン制御用閾値Th_Ctrl_gainを比較する（S85）。比較の結果、Li(t)/Lref-i(t)＜Th_Ctrl_gainの場合、ハウリングの発生がおさまっていると判断し、ゲインGi(t)を'1'に戻す処理へと移行するため、ctrl_gain_flg-iの値を0xffffに設定し（S86）、ゲインGi(t)を直ちに'1'に戻すかを判定するための更新量設定フラグgup_ctrl_flg-iの値を0xffffに設定する（S87）。
【０１０５】
S83の比較の結果、ctrl_gain_flg-i=0xffffの場合、ハウリングがおさまっていると判断し、更新量が設定されているかを判定するため更新量設定フラグgup_ctrl_flg-iの値を参照する（S88）。gup_ctrl_flg-i=0xffffの場合、ゲインを'1'に戻す処理（ゲイン復帰処理）の更新量Gup-iが設定されていないため、更新量設定部201で設定された更新量を設定する（S89）。
【０１０６】
次いで、次回に備えてハウリング観測時間how_off_cnt-iを'0'にリセットし、更新量が設定されたことを示すため、gup_ctrl_flgを0x0000に設定する（S90）。
【０１０７】
なお、S88にてgup_ctrl_flg-i=0x0000の場合、更新量Gup-iの設定が完了しているため、次の処理へと進む。
【０１０８】
次いで、ハウリング抑圧後、ゲインを1倍に戻すように次式にしたがってゲインGi(t)を更新する（S91）。
Gi(t) = Gi(t-1)×Gup-i
ここでGup-iはゲインを上げるための更新量であり、更新量設定部201で設定された値である。
【０１０９】
次いで、このゲインGi(t)がゲイン閾値Gup_Th（例えば，0.7倍（=-3.0[dB]））を超えたかを判定し（S92）、ゲインGi(t)がゲイン閾値Gup_Thを超えている場合、ハウリング検出フラグdtct_flg-i及びゲイン制御フラグctrl_gain_flg-iに0x0000を設定し、ハウリングの検出を再開する（S93）。
【０１１０】
この後は、上述の第１の実施の形態と同様に、求めたゲインGi(t)を使い、ハウリング抑圧部107において、帯域分割信号xi(t)にゲインGi(t)を乗じてyi(t)を得て、帯域合成部108において、帯域分割部101で行なった帯域分割方法と対応した方法により時間信号y(t)を算出し、出力端子111を介してy(t)をDA変換器、アンプ、スピーカ等に出力する（S17〜S18）。
【０１１１】
以上のように、本実施の形態のハウリング制御装置は、ハウリング検出部104において、ハウリングが発生していないフレーム数をカウントし、更新量設定部201において、このフレーム数と前回の更新量に基づいて、ハウリング抑圧後のゲインを復帰させる際の更新量を設定しているので、ハウリングの発生、停止が頻発する過渡的な状況においてもハウリングの抑圧、解除を繰り返さずハウリングの抑圧を継続して行うことができる。
【０１１２】
なお、本実施の形態においては、帯域分割部101で分割された帯域分割信号それぞれのレベルを帯域レベル算出部102で算出したが、帯域レベル算出部102で帯域分割部101で分割された周波数帯域信号を、予め設定された数分合算して１帯域としてもよい。
【０１１３】
本実施の形態の他の態様としては、図１３に示すように、ハウリング抑圧部107及び帯域合成部108に代わって、分割された周波数帯域毎にフィルタ処理を行うパラメトリックイコライザ121とパラメトリックイコライザ121の各周波数帯域毎のフィルタ係数を算出するフィルタ係数算出部120を設けたことを特徴とする。
【０１１４】
フィルタ係数算出部120及びパラメトリックイコライザ121は、上述の第１の実施の形態の他の態様と同等に構成されているので、ここでは説明を省略する。
【０１１５】
このハウリング制御装置の動作は、図１４のフローチャートに示すように、上述の実施の形態と同様に、入力信号x(t)を複数の帯域分割信号xi(t)に分割し、それぞれのレベルLi(t)を算出するとともに、全ての周波数帯域信号のレベルの平均値Lave(t)を算出し、このレベルLi(t)とレベルの平均値Lave(t)に基づいてハウリングの発生を検出する（S11〜S14）。
【０１１６】
次いで、ハウリングが検出されていないフレーム数と前回の更新量から更新量を設定し、この更新量に基づいてゲインの制御を行う（S71、S72）。
【０１１７】
次いで、上述の第１の実施の形態の他の態様と同様に、フィルタ係数算出部120において、帯域ごとに、ゲインと予め設定されている帯域幅及びＱに基づいてパラメトリックイコライザ121 (IIRフィルタ121a)の係数を算出し、パラメトリックイコライザ121において、フィルタ係数算出部120で算出されたフィルタ係数に基づいて、サンプル単位にフィルタリング処理を行なう(S61、S62)。
【０１１８】
このように構成することによって、入出力間の遅延時間を短くすることができる。
【０１１９】
【発明の効果】
以上説明したように、本発明によれば、保持時間制御部によりハウリングの発生頻度に応じてハウリングの抑圧を解除するまでの時間を制御することにより、ハウリングの抑圧、解除の繰り返しを無くすことができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態のハウリング制御装置を示す概略ブロック図
【図２】本発明の第１の実施の形態のハウリング制御装置の処理を示すフローチャート
【図３】本発明の第１の実施の形態のハウリング制御装置のハウリング検出部の処理を示すフローチャート
【図４】本発明の第１の実施の形態のハウリング制御装置の待ち時間設定部の動作を示す状態遷移図
【図５】本発明の第１の実施の形態のハウリング制御装置のゲイン制御部の処理を示すフローチャート
【図６】本発明の第１の実施の形態の他の態様のハウリング制御装置を示す概略ブロック図
【図７】本発明の第１の実施の形態の他の態様のハウリング制御装置のパラメトリックイコライザを示す概略ブロック図
【図８】本発明の第１の実施の形態の他の態様のハウリング制御装置の処理を示すフローチャート
【図９】本発明の第２の実施の形態のハウリング制御装置を示す概略ブロック図
【図１０】本発明の第２の実施の形態のハウリング制御装置の処理を示すフローチャート
【図１１】本発明の第２の実施の形態のハウリング制御装置の更新量設定部の動作を示す状態遷移図
【図１２】本発明の第２の実施の形態のハウリング制御装置のゲイン制御部の処理を示すフローチャート
【図１３】本発明の第２の実施の形態の他の態様のハウリング制御装置を示す概略ブロック図
【図１４】本発明の第２の実施の形態の他の態様のハウリング制御装置の処理を示すフローチャート
【図１５】従来のハウリング制御装置を示す概略ブロック図
【図１６】従来のハウリング制御装置のハウリング検出部の処理を示すフローチャート
【図１７】従来のハウリング制御装置のゲイン制御部の処理を示すフローチャート
【符号の説明】
101 帯域分割部
102 帯域レベル算出部
103 帯域レベル平均値算出部
104 ハウリング検出部
105 待ち時間設定部
106 ゲイン制御部
107 ハウリング抑圧部
108 帯域合成部
110 入力端子
111 出力端子
120 フィルタ係数算出部
121 パラメトリックイコライザ
121a IIRフィルタ
201 更新量設定部
202 ゲイン制御部
1001 帯域分割部
1002 帯域レベル算出部
1003 帯域レベル平均値算出部
1004 ハウリング検出部
1005 ゲイン制御部
1006 ハウリング抑圧部
1007 帯域合成部
1008 入力端子
1009 出力端子
1201〜1204 遅延器
1205〜1209 乗算器
1205〜1209 各乗算器
1210〜1212 加算器
【図１】
0003984842.tif 000002
【図２】
0003984842.tif 000003
【図３】
0003984842.tif 000004
【図４】
0003984842.tif 000005
【図５】
0003984842.tif 000006
【図６】
0003984842.tif 000007
【図７】
0003984842.tif 000008
【図８】
0003984842.tif 000009
【図９】
0003984842.tif 000010
【図１０】
0003984842.tif 000011
【図１１】
0003984842.tif 000012
【図１２】
0003984842.tif 000013
【図１３】
0003984842.tif 000014
【図１４】
0003984842.tif 000015
【図１５】
0003984842.tif 000016
【図１６】
0003984842.tif 000017
【図１７】
0003984842.tif 000018