(57)【要約】      （修正有）【課題】アタック音が短い周期で連続して入力された場合でも歪みが生じない良好な自動レベル制御（ＡＬＣ）を実現する。【解決手段】第１のＡＬＣ機能部１１は、入力音声信号の振幅レベルが所定範囲の上限値を超えた場合はゲインを低下させるリミット動作を行い、振幅レベルが所定範囲の下限値より小さい場合はゲインを増加させるリカバリ動作を行う。第２のＡＬＣ機能部１２は、第１のＡＬＣ機能部１１で振幅レベルが調整された音声信号に対して再度、リミット動作又はリカバリ動作を行う。ここで、第１のＡＬＣ機能部１１でのリカバリ動作時のゲインの増加の時定数を、第２のＡＬＣ機能部１２でのリカバリ動作時のゲインの増加の時定数より大きくする。【選択図】図１
2014126854.tif 000002
【特許請求の範囲】
【請求項１】
入力された音声信号の振幅レベルが所定範囲内に収まるように前記振幅レベルを調整する音声処理装置であって、
入力された音声信号の振幅レベルが前記所定範囲の上限値を超えた場合は前記振幅レベルのゲインを低下させるリミット動作を行い、前記音声信号の振幅レベルが前記所定範囲の下限値より小さい場合は前記ゲインを増加させるリカバリ動作を行う、第１のレベル制御手段と、
前記第１のレベル制御手段により振幅レベルが調整された音声信号に対して再度、前記リミット動作又はリカバリ動作を行う、第２のレベル制御手段と、
を有し、
前記第１のレベル制御手段でのリカバリ動作時の前記ゲインの増加の時定数を、前記第２のレベル制御手段でのリカバリ動作時の前記ゲインの増加の時定数より大きくする
ことを特徴とする音声処理装置。
【請求項２】
前記入力された音声信号の振幅レベルが０レベルと交差するゼロクロスを検出するゼロクロス検出手段を更に有し、
前記第１及び第２のレベル制御手段は、前記ゼロクロスが検出されたタイミングで前記ゲインを変化させることを特徴とする請求項１に記載の音声処理装置。
【請求項３】
入力された音声信号の振幅レベルが所定範囲内に収まるように前記振幅レベルを調整する音声処理装置であって、
入力された音声信号の振幅レベルを判定する判定手段と、
前記判定された振幅レベルに第１ゲインを乗じて得た振幅レベルを予測する第１の予測手段と、
前記第１の予測手段で予測された振幅レベルに第２ゲインを乗じて得た振幅レベルを予測する第２の予測手段と、
前記第１の予測手段で予測された振幅レベルが前記所定範囲の上限値を超えた場合は前記第１ゲインを低下させるリミット動作を行い、前記振幅レベルが前記所定範囲の下限値より小さい場合は前記第１ゲインを増加させるリカバリ動作を行う、第１のゲイン制御手段と、
前記第２の予測手段で予測された振幅レベルを入力し、前記第２ゲインに対するリミット動作又はリカバリ動作を行う、第２のゲイン制御手段と、
前記第１のゲイン制御手段により制御された前記第１ゲインと前記第２のゲイン制御手段により制御された前記第２ゲインとを合計した合計ゲインにより、前記入力された音声信号の振幅レベルを調整する調整手段と、
を有し、
前記第１のゲイン制御手段でのリカバリ動作時の前記第１ゲインの増加の時定数を、前記第２のゲイン制御手段でのリカバリ動作時の前記第２ゲインの増加の時定数より大きくする
ことを特徴とする音声処理装置。
【請求項４】
前記第２の予測手段で予測された振幅レベルが前記所定範囲内に収まっている場合に、前記第１ゲインが変化しても前記合計ゲインが変化しないように前記第１ゲインを調整する手段を更に有することを特徴とする請求項３に記載の音声処理装置。
【請求項５】
前記入力された音声信号の振幅レベルが０レベルを交差するゼロクロスを検出するゼロクロス検出手段を更に有し、
前記第１及び第２のゲイン制御手段はそれぞれ、前記ゼロクロスが検出されたタイミングで前記第１及び第２ゲインを変化させることを特徴とする請求項３又は４に記載の音声処理装置。
【請求項６】
入力された音声信号の振幅レベルが所定範囲内に収まるように前記振幅レベルを調整する音声処理装置の制御方法であって、
第１のレベル制御手段が、入力された音声信号の振幅レベルが前記所定範囲の上限値を超えた場合は前記振幅レベルのゲインを低下させるリミット動作を行い、前記音声信号の振幅レベルが前記所定範囲の下限値より小さい場合は前記ゲインを増加させるリカバリ動作を行う、第１のレベル制御ステップと、
第２のレベル制御手段が、前記第１のレベル制御ステップで振幅レベルが調整された音声信号に対して再度、前記リミット動作又はリカバリ動作を行う、第２のレベル制御ステップと、
を有し、
前記第１のレベル制御ステップでのリカバリ動作時の前記ゲインの増加の時定数を、前記第２のレベル制御ステップでのリカバリ動作時の前記ゲインの増加の時定数より大きくする
ことを特徴とする音声処理装置の制御方法。
【請求項７】
入力された音声信号の振幅レベルが所定範囲内に収まるように前記振幅レベルを調整する音声処理装置の制御方法であって、
判定手段が、入力された音声信号の振幅レベルを判定する判定ステップと、
第１の予測手段が、前記判定された振幅レベルに第１ゲインを乗じて得た振幅レベルを予測する第１の予測ステップと、
第２の予測手段が、前記第１の予測ステップで予測された振幅レベルに第２ゲインを乗じて得た振幅レベルを予測する第２の予測ステップと、
第１のゲイン制御手段が、前記第１の予測ステップで予測された振幅レベルが前記所定範囲の上限値を超えた場合は前記第１ゲインを低下させるリミット動作を行い、前記振幅レベルが前記所定範囲の下限値より小さい場合は前記第１ゲインを増加させるリカバリ動作を行う、第１のゲイン制御ステップと、
第２のゲイン制御手段が、前記第２の予測ステップで予測された振幅レベルを入力し、前記第２ゲインに対するリミット動作又はリカバリ動作を行う、第２のゲイン制御ステップと、
調整手段が、前記第１のゲイン制御ステップで制御された前記第１ゲインと前記第２のゲイン制御ステップで制御された前記第２ゲインとを合計した合計ゲインにより、前記入力された音声信号の振幅レベルを調整する調整ステップと、
を有し、
前記第１のゲイン制御ステップでのリカバリ動作時の前記第１ゲインの増加の時定数を、前記第２のゲイン制御ステップでのリカバリ動作時の前記第２ゲインの増加の時定数より大きくする
ことを特徴とする音声処理装置の制御方法。
【請求項８】
コンピュータを、請求項１乃至５のいずれか１項に記載の音声処理装置が有する各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声処理装置及びその制御方法に関する。
【背景技術】
【０００２】
従来、入力した音声の大きさを適正なレベルに制御する自動レベル制御（ＡＬＣ）機能を有する音声処理装置が知られている（例えば特許文献１参照。）。ＡＬＣは概略、入力音が過大であればレベルを抑圧し（リミット動作）、過小であればレベルを増幅させる（リカバリ動作）、という制御を行う。ここで、突発的な音、すなわち急激に立ち上がり、直後に急激に立ち下がるような音が入力された場合の対処が問題となる。このような音は一般に「アタック音」と呼ばれている。具体的には、アタック音の立ち上がり部が入力されると、リミット動作によりレベルが抑制される。その後、アタック音の立ち下がり部が入力されると、リカバリ動作によりレベルが増大されることになる。しかしアタック音の立ち下がりは急激であるためリカバリの反応が遅く、その立ち下がり部直後の音声のレベルが小さくて聞き取りにくくなるという問題がある。
【０００３】
そこで、アタック音検出時のリカバリ動作においては通常よりレベルの増幅率を上げることでリカバリの反応を速めることが考えられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１２９１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、アタック音が短い周期で連続して入力された場合、１つアタック音でのリカバリ動作において通常よりレベルの増幅率を上げると、それ以降のアタック音の立ち上がり部で音声がクリップして歪んでしまうという問題がある。
【０００６】
本発明は、かかる問題を解決するためになされたものである。すなわち本発明は、アタック音が短い周期で連続して入力された場合でも歪みが生じない良好な自動レベル制御を実現する。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、入力された音声信号の振幅レベルが所定範囲内に収まるように前記振幅レベルを調整する音声処理装置であって、入力された音声信号の振幅レベルが前記所定範囲の上限値を超えた場合は前記振幅レベルのゲインを低下させるリミット動作を行い、前記音声信号の振幅レベルが前記所定範囲の下限値より小さい場合は前記ゲインを増加させるリカバリ動作を行う、第１のレベル制御手段と、前記第１のレベル制御手段により振幅レベルが調整された音声信号に対して再度、前記リミット動作又はリカバリ動作を行う、第２のレベル制御手段とを有し、前記第１のレベル制御手段でのリカバリ動作時の前記ゲインの増加の時定数を、前記第２のレベル制御手段でのリカバリ動作時の前記ゲインの増加の時定数より大きくすることを特徴とする音声処理装置が提供される。
【発明の効果】
【０００８】
本発明によれば、アタック音が短い周期で連続して入力された場合でも歪みが生じない良好な自動レベル制御を実現することができる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係る音声処理装置のＡＬＣ部の構成を示す図。
【図２】第１実施形態に係るＡＬＣ部の動作を示すフローチャート。
【図３】ゼロクロス検出部の動作を示すフローチャート。
【図４】振幅レベル判定部の動作を示すフローチャート。
【図５】第１実施形態に係る第１及び第２振幅調整部の動作を示すフローチャート。
【図６】第１実施形態に係る第１振幅ゲイン決定部の動作を示すフローチャート。
【図７】第１実施形態において、複数のアタック音が連続的に入力された場合のＡＬＣ動作を示す図。
【図８】第２実施形態に係る音声処理装置のＡＬＣ部の構成を示す図。
【図９】第２実施形態に係るＡＬＣ部の動作を示すフローチャート。
【図１０】第３実施形態における音声処理装置のＡＬＣ部の構成を示す図。
【図１１】第３実施形態に係るＡＬＣ部の動作を示すフローチャート。
【図１２】第３実施形態に係る振幅ゲイン調整部の動作を示すフローチャート。
【図１３】第３実施形態に係る第２振幅ゲイン決定部の動作を示すフローチャート。
【図１４】音声処理装置の自動レベル制御部の構成例を示す図。
【図１５】図１４のＡＬＣ部の動作を示すフローチャート。
【図１６】アタック音判定部の動作を示すフローチャート。
【図１７】振幅ゲイン決定部の動作を示すフローチャート。
【図１８】（ａ）はアタック音の時のＡＬＣ動作、（ｂ）はアタック音ではないときのＡＬＣ動作を示す図。
【図１９】複数のアタック音が連続的に入力された場合のＡＬＣ動作を示す図。
【発明を実施するための形態】
【００１０】
以下、添付の図面を参照して、本発明の実施形態を詳しく説明する。なお、以下の実施形態において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１１】
以下の実施形態では音声処理装置について説明を行うが、音声を処理することができる装置であればどのような装置であってもよい。音声処理装置は例えば、撮像装置、携帯電話、スマートフォン、パーソナルコンピュータ、ＩＣレコーダ、カーナビゲーションシステム、音声認識機能を備えた車などでありうる。これらの音声処理装置には、例えばマイクロホンなどの集音部により集音された音声信号を制御するブロックが含まれる。
【００１２】
＜アタック音検出時のリカバリ動作の説明＞
本発明は、入力された音声信号の振幅レベルが所定範囲内に収まるように振幅レベルを調整する自動レベル制御（ＡＬＣ）の機能を有する音声処理装置に関する。本発明の実施形態を詳しく説明する前に、音声処理装置の自動レベル制御における、アタック音検出時のリカバリ動作について説明しておく。
【００１３】
図１４に音声処理装置のＡＬＣ部の構成の一例を示す。図１４において、音声入力部１５０１は、マイクロホンまたは音声再生装置等の音声取込部からの音声信号を入力する。音声入力部１５０１には、ＤＣ成分を除去された音声信号が入力される。従って０を中心に正負の値の音声信号が入力される。なお、本明細書において「音声信号」とは、人の声に限らず様々な音を含むものとする。振幅調整部１５０２は、入力した音声信号をゲイン１５０７ゲインによって振幅を調整し音声出力部１５０３へ出力する。振幅レベル判定部１５０９は、音声出力部１５０３の音声信号の振幅レベルを判定する。ゼロクロス検出部１５０４は、音声入力部１５０１の音声信号の値のゼロクロスを検出する。アタック音判定部１５１０は、振幅レベル判定部１５０９から出力される振幅レベル１５０８が急に大きくなってから小さくなるまでの期間を測定し、それがアタック音かどうかを判定する。振幅ゲイン決定部１５０６は、ゼロクロス検出結果１５０５、振幅レベル１５０８、アタック音判定結果１５１１により、振幅レベル１５０８が下限値ＴＨ＿ＭＩＮ〜上限値ＴＨ＿ＭＡＸの間になるように制御を行う。この制御により振幅ゲイン決定部１５０６は、振幅調整部１５０２のゲインを決定して、ゲイン１５０７を出力する。
【００１４】
以下、図１４のＡＬＣ部の動作について説明する。ここでは音声をサンプリング周波数Ｆｓでデジタル信号に変換した場合について説明するが、アナログ信号であっても同様である。図１５は、図１４のＡＬＣ部の動作を示すフローチャートである。まず、現在時刻がサンプリングタイミングであるか否かを判定し（Ｓ１６０１）、サンプリングタイミングである場合には、音声入力部１５０１からの音声信号の入力及び音声出力部１５０３への音声信号の出力を行う（Ｓ１６０２）。次に振幅レベル判定部１５０９で音声信号の振幅レベル判定を行い（Ｓ１６０３）、ゼロクロス検出部１５０４で音声信号のゼロクロス検出を行う（Ｓ１６０４）。次にアタック音判定部１５１０でアタック音の判定を行い（Ｓ１６０５）、振幅ゲイン決定部１５０６で振幅ゲインを決定（Ｓ１６０６）する。その後、振幅調整部１５０２で、振幅ゲイン決定部１５０６の出力であるゲイン１５０７を用いて音声信号の振幅調整を行い（Ｓ１６０７）、次のサンプルタイミングが来るまで待機する。
【００１５】
図３は、ゼロクロス検出部１５０４の動作を示すフローチャートである。まず、音声入力部１５０１を介して入力された音声信号のサンプル値をＤＩＮとする（Ｓ３０１）。ＤＩＮが、前回のサンプリングタイミングの入力であるＤＩＮ＿Ｄと符号が異なる場合、すなわち、ＤＩＮ＞０かつＤＩＮ＿Ｄ＜０である場合（Ｓ３０２ＹＥＳ）、ゼロクロス検出結果として、ゼロクロス検出を示す値１を出力する（Ｓ３０５）。また、ＤＩＮ＜０かつＤＩＮ＿Ｄ＞０である場合（Ｓ３０３ＹＥＳ）も、ゼロクロス検出を示す値１を出力する（Ｓ３０５）。ＤＩＮが０である場合も、同様に、ゼロクロス検出結果としてゼロクロス検出を示す値１を出力する（Ｓ３０５）。それ以外の場合はゼロクロス検出結果としてゼロクロス非検出を示す値０を出力する（Ｓ３０５）。こうして得られたゼロクロス検出結果１５０５は、振幅ゲイン決定部１５０６に伝達される。そして次の処理のために現在のＤＩＮをＤＩＮ＿Ｄに代入して（Ｓ３０７）、処理を終了する。
【００１６】
図４は、振幅レベル判定部１５０９の動作を示すフローチャートである。まず、振幅調整部１５０２から音声出力部１５０３へと出力される音声サンプルの絶対値をＤＩＮとする（Ｓ４０１）。ＤＩＮが前回の判定結果である振幅レベルＤＬＥＶＥＬ以上かどうかを判定する（Ｓ４０２）。ＤＩＮがＤＬＥＶＥＬ以上の場合、ＤＬＥＶＥＬにＤＩＮを代入する（Ｓ４０４）。Ｓ４０２でＤＩＮがＤＬＥＶＥＬ以上でなければ、ＤＩＮが前回の判定結果である振幅レベルＤＬＥＶＥＬからＫ１を減じた値以下かどうかを判定する（Ｓ４０３）。その判定がＮＯであれば、ＤＬＥＶＥＬにＤＩＮを代入する（Ｓ４０４）。その判定がＹＥＳであれば、ＤＬＥＶＥＬからＫ１を減じた値をＤＬＥＶＥＬに代入する（Ｓ４０５）。このときＤＬＥＶＥＬがＤＩＮより小さくならないように制限する。そして、こうして得たＤＬＥＶＥＬを今回の振幅レベル１５０８として出力する（Ｓ４０６）。以上のようにすることで、音声信号のエンベロープ値が得られるためこれを振幅レベルとする。Ｓ４０１では入力した音声サンプルはそのまま処理してもよいが絶対値をとった方が、正負が非対称の場合でも大きいレベルを反映できるため、ＡＬＣの性能が向上する。
【００１７】
図１６は、アタック音判定部１５１０の動作を示すフローチャートである。振幅調整部１５０２で振幅を調整する場合に、大きい音声から小さい音声になった場合のゲインの変化量を大きい音声の期間に応じて変えるために、短く大きい音声（アタック音）を判定する。まず、振幅レベル判定部１５０９で判定された振幅レベル１５０８をＤＬＥＶＥＬとする（Ｓ１７０１）。ＤＬＥＶＥＬがしきい値ＴＨ＿ＭＡＸより大きい場合（Ｓ１７０２ＹＥＳ）、ＡＴＴ＿ＣＮＴに固定値Ｋ２を加算する（Ｓ１７０３）。ＤＬＥＶＥＬがＴＨ＿ＭＡＸと等しいか小さい場合は（Ｓ１７０２ＮＯ）、ＡＴＴ＿ＣＮＴが０になるまで（Ｓ１７０４でＹＥＳとなるまで）、ＡＴＴ＿ＣＮＴから固定値Ｋ３を差し引く（Ｓ１７０５）。突然音声が大きくなった場合に、ＡＬＣが振幅レベルをＴＨ＿ＭＡＸ以下にするまでＡＴＴ＿ＣＮＴがＫ２ずつ増加し続ける（Ｓ１７０３）。その後振幅レベルがＴＨ＿ＭＡＸ以下であればＡＴＴ＿ＣＮＴがＫ３ずつ減少する（Ｓ１７０５）。したがって、ＡＴＴ＿ＣＮＴが０か否かを判定し（Ｓ１７０６）、ここでＡＴＴ＿ＣＮＴが０であればアタック音非検出を表す０を出力し（Ｓ１７０７）、ＡＴＴ＿ＣＮＴが０でなければアタック音検出を表す１を出力する（Ｓ１７０８）。
【００１８】
図１７は、振幅ゲイン決定部１５０６の動作を示すフローチャートである。振幅ゲイン決定部１５０６では振幅レベル１５０８がＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸ（ただしＴＨ＿ＭＩＮ＜ＴＨ＿ＭＡＸ）の間になるように制御を行う。振幅レベル１５０８がＴＨ＿ＭＩＮより小さい場合にゲイン１５０７を増加させる動作の場合をリカバリ動作、振幅レベル１５０８がＴＨ＿ＭＡＸより大きい場合にゲイン１５０７を低下させる動作の場合をリミット動作と呼ぶ。図１７のフローチャートにおいて、変数ＧＡＩＮは出力されるゲイン１５０７を表す。また、Ｓ＿ＣＮＴはサンプル周波数タイミングのカウンタを表す変数である。Ｍ＿ＬＩＭＩＴモードまたはＭ＿ＲＥＣＯＶモードの開始時はゼロであり、サンプル周波数タイミング毎にカウントアップする。
【００１９】
振幅ゲイン決定部１５０６はまず、ゼロクロス検出結果１５０５、振幅レベル１５０８、アタック音判定結果１５１１をそれぞれ、変数Ｚ＿ＤＥＴ、ＤＬＥＶＥＬ、ＡＴＴ＿ＤＥＴに入力する（Ｓ１８０１）。その後、モード（ＭＯＤＥ）の判定を行いその判定に応じた処理を行う。ＭＯＤＥは、Ｍ＿ＩＤＬＥ、Ｍ＿ＬＩＭＩＴ、Ｍ＿ＲＥＣＯＶの３つのモードをもつ。リカバリ動作の時はＭＯＤＥ＝Ｍ＿ＲＥＣＯＶ、リミット動作の時はＭＯＤＥ＝Ｍ＿ＬＩＭＩＴとなる。また、振幅レベルがＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸの範囲内の場合はＭＯＤＥ＝Ｍ＿ＩＤＬＥとして、ゲインを保つ。Ｍ＿ＬＩＭＩＴ、Ｍ＿ＲＥＣＯＶは、１サンプル〜複数サンプル期間をかけて処理を行う。
【００２０】
ＭＯＤＥ＝Ｍ＿ＩＤＬＥの場合において、現在の音声の振幅レベルＤＬＥＶＥＬ＞ＴＨ＿ＭＡＸの場合は（Ｓ１８０３ＹＥＳ）、ＭＯＤＥ＝Ｍ＿ＬＩＭＩＴに変更し（Ｓ１８０４）、再度、Ｓ１８０２に戻る。一方、ＤＬＥＶＥＬ＜ＴＨ＿ＭＩＮの場合は（Ｓ１８０５ＹＥＳ）、ＭＯＤＥ＝Ｍ＿ＲＥＣＯＶに変更し、再度Ｓ１８０２に戻る。ＤＬＥＶＥＬがＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸの範囲にある場合は（Ｓ１８０３ＮＯかつＳ１８０５ＮＯ）、ＧＡＩＮの値をそのままゲイン１５０７として出力して（Ｓ１８０７）、処理を終了する。
【００２１】
ＭＯＤＥ＝Ｍ＿ＲＥＣＯＶの場合、リカバリ動作を行うが、ＤＬＥＶＥＬがＴＨ＿ＭＡＸを超えた場合は（Ｓ１８０８ＹＥＳ）、ＭＯＤＥをＭ＿ＬＩＭＩＴに変更してリミット動作を行う（Ｓ１８０９）。これは、リカバリ動作が終了するまでリミット動作をいっさい行わないとすると音声信号が大きくなりすぎて歪む可能性があるからである。また、ＭＯＤＥをＭ＿ＲＥＣＯＶからＭ＿ＬＩＭＩＴに変更した場合はＳ＿ＣＮＴを０にリセットする（Ｓ１８０９）。
【００２２】
ＭＯＤＥ＝Ｍ＿ＬＩＭＩＴの場合、Ｃ＿ＭＩＮ、Ｃ＿ＭＡＸ、ＡＤＤ＿ＧＡＩＮをそれぞれ、Ｌ＿Ｃ＿ＭＡＩＮ、Ｌ＿Ｃ＿ＭＡＸ、Ｌ＿ＡＤＤ＿ＧＡＩＮに設定する（Ｓ１８１０）。
【００２３】
ＭＯＤＥ＝Ｍ＿ＲＥＣＯＶの場合で、ＤＬＥＶＥＬがＴＨ＿ＭＡＸを超えなければ（Ｓ１８０８ＮＯ）、アタック音の検出結果を判定する（Ｓ１８１１）。ここでアタック音未検出（ＡＴＴ＿ＤＥＴ＝０）の場合は（Ｓ１８１１ＮＯ）、Ｃ＿ＭＩＮ、Ｃ＿ＭＡＸ、ＡＤＤ＿ＧＡＩＮをそれぞれ、Ｒ＿Ｃ＿ＭＡＩＮ、Ｒ＿Ｃ＿ＭＡＸ、Ｒ＿ＡＤＤ＿ＧＡＩＮに設定する（Ｓ１８１２）。一方、アタック音検出（ＡＴＴ＿ＤＥＴ＝１）の場合は（Ｓ１８１１ＹＥＳ）、Ｃ＿ＭＩＮ、Ｃ＿ＭＡＸ、ＡＤＤ＿ＧＡＩＮをそれぞれ、ＡＴＴ＿Ｃ＿ＭＡＩＮ、ＡＴＴ＿Ｃ＿ＭＡＸ、ＡＴＴ＿ＡＤＤ＿ＧＡＩＮに設定する（Ｓ１８１３）。アタック音検出時のリカバリ動作を「ファーストリカバリ動作」と呼ぶ。Ｃ＿ＭＩＮはゲインを変更する最小のサンプル期間を設定するパラメータであり、通常Ｃ＿ＭＩＮ＜Ｃ＿ＭＡＸの条件で設定するが、ゼロクロス検出結果を使用しない場合、Ｃ＿ＭＩＮはどのような値でもかまわない。
【００２４】
Ｓ＿ＣＮＴ＞Ｃ＿ＭＡＸのときは（Ｓ１８１４ＹＥＳ）は、ＧＡＩＮの値を、現在のＧＡＩＮの値にＡＤＤ＿ＧＡＩＮを加算した値に更新する（Ｓ１８１５）。Ｓ＿ＣＮＴ＞Ｃ＿ＭＩＮかつＺ＿ＤＥＴ＝１（ゼロクロス検出）のとき（Ｓ１８１６ＹＥＳ）も、同様に、ＧＡＩＮの値を、現在のＧＡＩＮの値にＡＤＤ＿ＧＡＩＮを加算した値に更新する（Ｓ１８１５）。その後、Ｓ＿ＣＮＴを０にリセットするとともに、ＭＯＤＥをＭ＿ＩＤＬＥにして（Ｓ１８１７）、ＧＡＩＮを出力して（Ｓ１８０７）、処理を終了する。それ以外のときはＳ＿ＣＮＴを１インクリメントして（Ｓ１８１８）、ＭＯＤＥを維持したまま、ＧＡＩＮを出力して（Ｓ１８０７）、処理を終了する。
【００２５】
以上の処理において、Ｃ＿ＭＩＮは、ＧＡＩＮ変更の時定数に相当する。Ｃ＿ＭＩＮが大きくなるとＤＬＥＶＥＬがＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸの範囲に収まるまでの時間がかかるようになる。これは、ＧＡＩＮ変更の時定数が大きくなることに相当する。Ｃ＿ＭＡＸは低周波数の音声の場合に、ＧＡＩＮ変更の時定数が大きくなりすぎないようにするリミッタの働きをしている。ＧＡＩＮの変更はＧＡＩＮにＡＤＤ＿ＧＡＩＮを加算することで行われる（Ｓ１８１５）。従ってＭ＿ＬＩＭＩＴ（リミット動作）時、ＡＤＤ＿ＧＡＩＮはマイナス値、Ｍ＿ＲＥＣＯＶ（リカバリ動作）時、ＡＤＤ＿ＧＡＩＮはプラス値となる。
【００２６】
ゲインの変化分はできるだけ小さくした方が音質に与える影響が少ない。そこで、ここでは以下のようにする。
【００２７】
Ｒ＿ＡＤＤ＿ＧＡＩＮ  ＝  −Ｌ＿ＡＤＤ＿ＧＡＩＮ１  ＝  ＡＴＴ＿ＡＤＤ＿ＧＡＩＮ２
なお、Ｒ＿ＡＤＤ＿ＧＡＩＮは正の値である。リミット動作時は音声信号のレベルが大きくなって歪むので、できるだけ速くゲインを減らした方がよい。一方、リカバリ動作時はレベルの変動が目立たないようにできるだけゲインをゆっくり増加させた方がよい。そこで、
Ｒ＿Ｃ＿ＭＩＮ  ＞  Ｌ＿Ｃ＿ＭＩＮ  
とする。さらに、アタック音の場合は、リカバリ動作の時定数を小さくして、アタック音直後の音声レベルをできるだけ早く適正レベルにすることが望まれる。そこで、
Ｒ＿Ｃ＿ＭＩＮ  ＞  ＡＴＴ＿Ｃ＿ＭＩＮ
とする。
【００２８】
図１８において、（ａ）はアタック音の時のＡＬＣ動作、（ｂ）はアタック音ではないときのＡＬＣ動作を示す図である。「入力音エンベロープ」は、音声入力部１５０１に入力された音声信号のエンベロープ波形であり、（ａ）は、急に振幅レベルが大きくなりすぐに振幅レベルが小さくなるアタック音を示す。これに対し、（ｂ）は、急に振幅レベルが大きくなるがしばらくしてから振幅レベルが小さくなる、アタック音ではない音声を示す。「出力音エンベロープ」は、音声出力部１５０３の音声信号のエンベロープ波形であり、ＡＬＣ実行後の出力である。「ゲイン」は、振幅ゲイン決定部１５０６で決定されたゲイン１５０７の変化を示す。「ＡＴＴ＿ＣＮＴ」は、アタック音判定部１５１０により図１６のフローに従い算出されたＡＴＴ＿ＣＮＴの変化を示している。前述したように、アタック音検出時のリカバリ動作を「ファーストリカバリ動作」という。ＡＴＴ＿ＣＮＴ＞０の時にアタック音検出とされるので（Ｓ１７０８）、図１８（ａ）において、Ｔ３ａ〜Ｔ４ａの期間にファーストリカバリ動作が行われ、Ｔ４ａ〜Ｔ５ａの期間に通常のリカバリ動作が行われる。（ｂ）においては、Ｔ３ｂ〜Ｔ４ｂの期間中はＡＴＴ＿ＣＮＴ＝０であるため、通常のリカバリ動作が行われ、ファーストリカバリ動作は行われない。
【００２９】
図１９は、複数のアタック音が連続的に入力された場合のＡＬＣ動作を示す図である。図１９に示したファーストリカバリ期間ではファーストリカバリ動作が実行されるため、入力が小さくなった場合のゲイン変化の時定数が小さく復帰が早い。このため次のアタック音が来るまでにリカバリ動作が終了しているので、アタック音が連続した場合、複数のアタック音の応答は図示の如く、同じになる。
【００３０】
しかし、アタック音が短い周期で連続して入力された場合、１つアタック音でのリカバリ動作において通常よりレベルの増幅率を上げると、それ以降のアタック音の立ち上がり部で音声がクリップして歪んでしまうという問題がある。
【００３１】
そこで以下では、このような問題を解決するための実施形態を説明する。
【００３２】
＜第１実施形態＞
図１は、本実施形態に係る音声処理装置のＡＬＣ部の構成を示す図である。図１において、音声入力部１０１は、マイクロホンまたは音声再生装置等からの音声信号を入力する。音声入力部１０１には、ＤＣ成分を除去された音声信号が入力される。従って０を中心に正負の値の音声信号が入力される。本実施形態におけるＡＬＣ部は、図示の如く、第１のＡＬＣ機能部１１と、その後段に設けられた第２のＡＬＣ機能部１２とを含む。音声出力部１０５からは、振幅レベルがＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸ（ただしＴＨ＿ＭＩＮ＜ＴＨ＿ＭＡＸ）の間になるように調整された音声信号が出力される。
【００３３】
第１のレベル制御手段としての第１のＡＬＣ機能部１１は、第１振幅調整部１０２、第１振幅ゲイン決定部１０８、第１振幅レベル判定部１１０を有する。第２のレベル制御手段としての第２のＡＬＣ機能部１２は、第２振幅調整部１０４、第２振幅ゲイン決定部１１２、第２振幅レベル判定部１１４を有する。本実施形態におけるＡＬＣ部は更に、ゼロクロス検出部１０６も備える。なお、ゼロクロス検出部１０６を設けることは音質向上のために有利であるが、必須ではない。
【００３４】
まず、第１のＡＬＣ機能部１１について説明する。第１振幅調整部１０２は、音声入力部１０１からの音声信号を第１振幅ゲイン決定部１０８で決定されたゲイン１１１に応じて増幅又は減衰させる。第１振幅レベル判定部１１０は、第１振幅調整部１０２の出力信号１０３の振幅レベルを判定する。第１振幅ゲイン決定部１０８は、第１振幅レベル判定部１１０で判定された振幅レベル１０９とゼロクロス検出部１０６からのゼロクロス検出結果１０７に応じて、第１振幅調整部１０２に提供するゲイン１１１を決定する。
【００３５】
第１振幅ゲイン決定部１０８がゲイン１１１を変更する場合、音声入力部１０１からの音声信号の振幅レベルの絶対値が大きいタイミングで変更すると、音声波形に段差ができてしまい、音質が劣化する。そこで本実施形態では、ゼロクロス検出部１０６で、音声入力部１０１からの音声信号の振幅レベルが０レベルと交差する点（以下「ゼロクロス」という。）を検出し、第１振幅ゲイン決定部１０８はそのタイミングでゲイン１１１を変更する。これにより音質の劣化を少なくすることができる。これは、ゼロクロスのタイミングでは音声信号の振幅レベルの絶対値が小さくなる傾向があることを利用している。ゼロクロス検出結果１０７は、第１振幅ゲイン決定部１０８に提供される。第１振幅ゲイン決定部１０８はそのゼロクロス検出結果１０７に基づいてゲイン１１１を変更する。また、第１振幅ゲイン決定部１０８は、第１振幅レベル判定部１１０から受信した振幅レベル１０９がＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸ（ただしＴＨ＿ＭＩＮ＜ＴＨ＿ＭＡＸ）の間になるようにゲイン１１１を制御する。
【００３６】
次に、第２のＡＬＣ機能部１２について説明する。第２振幅調整部１０４は、第１振幅調整部１０２の出力信号１０３を第２振幅ゲイン決定部１１２で決定されたゲイン１１５に応じて増幅又は減衰させる。第２振幅レベル判定部１１４は、第２振幅調整部１０４の出力信号の振幅レベルを判定する。第２振幅ゲイン決定部１１２は、第２振幅レベル判定部１１４で判定された振幅レベル１１３とゼロクロス検出結果１０７とに基づいて、第２振幅調整部１０４に提供するゲイン１１５を決定する。
【００３７】
第１のＡＬＣ機能部１１と同様に、第２振幅ゲイン決定部１１２は例えば、ゼロクロス検出部１０６で検出されたゼロクロスのタイミングでゲイン１１５を変更する。第１振幅調整部１０２の出力信号１０３は、音声入力部１０１に入力された音声信号の振幅が調整されただけであり、出力信号１０３のゼロクロスのタイミングと音声入力部１０１に入力された音声信号のゼロクロスのタイミングは同一である。そこで、第１のＡＬＣ機能部１１で使用したゼロクロス検出結果１０７を活用している。すなわち、ゼロクロス検出結果１０７は、第２振幅ゲイン決定部１１２にも伝達される。第２振幅ゲイン決定部１１２はそのゼロクロス検出結果１０７に基づいてゲイン１１５を変更する。また、第２振幅ゲイン決定部１１２は、第２振幅レベル判定部１１４から受信した振幅レベル１１３がＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸ（ただしＴＨ＿ＭＩＮ＜ＴＨ＿ＭＡＸ）の間になるようにゲイン１１５を制御する。
【００３８】
以下、各部の動作をフローチャート用いて説明する。本実施形態におけるＡＬＣ部の処理は、デジタル信号処理、アナログ信号処理どちらでも実現可能であるが、ここでは、アナログ音声信号をサンプリング周波数Ｆｓでデジタル信号に変換した場合について説明する。従って、音声入力部１０１に入力されるのはデジタル化された音声信号であり、音声出力部１０５からはデジタル音声信号が出力される。
【００３９】
図２は、図１のＡＬＣ部の動作を示すフローチャートである。まず、現在時刻がサンプリングタイミングであるか否かを判定し（Ｓ２０１）、サンプリングタイミングである場合には、音声入力部１０１からの音声信号の入力、及び音声出力部１０５への音声信号の出力を行う（Ｓ２０２）。次に、第１振幅レベル判定部１１０及び第２振幅レベル判定部１１４で振幅レベルの判定を行い（Ｓ２０３）、ゼロクロス検出部１０６でゼロクロス検出を行う（Ｓ２０４）。次に、第１振幅ゲイン決定部１０８及び第２振幅ゲイン決定部１１２で振幅ゲインを決定する（Ｓ２０５）。その後、第１振幅調整部１０２で、決定されたゲイン１１１を用いて振幅調整を行うとともに、第２振幅調整部１０４で、決定されたゲイン１１５を用いて振幅調整を行い（Ｓ２０６）、次のサンプルタイミングが来るまで待機する。
【００４０】
ゼロクロス検出部１０６の動作は、ゼロクロス検出部１５０４の動作と同様であり、図３のフローチャートに従い動作する。また、第１及び第２振幅レベル判定部１１０、１１４の動作は、振幅レベル判定部１５０９の動作と同様であり、図４のフローチャートに従い動作する。
【００４１】
図５は、第１及び第２振幅調整部１０２、１０４の動作を示すフローチャートである。ここでは第１振幅調整部１０２の動作を説明する。第２振幅調整部１０４の動作も同様である。まず、入力した音声信号のサンプル値を変数ＤＩＮとし、ゲイン１１１を変数ＧＡＩＮに入力する（Ｓ５０１）。次に、ＤＩＮ＊ＧＡＩＮを演算し、その結果を出力する（Ｓ５０２）。ＧＡＩＮがＬＯＧスケールのデシベルである場合は、比率（１０＾（ＧＡＩＮ／２０））に変換する。変換方法はテーブルとシフト演算の組み合わせなど様々な方法があるがどのような方法でもよい。
【００４２】
図６は、第１振幅ゲイン決定部１０８の動作を示すフローチャートである。第１振幅ゲイン決定部１０８では振幅レベル１０９がＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸ（ただしＴＨ＿ＭＩＮ＜ＴＨ＿ＭＡＸ）の間になるように制御を行う。上述のように、振幅レベル１０９がＴＨ＿ＭＩＮより小さい場合にゲイン１１１を増加させる動作の場合をリカバリ動作、振幅レベル１０９がＴＨ＿ＭＡＸより大きい場合にゲイン１１１を低下させる動作の場合をリミット動作と呼ぶ。図６のフローチャートの中において、変数ＧＡＩＮは出力されるゲイン１１１を表す。また、Ｓ＿ＣＮＴはサンプル周波数タイミングのカウンタを表す変数である。Ｍ＿ＬＩＭＩＴモードまたはＭ＿ＲＥＣＯＶモードの開始時はゼロであり、サンプル周波数タイミング毎にカウントアップする。
【００４３】
第１振幅ゲイン決定部１０８はまず、ゼロクロス検出結果１０７及び振幅レベル１０９をそれぞれ、変数Ｚ＿ＤＥＴ、ＤＬＥＶＥＬに入力する（Ｓ６０１）。その後、モード（ＭＯＤＥ）の判定を行いその判定に応じた処理を行う。ＭＯＤＥは、Ｍ＿ＩＤＬＥ、Ｍ＿ＬＩＭＩＴ、Ｍ＿ＲＥＣＯＶの３つのモードをもつ。リカバリ動作の時はＭＯＤＥ＝Ｍ＿ＲＥＣＯＶ、リミット動作の時はＭＯＤＥ＝Ｍ＿ＬＩＭＩＴとなる。また、振幅レベルがＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸの範囲内の場合はＭＯＤＥ＝Ｍ＿ＩＤＬＥとして、ゲインを保つ。Ｍ＿ＬＩＭＩＴ、Ｍ＿ＲＥＣＯＶは、１サンプル〜複数サンプル期間をかけて処理を行う。
【００４４】
ＭＯＤＥ＝Ｍ＿ＩＤＬＥの場合において、現在の音声の振幅レベルＤＬＥＶＥＬ＞ＴＨ＿ＭＡＸの場合は（Ｓ６０３ＹＥＳ）、ＭＯＤＥ＝Ｍ＿ＬＩＭＩＴに変更し（Ｓ６０４）、再度、Ｓ６０２に戻る。一方、ＤＬＥＶＥＬ＜ＴＨ＿ＭＩＮの場合は（Ｓ６０５ＹＥＳ）、ＭＯＤＥ＝Ｍ＿ＲＥＣＯＶに変更し、再度、Ｓ６０２に戻る。ＤＬＥＶＥＬがＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸの範囲にある場合は（Ｓ６０３ＮＯかつＳ６０５ＮＯ）、ＧＡＩＮの値をそのままゲイン１１１として出力して（Ｓ６０７）、処理を終了する。
【００４５】
ＭＯＤＥ＝Ｍ＿ＲＥＣＯＶの場合はリカバリ動作を行うが、ＤＬＥＶＥＬがＴＨ＿ＭＡＸを超えた場合は（Ｓ６０８ＹＥＳ）、ＭＯＤＥをＭ＿ＬＩＭＩＴに変更してリミット動作を行う（Ｓ６０９）。これは、リカバリ動作が終了するまでリミット動作をいっさい行わないとすると音声信号が大きくなりすぎて歪む可能性があるからである。また、ＭＯＤＥをＭ＿ＲＥＣＯＶからＭ＿ＬＩＭＩＴに変更した場合はＳ＿ＣＮＴを０にリセットする（Ｓ６０９）。
【００４６】
ＭＯＤＥ＝Ｍ＿ＬＩＭＩＴの場合、Ｃ＿ＭＩＮ、Ｃ＿ＭＡＸ、ＡＤＤ＿ＧＡＩＮをそれぞれ、Ｌ＿Ｃ＿ＭＡＩＮ、Ｌ＿Ｃ＿ＭＡＸ、Ｌ＿ＡＤＤ＿ＧＡＩＮに設定する（Ｓ６１０）。
【００４７】
ＭＯＤＥ＝Ｍ＿ＲＥＣＯＶの場合で、ＤＬＥＶＥＬがＴＨ＿ＭＡＸを超えなければ（Ｓ６０８ＮＯ）、Ｃ＿ＭＩＮ、Ｃ＿ＭＡＸ、ＡＤＤ＿ＧＡＩＮをそれぞれ、Ｒ＿Ｃ＿ＭＡＩＮ、Ｒ＿Ｃ＿ＭＡＸ、Ｒ＿ＡＤＤ＿ＧＡＩＮに設定する（Ｓ６１３）。
【００４８】
Ｃ＿ＭＩＮはゲインを変更する最小のサンプル期間を設定するパラメータであり、通常Ｃ＿ＭＩＮ＜Ｃ＿ＭＡＸの条件で設定するが、ゼロクロス検出結果を使用しない場合、Ｃ＿ＭＩＮはどのような値でもかまわない。
【００４９】
Ｓ＿ＣＮＴ＞Ｃ＿ＭＡＸのときは（Ｓ６１４ＹＥＳ）は、ＧＡＩＮの値を、現在のＧＡＩＮの値にＡＤＤ＿ＧＡＩＮを加算した値に更新する（Ｓ６１５）。Ｓ＿ＣＮＴ＞Ｃ＿ＭＩＮかつＺ＿ＤＥＴ＝１（ゼロクロス検出）のとき（Ｓ６１６ＹＥＳ）も、同様に、ＧＡＩＮの値を、現在のＧＡＩＮの値にＡＤＤ＿ＧＡＩＮを加算した値に更新する（Ｓ６１５）。その後、Ｓ＿ＣＮＴを０にリセットするとともに、ＭＯＤＥをＭ＿ＩＤＬＥにして（Ｓ６１７）、処理を終了する。それ以外のときはＳ＿ＣＮＴを１インクリメントして（Ｓ６１８）、ＭＯＤＥを維持したまま、ＧＡＩＮを出力して（Ｓ６０７）、処理を終了する。
【００５０】
以上の処理において、Ｃ＿ＭＩＮは、ＧＡＩＮ変更の時定数に相当する。Ｃ＿ＭＩＮが大きくなるとＤＬＥＶＥＬがＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸの範囲に収まるまでの時間がかかるようになる。これは、ＧＡＩＮ変更の時定数が大きくなることに相当する。Ｃ＿ＭＡＸは低周波数の音声の場合に、ＧＡＩＮ変更の時定数が大きくなりすぎないようにするリミッタの働きをしている。ＧＡＩＮの変更はＧＡＩＮにＡＤＤ＿ＧＡＩＮを加算することで行われる（Ｓ６１５）。従ってＭ＿ＬＩＭＩＴ（リミット動作）時、ＡＤＤ＿ＧＡＩＮはマイナス値、Ｍ＿ＲＥＣＯＶ（リカバリ動作）時、ＡＤＤ＿ＧＡＩＮはプラス値となる。
【００５１】
以上が、第１振幅ゲイン決定部１０８の動作フローである。第２振幅ゲイン決定部１１２の動作フローも第１振幅ゲイン決定部１０８と同様である。
【００５２】
ただし、Ｒ＿Ｃ＿ＭＩＮ、Ｒ＿Ｃ＿ＭＡＸ、Ｒ＿ＡＤＤ＿ＧＡＩＮ、Ｌ＿Ｃ＿ＭＩＮ、Ｌ＿Ｃ＿ＭＡＸ、Ｌ＿ＡＤＤ＿ＧＡＩＮは、第１のＡＬＣ機能部１１と第２のＡＬＣ機能部１２との間で異なる値に設定する。ここで、第１のＡＬＣ機能部１１側の値を、Ｒ＿Ｃ＿ＭＩＮ１、Ｒ＿Ｃ＿ＭＡＸ１、Ｒ＿ＡＤＤ＿ＧＡＩＮ１、Ｌ＿Ｃ＿ＭＩＮ１、Ｌ＿Ｃ＿ＭＡＸ１、Ｌ＿ＡＤＤ＿ＧＡＩＮ１とする。一方、第２のＡＬＣ機能部１２側の値を、Ｒ＿Ｃ＿ＭＩＮ２、Ｒ＿Ｃ＿ＭＡＸ２、Ｒ＿ＡＤＤ＿ＧＡＩＮ２、Ｌ＿Ｃ＿ＭＩＮ２、Ｌ＿Ｃ＿ＭＡＸ２、Ｌ＿ＡＤＤ＿ＧＡＩＮ２とする。この場合に、例えば以下のような設定とすることで、アタック音が連続した場合でも良好なＡＬＣ動作を実現できる。
【００５３】
ゲインの変化分はできるだけ小さくした方が音質に与える影響が少ないため、本実施形態では、
Ｒ＿ＡＤＤ＿ＧＡＩＮ１  ＝  −Ｌ＿ＡＤＤ＿ＧＡＩＮ１  ＝  Ｒ＿ＡＤＤ＿ＧＡＩＮ２  ＝  −Ｌ＿ＡＤＤ＿ＧＡＩＮ２
とする。なお、Ｒ＿ＡＤＤ＿ＧＡＩＮ１は正の値である。
【００５４】
リミット動作時は、音声信号のレベルが大きくなって歪むので、できるだけ速くゲインを減らした方がよい。一方、リカバリ動作時はレベルの変動が目立たないようにできるだけゲインをゆっくり増加させた方がよいそこで、
Ｒ＿Ｃ＿ＭＩＮ１  ＞  Ｌ＿Ｃ＿ＭＩＮ１、
Ｒ＿Ｃ＿ＭＩＮ２  ＞  Ｌ＿Ｃ＿ＭＩＮ２
とする。
【００５５】
また、第１のＡＬＣ機能部１１のリカバリ動作時のゲイン増加の時定数を、第２のＡＬＣ機能部１２のゲイン増加の時定数より大きくすることで、アタック音が連続した場合に良好な特性を得ることができる。従って以下のような関係を設定する。
【００５６】
Ｒ＿Ｃ＿ＭＩＮ１  ＞  Ｒ＿Ｃ＿ＭＩＮ２
リミット動作時におけるゲイン変化については、設定値によって動作が変わるが、概ね以下の関係にあれば問題はない。（Ｌ＿Ｃ＿ＭＩＮ１  ＜  Ｌ＿Ｃ＿ＭＩＮ２でもかまわない。）
Ｌ＿Ｃ＿ＭＩＮ１  ≧  Ｌ＿Ｃ＿ＭＩＮ２
ゼロクロス検出を行わない場合は、
Ｒ＿Ｃ＿ＭＩＮ１＝Ｒ＿Ｃ＿ＭＡＸ１、
Ｌ＿Ｃ＿ＭＩＮ１＝Ｌ＿Ｃ＿ＭＡＸ１、
Ｒ＿Ｃ＿ＭＩＮ２＝Ｒ＿Ｃ＿ＭＡＸ２、
Ｌ＿Ｃ＿ＭＩＮ２＝Ｌ＿Ｃ＿ＭＡＸ２
とする。これにより、Ｚ＿ＤＥＴに関係なく動作する。
【００５７】
本実施形態において、
Ｌ＿Ｃ＿ＭＩＮ１  ＞  Ｌ＿Ｃ＿ＭＩＮ２
とした場合に、複数のアタック音が連続的に入力された場合の動作を図７に示す。図７において、「入力音エンベロープ」は、音声入力部１０１に入力された音声信号のエンベロープ波形であり、複数のアタック音が連続して入力されている。「出力音エンベロープ」は、音声出力部１０５に出力される音声信号のエンベロープ波形であり、本実施形態のＡＬＣ実行後の音声信号のエンベロープ波形である。「ゲイン１」は、第１振幅ゲイン決定部１０８で決定されたゲイン１１１の変化を示し、「ゲイン２」は、第２振幅ゲイン決定部１１２で決定されたゲイン１１５の変化を示している。「合計ゲイン」は、ゲイン１とゲイン２との合計値であり、ＡＬＣ部全体のゲインに相当する。
【００５８】
Ｒ＿Ｃ＿ＭＩＮ１＞Ｒ＿Ｃ＿ＭＩＮ２であるため、アタック音が連続した場合にゲイン１が減少していき、応答の速い第２のＡＬＣ機能部１２側のゲイン２の値は、入力音エンベロープの振幅が急に大きくなる部分で変更される割合が減っていく。このため、アタック音が連続した場合に、アタック音の突入部分での出力音声の歪みを抑制することができる。なお、アタック音が１回だけであった場合は、第２のＡＬＣ機能部１２側の速い時定数によってリカバリが行われるので、従来と同等の特性を得ることができる。
【００５９】
＜第２実施形態＞
図８は、第２実施形態に係る音声処理装置のＡＬＣ部の構成を示す図である。図８において、音声入力部８０１は、マイクロホンまたは音声再生装置等からの音声信号を入力する。音声入力部８０１には、ＤＣ成分を除去された音声信号が入力される。従って０を中心に正負の値の音声信号が入力される。音声出力部８０３からは、振幅レベルがＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸ（ただしＴＨ＿ＭＩＮ＜ＴＨ＿ＭＡＸ）の間になるように調整された音声信号が出力される。
【００６０】
本実施形態は、第１実施形態と等価な動作を提供するものである。本実施形態におけるＡＬＣ部は、振幅レベル判定部８０４、振幅調整部８０２、ゼロクロス検出部８１０、第１及び第２振幅ゲイン決定部８１２，８１４を含む。本実施形態におけるＡＬＣ部は更に、第１の予測手段としての第１振幅レベル予測部８０６、第２の予測手段としての第２振幅レベル予測部８０８、振幅ゲイン演算部８１６を含む。
【００６１】
図９は、図８のＡＬＣ部の動作を示すフローチャートである。まず、現在時刻がサンプリングタイミングであるか否かを判定し（Ｓ９０１）、サンプリングタイミングである場合には、音声入力部８０１からの音声信号の入力、及び音声出力部８０３への音声信号の出力を行う（Ｓ９０２）。次に、振幅レベル判定部８０４で振幅レベルの判定を行い（Ｓ９０３）、ゼロクロス検出部８１０でゼロクロス検出を行う（Ｓ９０４）。次に、第１振幅レベル予測部８０６で振幅レベル予測を行った後、更に第２振幅レベル予測部８０８で振幅レベル予測を行う（Ｓ９０５）。次に、第１のゲイン制御手段としての第１振幅ゲイン決定部８１２及び第２のゲイン制御手段としての第２振幅ゲイン決定部８１４で振幅ゲインを決定する（Ｓ９０６）。その後、振幅ゲイン演算部８１６で、第１振幅ゲイン決定部８１２で決定された第１ゲイン８１３と、第２振幅ゲイン決定部８１４で決定された第２ゲイン８１５とを加算する（Ｓ９０７）。そして、振幅調整部８０２で、加算結果である合計ゲイン８１７を用いて振幅調整を行い（Ｓ９０８）、次のサンプルタイミングが来るまで待機する。
【００６２】
ゼロクロス検出部８１０の動作は、ゼロクロス検出部１５０４の動作と同様であり、図３のフローチャートに従い動作する。また、振幅レベル判定部８０４の動作は、振幅レベル判定部１５０９の動作と同様であり、図４のフローチャートに従い動作する。振幅調整部８０２の動作は、第１実施形態における第１及び第２振幅調整部１０２、１０４の動作と同様であり、図５のフローチャートに従い動作する。第１及び第２振幅ゲイン決定部８１２，８１４の動作は、第１及び第２振幅ゲイン決定部１０８，１１２の動作と同様であり、図６のフローチャートに従い動作する。
【００６３】
Ｒ＿Ｃ＿ＭＩＮ、Ｒ＿Ｃ＿ＭＡＸ、Ｒ＿ＡＤＤ＿ＧＡＩＮ、Ｌ＿Ｃ＿ＭＩＮ、Ｌ＿Ｃ＿ＭＡＸ、Ｌ＿ＡＤＤ＿ＧＡＩＮは、第１振幅ゲイン決定部８１２と第２振幅ゲイン決定部８１４との間で異なる値に設定する。ここで、第１振幅ゲイン決定部８１２側の値を、Ｒ＿Ｃ＿ＭＩＮ１、Ｒ＿Ｃ＿ＭＡＸ１、Ｒ＿ＡＤＤ＿ＧＡＩＮ１、Ｌ＿Ｃ＿ＭＩＮ１、Ｌ＿Ｃ＿ＭＡＸ１、Ｌ＿ＡＤＤ＿ＧＡＩＮ１とする。一方、第２振幅ゲイン決定部８１４側の値を、Ｒ＿Ｃ＿ＭＩＮ２、Ｒ＿Ｃ＿ＭＡＸ２、Ｒ＿ＡＤＤ＿ＧＡＩＮ２、Ｌ＿Ｃ＿ＭＩＮ２、Ｌ＿Ｃ＿ＭＡＸ２、Ｌ＿ＡＤＤ＿ＧＡＩＮ２とする。これらの値を第１実施形態と同様にすることで、第１実施形態と同様にアタック音が連続した場合でも良好なＡＬＣ動作を実現できる。
【００６４】
＜第３実施形態＞
上述の第２実施形態において、合計ゲイン８１７は、図７の期間１〜４では一定であることが望ましい。しかし、ゲイン１とゲイン２は独立に動作しているため、合計ゲインがゲイン可変幅の最小単位で変動する可能性がある。本実施形態は、その対策を施すものである。
【００６５】
図１０は、第３実施形態における音声処理装置のＡＬＣ部の構成を示す図である。図１０の構成は、図８の構成に対して、第１振幅ゲイン決定部８１２で決定されたゲインを調整する振幅ゲイン調整部８５０が付加された構成となっている。図８の構成要素と同一の構成要素については共通の参照符号を付し、それらの説明は省略する。ただし、第２振幅ゲイン決定部８１４は、振幅ゲイン調整部８５０で調整されたゲインに基づいてゲインを決定する構成となっている。
【００６６】
図１１は、図１０のＡＬＣ部の動作を示すフローチャートである。図９のフローチャートにおけるステップと同一のステップについては共通の参照符号を付し、それらの説明は省略する。図１１において、図１０との違いは、Ｓ９０６の代わりにＳ１１０１が実行される点である。Ｓ１１０１では、まず、第１振幅ゲイン決定部８１２が振幅ゲインを決定する。次に、振幅ゲイン調整部８５０が、後述する図１２のフローに従う動作により、その決定された振幅ゲインを調整する。その後、第２振幅ゲイン決定部８１４でその調整結果を用いて振幅ゲインを決定する。
【００６７】
図１２は、振幅ゲイン調整部８５０の動作を示すフローチャートである。まず、第１振幅レベル予測部８０６で予測された振幅レベルを変数ＤＩＮに入力し、第１振幅ゲイン決定部８１２で決定されたゲイン８１３を変数ＧＡＩＮに入力する（Ｓ１２０１）。ＤＩＮの値が、ＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸ（ただしＴＨ＿ＭＩＮ＜ＴＨ＿ＭＡＸ）の間の場合（Ｓ１２０２，Ｓ１２０３ともにＮＯの場合）、変数ＡＤＪ＿ＧＡＩＮにＧＡＩＮ＿Ｄ−ＧＡＩＮを代入する（Ｓ１２０４）。そうでなければ、変数ＡＤＪ＿ＧＡＩＮに０を代入する（Ｓ１２０５）。ＧＡＩＮ＿Ｄは前回のサンプルタイミングで入力されたゲイン８１３である。次のサンプリングタイミングの処理のためにＧＡＩＮ＿ＤにＧＡＩＮを代入する（Ｓ１２０６）。そして、ＡＤＪ＿ＧＡＩＮを第２振幅ゲイン決定部８１４に出力する（Ｓ１２０７）。
【００６８】
図１３は、第２振幅ゲイン決定部８１４の動作を示すフローチャートである。図６のフローチャートにおけるステップと同一のステップについては共通の参照符号を付し、それらの説明は省略する。図１３において、図６との違いは、Ｓ６０１の代わりにＳ１３０１が実行される点、及び、Ｓ６０７の代わりにＳ１３０２が実行される点である。Ｓ１３０１では、ゼロクロス検出部８１０でのゼロクロス検出結果を変数Ｚ＿ＤＥＴに入力し、振幅レベル判定部８０４で判定された振幅レベルを変数ＤＬＥＶＥＬに入力する。更に、振幅ゲイン調整部８５０で調整された振幅ゲイン（調整ゲイン）を変数ＡＤＶ＿ＧＡＩＮに入力する。また、Ｓ１３０２では、現在のＧＡＩＮにＡＤＪ＿ＧＡＩＮを加算した値を新たなＧＡＩＮに更新し、その更新後のＧＡＩＮを出力する。
【００６９】
第３実施形態によれば、第２振幅レベル予測部８０８で予測された振幅レベルがＴＨ＿ＭＩＮ〜ＴＨ＿ＭＡＸの範囲にある場合、第１振幅ゲイン決定部８１２で決定されたゲインが変化すると、その変化分が振幅ゲイン調整部８５０で調整される。この調整により、ゲイン１＋ゲイン２が変化しない。これにより図７の期間１〜４でゲイン可変幅の最小単位での変動を抑制することができる。
【００７０】
＜他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
2014126854.tif 000003
【図２】
2014126854.tif 000004
【図３】
2014126854.tif 000005
【図４】
2014126854.tif 000006
【図５】
2014126854.tif 000007
【図６】
2014126854.tif 000008
【図７】
2014126854.tif 000009
【図８】
2014126854.tif 000010
【図９】
2014126854.tif 000011
【図１０】
2014126854.tif 000012
【図１１】
2014126854.tif 000013
【図１２】
2014126854.tif 000014
【図１３】
2014126854.tif 000015
【図１４】
2014126854.tif 000016
【図１５】
2014126854.tif 000017
【図１６】
2014126854.tif 000018
【図１７】
2014126854.tif 000019
【図１８】
2014126854.tif 000020
【図１９】
2014126854.tif 000021