(57)【要約】【課題】音声信号の符号化による音質の劣化を少なくする。【解決手段】情報処理装置は、単位時間の音声信号を所定数の時間区間に分割する分割部と、各時間区間における音声信号のパワーの変化率が、第１の閾値より大きい時間区間をアタック候補として決定する決定部と、少なくとも前記アタック候補の時間区間またはアタック候補の時間区間の直前の時間区間からアタックの開始点を探索する探索部と、探索部によって探索されたアタックの開始点を含む時間区間における音声信号のパワーを、アタックの開始点を含む時間区間の直後の時間区間における音声信号のパワーを用いて補正する補正部と、補正部によって音声信号のパワーが補正されたアタックの開始点を含む時間区間における音声信号のパワーの変化率が第１の閾値より大きいアタック検出用の第２の閾値を超えるか否かを判定する判定部と、を含む。【選択図】図１０
2011008135.tif 000002
【特許請求の範囲】
【請求項１】
単位時間の音声信号を所定数の時間区間に分割する分割部と、
各時間区間における音声信号のパワーの変化率が、第１の閾値より大きい時間区間をアタック候補として決定する決定部と、
少なくとも前記アタック候補の時間区間または前記アタック候補の時間区間の直前の時間区間からアタックの開始点を探索する探索部と、
前記探索部によって探索されたアタックの開始点を含む時間区間における音声信号のパワーを、前記アタックの開始点を含む時間区間の直後の時間区間における音声信号のパワーを用いて補正する補正部と、
前記補正部によって音声信号のパワーが補正された前記アタックの開始点を含む時間区間における音声信号のパワーの変化率が前記第１の閾値より大きいアタック検出用の第２の閾値を超えるか否かを判定する判定部と、
を含む情報処理装置。
【請求項２】
前記補正部は、前記アタックの開始点を含む時間区間における音声信号のパワーに、前記アタックの開始点を含む時間区間の直後の時間区間における音声信号のパワーを加算して補正する
請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、
前記単位時間に含まれる音声信号にアタックが含まれる場合には、前記単位時間が所定数に分割されたブロックを、音声符号化の単位となる複数のグループにグループ化するグループ化部をさらに備え、
前記グループ化部は、前記補正されたアタックの開始点を含む時間区間の音声信号のパワーの変化率が前記第２の閾値を超える場合に、前記アタックの開始点を含む時間区間を基準として、前記単位時間を少なくとも二つのグループにグループ化する
請求項１又は２に記載の情報処理装置。
【請求項４】
前記判定部は、前記単位時間に含まれる各時間区間における音声信号のパワーの変化率が前記第２の閾値を超えるか否かを判定し、
前記グループ化部は、２以上の前記時間区間が前記ブロックに含まれる場合に、前記単位時間に含まれるブロックの中で、前記パワーの変化率が前記第２の閾値よりも大きい時間区間の数が最大となるブロックを基準として、前記単位時間を二つのグループにグループ化する
請求項３に記載の情報処理装置。
【請求項５】
コンピュータに、
単位時間の音声信号を所定数の時間区間に分割するステップと、
各時間区間における音声信号のパワーの変化率が、第１の閾値より大きい時間区間をアタック候補として決定するステップと、
少なくとも前記アタック候補の時間区間または前記アタック候補の時間区間の直前の時間区間からアタックの開始点を探索するステップと、
前記探索部によって探索されたアタックの開始点を含む時間区間における音声信号のパワーを、前記アタックの開始点を含む時間区間の直後の時間区間における音声信号のパワーを用いて補正するステップと、
前記補正部によって音声信号のパワーが補正された前記アタックの開始点を含む時間区間における音声信号のパワーの変化率が前記第１の閾値より大きいアタック検出用の第２の閾値を超えるか否かを判定するステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声信号中のアタックを検出する情報処理装置に関する。
【背景技術】
【０００２】
ディジタル信号に変換された音声信号の情報量を削減するために、音声信号の符号化処理が施される。音声符号化方式として、例えば、ＭＰＥＧ−２  ＡＡＣ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ−２／４  Ａｄｖａｎｃｅｄ  Ａｕｄｉｏ
Ｃｏｄｉｎｇ），ＭＰＥＧ−４  ＡＡＣ，ＭＰＥＧ−２  ＨＥ−ＡＡＣ（Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ−ＡＡＣ），ＭＰＥＧ−４  ＨＥ−ＡＡＣ，ＭＰＥＧ２  ＨＥ−ＡＡＣ−ｖｅｒｓｉｏｎ２，ＭＰＥＧ  Ｓｏｒｒｏｕｎｄ，ＭＰＥＧ−４  ＢＳＡＣ（Ｂｉｔ
Ｓｌｉｃｅｄ  Ａｒｉｔｈｍｅｔｉｃ  Ｃｏｄｉｎｇ）等がある。
【０００３】
ＭＰＥＧ−２  ＡＡＣのような音声符号化方式では、時間領域の音声信号が周波数領域の音声信号に変換され、周波数領域の音声信号が量子化され、さらに、量子化された音声信号が符号化されてビットストリームが生成される。周波数領域の音声信号の量子化による誤差（量子化誤差）が、音声信号が復号され再生された際のノイズとなり、音質劣化の原因となる。
【０００４】
特に、大きな音の発生のような、音声信号に急激な変化がある場合には、急激な変化が起こっている部分の量子化誤差が、量子化の際のブロック全体に渡って影響を与え、ノイズが生じる。
【０００５】
人間には、大きな音が発生した場合には、その直前と直後の時間は音が聞こえづらくなるという聴覚特性がある。この聴覚特性は「マスキング効果」と呼ばれる。大きな音の後に音が聞こえなくなる時間は、個人差はあるものの、約１００ミリ秒である。一方、大きな音の前に働くマスキング効果の時間は、約５〜６ミリ秒と短い時間である。したがって、大きな音の前のノイズはマスキング効果の時間が短いため検知されやすくなってしまう。大きな音の前にノイズが発生する現象はプリエコーと呼ばれる。
【０００６】
ＭＰＥＧ−２  ＡＡＣでは、通常、変換ブロック長として１０２４サンプルで符号化および復号化する。例えば、サンプリング周波数が４８ｋＨｚの場合の変換ブロックの時間長は、１÷４８０００×１０２４＝約２１ミリ秒であり、大きな音の後のマスキング効果の時間約１００ミリ秒よりも小さい。音声信号の急激な変化による量子化誤差の影響は、変換ブロック内に閉じ込められるため、変換ブロック長として１０２４サンプルで符号化が行われる場合には、大きな音の後の量子化誤差によるノイズはマスキング効果により人間には検知されないため、許容される。
【０００７】
しかしながら、大きな音の前に働くマスキング効果の時間は約５〜６ミリ秒と短いため、変換ブロック長として１０２４サンプルで符号化が行われる場合には、大きな音の前の量子化誤差によるノイズの時間が、マスキング効果の時間をはみ出してしまう場合がある。大きな音の前の量子化誤差によるノイズの時間がマスキング効果の時間をはみ出してしまう場合には、人間はプリエコーを検知してしまう。
【０００８】
音声符号化方式では、入力信号の急激な変化を検出して変換ブロック長を短くすることによって、プリエコーの発生を抑制している。
【０００９】
例えば、ＭＰＥＧ−２  ＡＡＣでは、フレーム中に大きな音による音声信号の急激な変
化が含まれない場合には、変換ブロック長として１０２４サンプルで符号化が行われる。変換ブロック長が１０２４サンプルのブロックはＬＯＮＧブロックと呼ばれる。また、フレーム中に大きな音による音声信号の急激な変化が含まれる場合には、変換ブロック長を短い１２８サンプルにして、符号化が行われる。変換ブロック長が１２８サンプルのブロックはＳＨＯＲＴブロックと呼ばれる。
【００１０】
ＳＨＯＲＴブロックを用いて音声信号を符号化した場合には、音声信号の急激な変化による量子化誤差の影響は、ＳＨＯＲＴブロックの中に閉じ込められる。ＳＨＯＲＴブロックの時間長は、サンプリング周波数が４８ＫＨｚの場合には、１÷４８０００×１２８＝約２．７ミリ秒である。ＳＨＯＲＴブロックの時間長は、音声信号の急激な変化の前に働くマスキング効果の時間約５〜６ミリ秒より短い。したがって、フレーム中に音声信号の急激な変化が含まれる場合にはＳＨＯＲＴブロックを用いて符号化を行うことによって、量子化誤差の影響をマスキング効果の時間内に抑えることができ、人間はほぼノイズを検知できなくなり、結果としてプリエコーが消える。
【００１１】
このように、音声信号の急激な変化がある場合にＳＨＯＲＴブロックを用いて量子化を行うことは、ＭＰＥＧ−２  ＡＡＣに加え、ＭＰＥＧ−４  ＡＡＣ，ＭＰＥＧ−２  ＨＥ−ＡＡＣ，ＭＰＥＧ−４  ＨＥ−ＡＡＣ，ＭＰＥＧ２  ＨＥ−ＡＡＣ−ｖｅｒｓｉｏｎ２，ＭＰＥＧ  Ｓｏｒｒｏｕｎｄ，ＭＰＥＧ−４  ＢＳＡＣにも採用されている。
【００１２】
また、上述のブロック長の切り替えを行う音声符号化方式では、フレーム中の連続する複数のＳＨＯＲＴブロックを１つのグループとしてまとめて、符号化の単位とすることができる。複数のＳＨＯＲＴブロックがグループ化されると音声信号の補助情報が共通化され、ＳＨＯＲＴブロックに含まれる音声信号がＳＨＯＲＴブロックごとに個別に符号化される場合に比べて、１フレーム中の補助情報の情報量が削減される。
【００１３】
音声フレーム中において、音声信号の急激な変化がある場合には、急激な変化を基準として、ＳＨＯＲＴブロックがグループ化される。音声信号の急激な変化は、以降、アタックと呼ばれる。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開２００６−１２６３７２号公報
【特許文献２】特開２０００−２５９１９７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
したがって、ＭＰＥＧ−２  ＡＡＣの様に、音声信号の急激な変化の有無によってブロック長の切り替えを行う音声符号化方式では、音声信号の急激な変化の検出精度が高いことが望ましい。
【００１６】
本発明の態様の一つは、音声信号中のアタックを精度良く検出可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明の態様の一つは、情報処理装置である。この情報処理装置は、
単位時間の音声信号を所定数の時間区間に分割する分割部と、
各時間区間における音声信号のパワーの変化率が、第１の閾値より大きい時間区間をアタック候補として決定する決定部と、
少なくとも前記アタック候補の時間区間または前記アタック候補の時間区間の直前の時
間区間からアタックの開始点を探索する探索部と、
前記探索部によって探索されたアタックの開始点を含む時間区間における音声信号のパワーを、前記アタックの開始点を含む時間区間の直後の時間区間における音声信号のパワーを用いて補正する補正部と、
前記補正部によって音声信号のパワーが補正された前記アタックの開始点を含む時間区間における音声信号のパワーの変化率が前記第１の閾値より大きいアタック検出用の第２の閾値を超えるか否かを判定する判定部と、を含む。
【００１８】
本発明の他の態様の一つは、上述したアタック検出方法である。また、本発明の他の態様は、情報処理装置にアタック検出方法を実行させるプログラム、及び当該プログラムを記録したコンピュータ読み取り可能な記録媒体を含むことができる。
【発明の効果】
【００１９】
開示の情報処理装置によれば、音声信号中のアタックを精度よく検出することができる。
【図面の簡単な説明】
【００２０】
【図１】ＳＨＯＲＴブロックのグループ化の例について説明する図である。
【図２】アタックが複数のＳＨＯＲＴブロックにまたがって存在する場合のグループ化の例を示す図である。
【図３】音声符号化装置の構成例を示す図である。
【図４】アタック検出部の構成例を示す図である。
【図５】補正部の構成例を示す図である。
【図６】アタック候補決定部が実行するアタック候補検出処理の例を説明する図である。
【図７】アタック候補決定部が実行するアタック候補検出処理の例のフローを示す図である。
【図８】アタック検査部が実行するアタック特定処理の例を説明する図である。
【図９】アタック検査部が実行するアタック特定処理のフローを示す図である。
【図１０】ブロックパワー補正部が実行するパワー補正処理の例を説明する図である。
【図１１】ブロックパワー補正部が実行するパワー補正処理の例のフローを示す図である。
【図１２】グルーピング判定部が実行するグルーピング判定処理の例を説明する図である。
【図１３】グルーピング判定部が実行するグルーピング判定処理の例のフロー図である。
【図１４】グルーピング判定部が実行するグルーピング判定処理の結果の例を示す図である。
【図１５】音声符号化装置による音声符号化の実行結果の例を示す図である。
【図１６】音声符号化装置のハードウェア構成の例を示す図である。
【図１７Ａ】アタック候補決定部が実行するアタック候補検出処理のフローを示す図である。
【図１７Ｂ】アタック候補決定部が実行するアタック候補検出処理のフローを示す図である。
【図１８】アタック検査部が実行するアタック特定処理のフローを示す図である。
【図１９】ブロックパワー補正部が実行するパワー補正処理を示す図である。
【図２０】ブロックパワー補正部が実行するパワー補正処理のフローである。
【図２１】アタック検査部が実行するアタック特定処理のフローを示す図である。
【図２２】グルーピング判定部が実行するグルーピング判定処理のフローを示す図である。
【図２３】グルーピング判定部のグルーピング判定処理の結果の例を示す図である。
【図２４】グルーピング判定部が実行するグルーピング判定処理の例を示す図である。
【図２５】グルーピング判定部が実行するグルーピング判定処理のフローの例を示す図である。
【図２６】グルーピング判定部が実行するグルーピング判定処理を説明する図である。
【図２７】グルーピング判定部が実行するグルーピング判定処理のフローの例を示す図である。
【図２８】情報処理装置の構成を示す図である。
【発明を実施するための形態】
【００２１】
以下、図面に基づいて、本発明の実施の形態を説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００２２】
＜第１実施形態＞
以下の実施形態の説明では、音声信号の符号化方式の例として、ＭＥＰＧ−２  ＡＡＣを用いた場合について説明する。但し、本実施形態で説明する音声符号化方式は、ＡＡＣで適用されるＳＨＯＲＴブロックのような、１フレームを複数のサブブロックに分割し、複数のサブブロックをサイズの異なる複数種類のブロックにグループ化する音声符号化方式についても適用が可能である。
【００２３】
＜＜グルーピング＞＞
図１は、ＳＨＯＲＴブロックのグルーピングの例について説明する図である。図１では、パルス符号変調（ＰＣＭ：Ｐｕｌｓｅ  Ｃｏｄｅ  Ｍｏｄｕｌａｔｉｏｎ）で変換された音声信号の波形が模式的に示されている。図１に示される例では、１フレームに８つのＳＨＯＲＴブロックｗ０からｗ７が含まれる。
【００２４】
図１に示される例では、連続するＳＨＯＲＴブロックｗ０とｗ１とがグループ化されてグループｇ０を形成する。ＳＨＯＲＴブロックｗ２がグループｇ１を形成する。連続するＳＨＯＲＴブロックｗ３とｗ４とがグループ化されてグループｇ２を形成する。連続するＳＨＯＲＴブロックｗ５〜ｗ７がグループ化されてグループｇ３を形成する。形成されたグループｇ０，ｇ１，ｇ２，ｇ３のグループごとに、音声信号の周波数スペクトルが量子化される。
【００２５】
グルーピングは、上述のように、１フレーム中の連続する１つ以上のＳＨＯＲＴブロックを１つのグループとする。ＳＨＯＲＴブロックのグルーピングによって、ＳＨＯＲＴブロックの補助情報が共通化されるので、フレーム全体としての補助情報の情報量が削減される。また、ＳＨＯＲＴブロック毎に符号化を行うことに比べて、グルーピングされたグループごとに符号化する方が符号化処理に要する時間や負荷が少なくて済み、効率もよい。
【００２６】
図１に示される例のＳＨＯＲＴブロックｗ２に含まれる音声信号の振幅は、急激に変化している。このような急激な音声信号の振幅の変化は、突発的に発生する大きな音によるものである。急激な音声信号の変化は「アタック」と呼ばれる。すなわち、ＳＨＯＲＴブロックｗ２には、アタックが含まれる。
【００２７】
音声フレームにアタックが含まれる場合には、まず、アタックを検出し、アタックを含むＳＨＯＲＴブロックとその直前のＳＨＯＲＴブロックとの間でグループ境界が設定され
る。しかし、複数のＳＨＯＲＴブロックにまたがってアタックが存在する場合には、特に、音声信号の変化の開始点がＳＨＯＲＴブロックのブロック境界に近い箇所に存在する場合には、アタックが検出されない可能性がある。
【００２８】
図２は、アタックが複数のＳＨＯＲＴブロックにまたがって存在する場合のグルーピングの例を示す図である。図２に示される例では、説明を容易にするため、１フレームは、４つのＳＨＯＲＴブロックに分割される。また、１フレームは、ＳＨＯＲＴブロックよりも小さい時間長のサブブロックＢ０からＢ７に分割される。サブブロックは、アタック検出の処理の単位である。図２に示される例では、１フレームは、ＳＨＯＲＴブロックｗ０，ｗ１，ｗ２，ｗ３を含み、それぞれのＳＨＯＲＴブロックは、２つのサブブロックを含む。ＳＨＯＲＴブロックｗ０は、サブブロックＢ０とサブブロックＢ１とを含む。ＳＨＯＲＴブロックｗ１は、サブブロックＢ２とサブブロックＢ３とを含む。ＳＨＯＲＴブロックｗ２は、サブブロックＢ４とサブブロックＢ５とを含む。ＳＨＯＲＴブロックｗ３は、サブブロックＢ６とサブブロックＢ７とを含む。
【００２９】
図２に示される例では、入力音声信号のアタックがサブブロックＢ３とＢ４とにまたがって存在する。図２に示される例では、音声信号の急激な変化の開始点、すなわち、アタックの開始点が、サブブロックＢ３のサブブロックＢ４とのブロック境界付近に存在する。図２に示される例の入力音声信号のグループ化は、例えば、以下に示す順番で行われる。
【００３０】
（１）図２に示される例の入力音声信号では、アタックの開始点は、サブブロックＢ３に存在し、アタックはサブブロックＢ３，Ｂ４，Ｂ５にまたがって存在する。すなわち、アタックが、ＳＨＯＲＴブロックｗ１とＳＨＯＲＴブロックｗ２にまたがって存在する。
【００３１】
（２）図２に示される例では、ＳＨＯＲＴブロックのグルーピングを行う場合に、まず、それぞれのサブブロックＢ０〜Ｂ７に含まれる音声信号のパワーが求められる。このとき、図２に示される例では、アタックがサブブロックＢ３〜Ｂ５にまたがって存在するため、アタックのパワーがサブブロックＢ３〜Ｂ５に分散する。
【００３２】
（３）図２に示される例では、サブブロック毎にパワーが求められると、求められたサブブロックのパワーに基づいて、過去のサブブロックからのパワー変化率が求められる。アタック検出用の閾値を超えるパワー変化率を有するサブブロックがある場合には、そのサブブロックにアタックが含まれることが検出される。アタックが検出されないサブブロックのアタック検出結果は“０”となる。アタックが検出されたサブブロックのアタック検出結果は“１”となる。
【００３３】
図２に示される例では、入力音声信号のパワー変化率が求められると、アタックのパワーがサブブロックＢ３，Ｂ４，Ｂ５に分散しているために、サブブロックＢ３，Ｂ４，Ｂ５のパワー変化率は、いずれも、アタック検出用の閾値に達しない。そのため、アタックが検出されず、サブブロックＢ０からＢ７のいずれのアタック検出結果も“０”になる。（４）各ＳＨＯＲＴブロックのグルーピング判定結果が、ＳＨＯＲＴブロックに含まれる各サブブロックのアタック検出結果の論理和として求められる。グルーピング判定結果が“１”のＳＨＯＲＴブロックの開始点がグループの境界となる。しかし、図２に示される例では、すべてのサブブロックのアタック検出結果が“０”となり、すべてのＳＨＯＲＴブロックのグルーピング判定結果も“０”となる。グルーピングの単位にＬＯＮＧブロックが選択される。
【００３４】
図２に示される例のように、アタックを含んだ音声信号の符号化が、時間長の長いＬＯＮＧブロックを用いて実施されると、フレーム中のアタックの前の時間がマスキング効果
の時間より長くなり、プリエコーが発生してしまう。図２に示される例では、アタックが適正に検出されなかったため、プリエコーが発生してしまうおそれがある。
【００３５】
＜＜音声符号化装置の構成例＞＞
第１実施形態において説明される音声符号化装置は、音声信号をＭＰＥＧ−２  ＡＡＣによって符号化する。音声符号化装置は、音声信号の符号化の際に、アタックの検出と、アタックの検出結果に基づくグルーピングとを行い、グループに基づいて符号化を実施する。音声符号化装置は、アタックの検出精度を高め、適切にグルーピングを行うために、アタックの検出の前に、まず、アタックが含まれる可能性のある候補のサブブロックを検出する。音声符号化装置は、検出された候補のサブブロックのパワーを補正し、補正したパワーに基づいて、パワー変化率を求め、アタックの検出を実施し、そのアタック検出結果に基づいてグループの境界を決定する。サブブロックの時間長は、自由に設定可能であるが、第１実施形態では、サブブロックは、ＳＨＯＲＴブロックと同じ時間長であるとする。
【００３６】
図３は、第１実施形態の音声符号化装置の構成例を示す図である。音声符号化装置１は、主記憶装置２と、ＣＰＵ３と、二次記憶装置４とを備える。
【００３７】
二次記憶装置４は、音声ファイル４１と、音声符号化プログラム４５とを格納する。音声ファイル４１は、音声信号が、例えば、ＰＣＭによってアナログディジタル変換された音声ファイルである。以降、「音声信号」とは、ディジタル信号に変換されたＰＣＭ形式の音声信号を示す。音声符号化プログラム４５は、音声ファイルをＭＰＥＧ−２  ＡＡＣで符号化する処理を音声符号化装置１に実行させるためのプログラムである。
【００３８】
主記憶装置２は、ＣＰＵ３によって二次記憶装置４からロードされた音声符号化プログラム４５の音声符号化プログラムコード２５が格納される。主記憶装置２は、音声データ２１を格納する。音声データ２１は、ＣＰＵ３によって、二次記憶装置４から読み出された音声ファイル４１が主記憶装置１の作業領域に格納されたものである。また、音声データ２１は、マイクロフォン（図示せず）によって収集され、アナログ―ディジタル変換器（図示せず）によってディジタル信号に変換された音声信号が、一時的に主記憶装置２の作業領域に格納されたものであってもよい。
【００３９】
ＣＰＵ３は、二次記憶装置４に格納される音声符号化プログラム４５を主記憶装置２上にロードする。また、ＣＰＵ３は、主記憶装置２上にロードされた音声符号化プログラムコード２５を実行する際に、処理対象の音声ファイル４１を二次記憶装置４から読み出し、音声データ２１として主記憶装置２の作業領域に格納する。
【００４０】
ＣＰＵ３は、主記憶装置２上にロードされた音声符号化プログラムコード２５を随時読み出し、主記憶装置２の作業領域に格納された音声データ２１を符号化してＭＰＥＧ−２
ＡＡＣファイル２３を生成する。ＣＰＵ３は、生成されたＭＰＥＧ−２  ＡＡＣファイル２３を主記憶装置２に格納する。
【００４１】
ＣＰＵ３は、音声符号化プログラムコード２５を読み出して実行することで、フレーム分割部３１，アタック検出部３２，ブロック判定部３３，直交変換部３４，グルーピング部３５，量子化部３６，ビットストリーム生成部３７，及び出力部３８として動作する。
【００４２】
フレーム分割部３１は、主記憶装置２に格納される音声データ２１を読み出して、フレーム単位に分割する。フレーム分割部３１は、フレームに分割された音声信号をアタック検出部３２と直交変換部３４とに出力する。
【００４３】
アタック検出部３２は、フレームに分割された１フレーム処理分の音声信号を入力として得る。アタック検出部３２は、フレーム中のアタックを検出する。アタック検出部３２は、アタックの検出結果をブロック判定部３３に出力する。
【００４４】
また、アタック検出部３２は、アタックの検出結果に基づいて、フレーム中のＳＨＯＲＴブロックのグルーピングを判定する。アタック検出部３２は、グルーピング判定結果をグルーピング部３５に出力する。アタック検出部３２が実行する処理の詳細については、後述する。
【００４５】
ブロック判定部３３は、アタック検出部３２からアタックの検出結果を入力として得る。ブロック判定部３３は、アタックの検出結果に基づいて、直交変換を行う単位がＳＨＯＲＴブロックであるか、又は、ＬＯＮＧブロックであるかを決定する。フレーム中にアタックが含まれる場合には、ブロック判定部３３は、ＳＨＯＲＴブロック単位で直交変換を行うことを決定する。フレーム中にアタックが含まれない場合には、ブロック判定部３３は、ＬＯＮＧブロック単位で直交変換を行うことを決定する。ブロック判定部３３は、決定された直交変換を行うブロック単位を直交変換部３４に出力する。
【００４６】
直交変換部３４は、フレーム分割部３１から１フレーム処理分の音声信号と、ブロック判定部３３から直交変換時のブロック単位とを入力として得る。直交変換部３４は、１フレーム処理分の音声信号に、ブロック判定部３３から入力されるブロック単位によって、直交変換を施す。ＭＰＥＧ−２ＡＡＣでは、直交変換として修正離散コサイン変換（ＭＤＣＴ：Ｍｏｄｉｆｉｅｄ  Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）を使用する。直交変換を施すことによって、音声信号は、周波数スペクトルに変換される。ブロック判定部３３から入力される直交変換のブロック単位がＬＯＮＧブロックである場合には、直交変換部３４は、ＬＯＮＧブロックで音声信号の直交変換を実行する。ブロック判定部３３から入力される直交変換のブロック単位がＳＨＯＲＴブロックである場合には、直交変換部３４は、ＳＨＯＲＴブロックごとに音声信号の直交変換を実行する。直交変換部３４は、周波数スペクトルに変換されたフレームをグルーピング部３５に出力する。
【００４７】
グルーピング部３５は、アタック検出部３２からグルーピング判定結果と、直交変換部３４から周波数スペクトルに変換された１フレーム処理分の音声信号とを入力として得る。グルーピング部３５は、グルーピング判定結果に基づいて、１フレーム処理分の音声信号に含まれるＳＨＯＲＴブロックのグルーピングを行う。グルーピング部３５は、グルーピングされたフレームを量子化部３６に出力する。
【００４８】
量子化部３６は、グルーピング部３５から、グルーピングされた１フレーム分の音声信号を入力として得る。量子化部３６は、フレーム中のグループごとに周波数スペクトルを量子化する。量子化部３６は、量子化された１フレーム分の音声信号をビットストリーム生成部３７に出力する。
【００４９】
ビットストリーム生成部３７は、量子化部３６から量子化された１フレーム分の音声信号を入力として得る。ビットストリーム生成部３７は、量子化された１フレーム分の音声信号を符号化し、「０」と「１」のビットストリームを生成する。ビットストリーム生成部３７は、例えば、ハフマン符号化等を用いて、符号化を行う。ビットストリーム生成部３７は、生成されたビットストリームを出力部３８に出力する。
【００５０】
出力部３８は、ビットストリーム生成部３７からビットストリームを入力として得る。出力部３８は、ビットストリームを出力し、ＭＰＥＧ−２  ＡＡＣファイル２３として主記憶装置２に格納する。
【００５１】
＜＜アタック検出部の構成＞＞
第１実施形態の音声符号化装置１のアタック検出部３２は、フレーム中に含まれるアタックを検出し、グルーピング境界を決定する。アタック検出部３２は、１フレームを所定時間長のサブブロックに分割し、サブブロック毎に含まれる音声信号のパワーの変化率を求め、アタック検出用の閾値を超えるパワー変化率の音声信号を含むサブブロックを検出することによって、アタックを検出する。アタックが検出されると、アタック検出部３２は、アタックを含むサブブロックを含むＳＨＯＲＴブロックの開始点をグルーピング境界として決定する。
【００５２】
図４は、アタック検出部３２の構成例を示す図である。アタック検出部３２は、ハイパスフィルタ３２１，サブブロック分割部３２２，ブロックパワー算出部３２３，補正部３２４，パワー変化率算出部３２５，アタック決定部３２６，およびグルーピング判定部３２７を含む。
【００５３】
ハイパスフィルタ３２１は、フレーム分割部３１から１フレーム処理分の入力音声信号を入力として得る。ハイパスフィルタ３２１は、音声信号に含まれる低周波で必要のない信号を取り除き高周波の信号のみを通過させる。ハイパスフィルタ３２１は、１フレーム処理分の音声信号をサブブロック分割部３２２に出力する。
【００５４】
サブブロック分割部３２２は、ハイパスフィルタ３２１を通過した１フレーム処理分の音声信号を入力として得る。サブブロック分割部３２２は、１フレームを複数の所定数のサブブロックに等分割する。１つのサブブロックのブロック長は、Ｎサンプル（Ｎ：０を含まない自然数）である。例えば、音声信号がサンプル周波数４８ｋＨｚでサンプリングされたＰＣＭ信号の場合には、１フレームのブロック長は１０２４サンプルである。１つのフレームが８個のサブブロックに等分割される場合には、１つのサブブロックのブロック長はＮ＝１２８サンプルである。なお、サンプル周波数４８ｋＨｚにおけるＬＯＮＧブロックのブロック長は、１フレームと同じ１０２４サンプルである。ＳＨＯＲＴブロックのブロック長は、１２８サンプルであり、１フレームは８個のＳＨＯＲＴブロックを含む。サブブロックのブロック長及び時間長は、ＳＨＯＲＴブロックと同じでもよいし、ＳＨＯＲＴブロックより小さくてもよい。第１実施形態では、サブブロックのブロック長はＳＨＯＲＴブロックと同じであるとする。サブブロック分割部３２２は、サブブロックに分割された音声信号をブロックパワー算出部３２３に出力する。
【００５５】
ブロックパワー算出部３２３は、サブブロックに分割された音声信号を入力として得る。ブロックパワー算出部３２３は、サブブロック毎に、音声信号のパワーを求める。例えば、ブロックパワー算出部３２３は、各サブブロックのパワーとして、各サブブロックに含まれる、ハイパスフィルタ３２１を通過した後のサンプルの振幅による電力の値の二乗和を求める。
【００５６】
【数１】
2011008135.tif 000003
ブロックパワー算出部３２３は、算出された１フレームに含まれる各サブブロックの音声信号のパワーを補正部３２４に出力する。
【００５７】
補正部３２４は、ブロックパワー算出部３２３から各サブブロックの音声信号のパワーを入力として得る。補正部３２４は、各サブブロックの音声信号のパワーからパワー変化率をもとめ、パワー変化率に基づいて、アタックを含む可能性のあるサブブロックを検出する。アタックを含む可能性のあるサブブロックは、以降、“アタック候補”のサブブロックと呼ばれる。アタック候補のサブブロックが検出された場合には、補正部３２４は、アタック候補のサブブロックおよびアタック候補のサブブロックの直前のサブブロックにアタックの開始点が含まれているか否かを検査する。補正部３２４は、アタックの開始点が検出された場合には、アタックの開始点を含むサブブロックの音声信号のパワーを補正する。補正部３２４は、１フレーム分の、補正されたサブブロックの音声信号のパワーを含む、サブブロックの音声信号のパワーをパワー変化率算出部３２５に出力する。補正部３２４の詳細については、後述する。
【００５８】
パワー変化率算出部３２５は、補正部３２４から、１フレーム分の、補正されたサブブロックの音声信号のパワーを含む、サブブロックの音声信号のパワーを入力として得る。パワー変化率算出部３２５は、１フレームに含まれるサブブロックの音声信号のパワーから、各サブブロックのパワー変化率を算出する。パワー変化率算出部３２５は、算出された各サブブロックのパワー変化率を、アタック決定部３２６とグルーピング判定部３２７とに出力する。
【００５９】
アタック決定部３２６は、各サブブロックのパワー変化率を入力として得る。アタック決定部３２６は、各サブブロックのパワー変化率と、アタック検出用の閾値１とを比較し、閾値１より大きいパワー変化率のサブブロックを、アタックを含むサブブロックであるとして検出する。アタック決定部３２６は、アタックを含むサブブロックをアタック検出結果としてグルーピング判定部３２７と、ブロック判定部３３とに出力する。
【００６０】
グルーピング判定部３２７は、各サブブロックのパワー変化率とアタック検出結果とを入力として得る。グルーピング判定部３２７は、各サブブロックのパワー変化率とアタック検出結果とから、１フレーム中のグルーピング境界を判定する。グルーピング判定部３２７は、１フレーム中のグルーピング境界をグループ判定結果としてグルーピング部３５に出力する。グルーピング判定部３２７の詳細については、後述する。
【００６１】
＜＜補正部の構成＞＞
図５は、アタック検出部３２に含まれる補正部３２４の構成例を示す図である。補正部３２４は、アタック候補決定部３２４ａ，アタック検査部３２４ｂ，およびブロックパワー補正部３２４ｃを含む。
【００６２】
アタック候補決定部３２４ａは、１フレームに含まれる各サブブロックの音声信号のパワーを入力として得る。アタック候補決定部３２４ａは、各サブブロックの音声信号のパワーに基づいて、アタックを含む可能性のあるサブブロックを検出する。以降、アタックを含む可能性のあるサブブロックはアタック候補のサブブロックと呼ばれる。アタック候補決定部３２４ａは、アタック候補のサブブロックの情報を含むアタック候補検出結果と、サブブロックに分割されたフレームを、アタック検査部３２４ｂに出力する。
【００６３】
図６は、アタック候補決定部３２４ａが実行するアタック候補検出処理の例を説明する図である。図６に示される例には、サブブロックＢ０からサブブロックＢ７に分割されたフレームのサブブロックのうち、サブブロックＢ０からサブブロックＢ３までが抽出されて示されている。図６に示される例では、アタックがサブブロックＢ１とサブブロックＢ２とにまたがって存在し、アタックの開始点がサブブロックＢ１とサブブロックＢ２とのブロック境界の近くに存在する。図６に示される例には、入力音声信号の波形Ｓ１と、入
力音声信号の各サブブロックのパワーＰ１が示されている。
【００６４】
アタック候補決定部３２４ａは、ブロックパワー算出部３２３から入力される各サブブロックの音声信号のパワーに基づいて、各サブブロックのパワー変化率を求める。アタック候補決定部３２４ａは、サブブロックｂのパワー変化率を求めるために、まず、過去の音声信号の電力の平均ａｖｅｐｏｗ［ｂ］を求める。アタック候補決定部３２４ａは、メモリ３２４ｍを含んでおり、サブブロック毎に求められる過去の音声信号の電力の平均ａｖｅｐｏｗ［ｂ］をメモリ３２４ｍに格納する。サブブロックｂの過去の音声信号の電力の平均ａｖｅｐｏｗ［ｂ］は、例えば、以下の式２のような加重平均等で求められる。
【００６５】
【数２】
2011008135.tif 000004
αは、サブブロックｂの直前のサブブロックｂ−１における音声信号の電力の急激な変化の影響を受けないための重み係数である。なお、フレームの先頭のサブブロックについて、過去の音声信号の電力の平均を求める場合には、メモリ３４２ｍに格納されている、直前のフレームの最後尾のサブブロックの過去の音声信号の電力の平均の値を用いればよい。
【００６６】
次に、アタック候補決定部３２４ａは、サブブロックｂの過去の音声信号の電力の平均ａｖｅｐｏｗ［ｂ］とサブブロックｂのパワーｐｏｗ［ｂ］との比から、例えば、以下の式３を用いて、パワー変化率ｐｏｗＲａｔｉｏ＿ｔｍｐ［ｂ］を求める。
【００６７】
【数３】
2011008135.tif 000005
アタック候補決定部３２４ａは、フレーム中の全サブブロックのパワー変化率を求める。図６に示される例では、フレーム中のサブブロックＢ０からサブブロックＢ３までのパワー変化率がパワー変化率Ｒ１として示される。
【００６８】
アタック候補決定部３２４ａは、各サブブロックのパワー変化率と、アタック検出用の閾値１と、アタック候補検出用の閾値２とを比較する。
【００６９】
閾値１は、サブブロックにアタックが含まれていることを検出するためのアタック検出用閾値である。サブブロックのパワー変化率が閾値１を超えている場合には、アタック候補決定部３２４ａは、当該サブブロックにアタックが含まれることを検出する。閾値１には、例えば、１０から２５（比率のため単位はない）までの値が設定される。
【００７０】
閾値２は、サブブロックにおいてアタックの検出を確定することはできないが、当該サブブロックにアタックが含まれる可能性が高いことを判定するためのアタック候補検出用閾値である。閾値２は閾値１より小さい値であり、閾値２＜閾値１の関係である。サブブ
ロックのパワー変化率が閾値２と閾値１との間に存在する場合には、当該サブブロックにおいてアタックが含まれることを確定することはできないが、当該サブブロックにアタックが含まれる可能性が高いことが判定される。すなわち、サブブロックのパワー変化率が閾値２と閾値１との間に存在する場合には、アタック候補決定部３２４ａは、当該サブブロックをアタック候補のサブブロックとして検出する。閾値２には、閾値１に１０から２５までの値が設定される場合、例えば、１．５から８までの値が設定される。
【００７１】
図６に示される例では、閾値1を超えるパワー変化率のサブブロックは存在していない
。図６に示される例では、サブブロックＢ２のパワー変化率が閾値２と閾値１との間に存在するので、アタック候補決定部３２４ａは、サブブロックＢ２をアタック候補として検出する。
【００７２】
図７は、アタック候補決定部３２４ａが実行するアタック候補検出処理の例のフローを示す図である。
【００７３】
アタック候補決定部３２４ａは、１フレームに含まれる各サブブロックの音声信号のパワーを入力として得ると、アタック候補検出処理を開始する。
【００７４】
アタック候補決定部３２４ａは、フレーム中のサブブロックの位置を示す変数ｂの初期値として、ｂ＝０と設定する（ＯＰ１）。例えば、変数ｂ＝０は、サブブロックＢ０を指す。図６に示される例のように、１フレームが８個のサブブロックに分割される場合には、変数ｂの範囲は、０≦ｂ≦７である。
【００７５】
アタック候補決定部３２４ａは、サブブロックｂのパワー変化率を、例えば、式２および式３を用いて求める。アタック候補決定部３２４ａは、サブブロックｂのパワー変化率（ｐｏｗＲａｔｉｏ＿ｔｍｐ［ｂ］）が閾値１（ｔｈｒ１）より大きいか否かを判定する。すなわち、アタック候補決定部３２４ａは、サブブロックｂがアタックを含むか否かを判定する（ＯＰ２）。
【００７６】
サブブロックｂのパワー変化率が閾値１より大きい場合には（ＯＰ２：Ｙｅｓ）、サブブロックｂはアタックを含むことが検出される。ただし、アタック候補決定部３２４ａは、アタックを含むサブブロックを検出するのではなく、アタック候補のサブブロックを検出することが目的であるため、アタックが含まれるサブブロックを検出しても、特に処理は行わない。その後、処理がＯＰ５に進む。
【００７７】
サブブロックｂのパワー変化率が閾値１以下場合には（ＯＰ２：Ｎｏ）、アタック候補決定部３２４ａは、サブブロックｂのパワー変化率が閾値２（ｔｈｒ２）より大きいか否かを判定する（ＯＰ３）。すなわち、アタック候補決定部３２４ａは、サブブロックｂがアタック候補であるか否かを判定する。
【００７８】
サブブロックｂのパワー変化率が閾値２より大きい場合には（ＯＰ３：Ｙｅｓ）、サブブロックｂがアタック候補のサブブロックであることが判定される。アタック候補決定部３２４ａは、サブブロックｂがアタック候補のサブブロックであることを記録する（ＯＰ４）。アタック候補決定部３２４ａは、例えば図６に示される例において、サブブロックＢ２がアタック候補として検出される場合には、ａｔｔａｃｋ＿ｂａｎｄ＝Ｂ２を記録する。また、ａｔｔａｃｋ＿ｂａｎｄ＝−１は、アタック候補のサブブロックが検出されないことを示す。その後、処理がＯＰ５に進む。
【００７９】
サブブロックｂのパワー変化率が閾値２以下の場合には（ＯＰ３：Ｎｏ）、サブブロックｂが、アタックを含まず、さらに、アタック候補でもないことが示される。その後、処
理がＯＰ５に進む。
【００８０】
ＯＰ５において、アタック候補決定部３２４ａは、処理を次のサブブロックに進めるために、変数ｂに１を加算する。例えば、変数ｂがｂ＝０である場合には、アタック候補決定部３２４ａは、変数ｂをｂ＝０＋１＝１に変更する。
【００８１】
アタック候補決定部３２４ａは、変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値であるかを判定する（ＯＰ６）。すなわち、アタック候補決定部３２４ａは、フレームに含まれるサブブロックでアタック候補検出処理が行われていないサブブロックが残っているか否かを判定する。図６に示される例では、１フレームがサブブロックＢ０からＢ７の８個のサブブロックに分割されるため、アタック候補決定部３２４ａは、変数ｂが８より小さい値か否かを判定する。
【００８２】
変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値である場合には（ＯＰ６：Ｙｅｓ）、アタック候補検出処理が行われていないサブブロックが存在することが示される。アタック候補決定部３２４ａは、ＯＰ２からＯＰ４の処理を繰り返し実行する。
【００８３】
変数ｂが１フレームに含まれるサブブロックの数Ｍ以上の値である場合には（ＯＰ６：Ｎｏ）、フレームに含まれるすべてのサブブロックに対してアタック候補検出処理が終了したことが示される。アタック候補決定部３２４ａは、アタック候補検出結果としてａｔｔａｃｋ＿ｂａｎｄをアタック検査部３２４ｂに出力し、アタック候補検出処理を終了する。
【００８４】
図６に示される例においては、アタック候補決定部３２４ａは、サブブロックＢ２をアタック候補として検出するので、アタック候検出定結果として、ａｔｔａｃｋ＿ｂａｎｄ＝Ｂ２をアタック検査部３２４ｂに出力する。また、アタック候補が検出されない場合には、アタック候補決定部３２４ａは、アタック候補検出結果として、ａｔｔａｃｋ＿ｂａｎｄ＝−１をアタック検査部３２４ｂに出力する。
【００８５】
図７に示されるアタック候補検出処理によって検出されたアタック候補のサブブロックに、実際にアタックの開始点が含まれているとは限らない。アタック候補のサブブロックには、実際にアタックの開始点が含まれる場合と、アタックの開始点は含まれておらず、図６に示される例の入力音声信号のように、アタック候補の直前のサブブロックにアタックの開始点が含まれる場合とがある。
【００８６】
図５に戻って、アタック検査部３２４ｂは、アタック候補決定部３２４ａからアタック候補検出結果ａｔｔａｃｋ＿ｂａｎｄを入力として得る。アタック検査部３２４ｂは、アタック候補検出結果に基づいて、アタックの開始点を含むサブブロックを特定するアタック特定処理を行う。アタック検査部３２４ｂは、アタック特定処理の結果としてアタックを含むサブブロックを示すアタック特定結果ａｔｔａｃｋ＿ｂａｎｄをブロックパワー補正部３２４ｃに出力する。
【００８７】
図８は、アタック検査部３２４ｂが実行するアタック特定処理の例を説明する図である。図８に示される例では、図６に示される例における入力音声信号のサブブロックＢ１およびサブブロックＢ２が抽出されて示されている。
【００８８】
図８に示される例では、アタック候補検出結果として、ａｔｔａｃｋ＿ｂａｎｄ＝Ｂ２が入力された場合の、アタック検査部３２４ｂが実行するアタック特定処理を示す。
【００８９】
（１）アタック検査部３２４ｂは、アタック候補のサブブロックと、アタック候補のサブブロックより時間的に１つ前のサブブロックとについて、アタックの開始点が含まれているか調査する。なぜならば、アタックの開始点がアタック候補のサブブロックに含まれる場合と、アタックの開始点がアタック候補の直前のサブブロックに含まれる場合とが考えられるからである。アタック検査部３２４ｂは、まず、アタック候補のサブブロックの時間的に１つ前のサブブロックを選択する。図８に示される例では、アタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ＝Ｂ２であるので、サブブロックＢ２がアタック候補である。したがって、図８に示される例では、アタック検査部３２４ｂは、まず、調査の対象として、アタック候補であるサブブロックＢ２の時間的に１つ前のサブブロックＢ１を選択する。
【００９０】
（２）アタック検査部３２４ｂは、選択されたサブブロックについて、より詳細にアタックの開始点が含まれているか否かの調査を行うため、サンプル単位で音声信号のパワーを算出する。図８に示される場合では、アタック検査部３２４ｂは、サブブロックＢ１に含まれるサンプルごとに音声信号のパワーを算出する。
【００９１】
（３）選択されたサブブロックに含まれる各サンプルの音声信号のパワーに基づいて、アタック検査部３２４ｂは、各サンプルのパワー変化率を算出する。このときの、サブブロックに含まれる各サンプルのパワー変化率の算出は、例えば、式２及び式３のサブブロックをサンプルに置き換えて行われればよい。図８に示される例では、サブブロックＢ１に含まれる各サンプルのパワーに基づいて、アタック検査部３２４ｂは、各サンプルのパワー変化率を算出する。
【００９２】
（４）アタック検査部３２４ｂは、アタックの開始点を特定するための閾値３（開始点特定用閾値）よりも音声信号のパワー変化率が大きいサンプルがあるか否かを判定する。選択されたサブブロックに音声信号のパワー変化率が閾値３よりも大きいサンプルがある場合には、アタック検査部３２４ｂは、選択されたサブブロックにアタックの開始点が含まれることを特定する。図８に示される例では、音声信号のパワー変化率が閾値３よりも大きいサンプルが、サブブロックＢ１に含まれているので、アタック検査部３２４ｂは、サブブロックＢ１にアタックの開始点が含まれることを特定する。閾値３には、アタック検出用の閾値１と同じ範囲の値が用いられる。例えば、アタック検出用の閾値１が１０から２５までの範囲の値である場合には、開始点特定用の閾値３は、１０から２５までの値が用いられる。
【００９３】
閾値３より音声信号のパワー変化率が大きいサンプルが存在しない場合には、アタック検査部３２４ｂは、次にアタック候補のサブブロックを選択し、上記（２）から（４）の処理を実行する。
【００９４】
なお、アタック候補決定部３２４ａから入力されるアタック候補検出結果が、ａｔｔａｃｋ＿ｂａｎｄ＝−１である場合、及び、ａｔｔａｃｋ＿ｂａｎｄ＝０である場合、アタック検査部３２４ｂはアタック特定処理（上述の（１）から（４））は行わない。ａｔｔａｃｋ＿ｂａｎｄ＝−１である場合とは、すなわち、アタック候補のサブブロックが検出されなかった場合である。ａｔｔａｃｋ＿ｂａｎｄ＝０である場合とは、すなわち、アタック候補として、フレーム中の先頭のサブブロックが検出された場合である。アタック候補としてフレーム中の先頭のサブブロックが検出された場合には、アタックの開始点が１つ前のフレーム、又は、フレーム中の先頭のサブブロックに含まれていることが予想される。アタックの開始点が１つ前のフレームに含まれている場合でも、フレームの先頭のサブブロックに含まれている場合でも、フレームの先頭のサブブロックと直前のサブブロック（直前のフレーム）との境界がグルーピング境界になる。従って、アタック候補としてフレームの先頭のサブブロックが検出される場合には、アタック検査部３２４ｂは、アタ
ック特定処理を行わない。以上より、アタック候補決定部３２４ａから入力されるアタック候補検出結果が、ａｔｔａｃｋ＿ｂａｎｄ＝−１である場合、及び、ａｔｔａｃｋ＿ｂａｎｄ＝０である場合には、アタック検査部３２４ｂは、アタック特定処理を実行しない。
【００９５】
図９は、アタック検査部３２４ｂが実行するアタック特定処理のフローを示す図である。アタック検査部３２４ｂは、アタック候補決定部３２４ａからアタック候補検出結果（ａｔｔａｃｋ＿ｂａｎｄ）が入力されると、アタック特定処理を開始する。
【００９６】
アタック検査部３２４ｂは、アタック候補決定部３２４ａから入力されるアタック候補検出結果が、ａｔｔａｃｋ＿ｂａｎｄ＝−１、又は、ａｔｔａｃｋ＿ｂａｎｄ＝０であるか否かを判定する（ＯＰ１１）。アタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ＝−１の場合には、アタック候補となるサブブロックが検出されなかったことが示される。ただし、アタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ＝−１であっても、アタックが含まれるサブブロックが検出される場合もある。アタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ＝０の場合には、フレーム中の先頭のサブブロックがアタック候補であることが示される。上述のとおり、アタック候補のサブブロックが検出されなかった場合、及び、フレームの先頭のサブブロックがアタック候補である場合には、アタック特定処理を実行しなくてよい。したがって、アタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ＝−１、又は、ａｔｔａｃｋ＿ｂａｎｄ＝０である場合には（ＯＰ１１：Ｙｅｓ）、アタック検査部３２４ｂは、アタック特定結果ａｔｔａｃｋ＿ｂａｎｄ＝−１とし（ＯＰ１７）、アタック特定処理を終了する。アタック特定結果を示す変数ａｔｔａｃｋ＿ｂａｎｄが、ａｔｔａｃｋ＿ｂａｎｄ＝−１である場合、サブブロックに含まれる音声信号のパワーの補正を行う必要のあるサブブロックが存在しないことを示す。
【００９７】
アタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ＝−１、又は、ａｔｔａｃｋ＿ｂａｎｄ＝０でない場合には（ＯＰ１１：Ｎｏ）、アタックの開始点は、アタック候補のサブブロック、又は、アタック候補の直前のサブブロックに含まれる可能性が高い。まず、アタック検査部３２４ｂは、アタック候補の直前のサブブロックからアタックの開始点の調査を行うために、サンプルの位置を示す変数ｉの初期値を、アタック候補の直前のサブブロックの先頭サンプルの位置に設定する（ＯＰ１２）。図９におけるａｔｔａｃｋ＿ｂａｎｄは、アタック候補のサブブロックを示す。ａｔｔａｃｋ＿ｂａｎｄ−１は、アタック候補のサブブロックの直前のサブブロックを示す。ｂａｎｄ＿ｔｏｐ［ｂ］（ｂはサブブロックの位置を示す０を含む自然数）は、サブブロックｂの先頭サンプルの位置を示す。なお、フレームに含まれるサンプルには、０から順に通し番号が付される。例えば、１フレームが１０２４サンプルを含むとすると、各サンプルには０から１０２３までの番号が付される。従って、フレームに含まれるサンプルの位置を示す変数ｉの範囲は、０から１フレームに含まれるサンプル数から１を減算した数の範囲である。
【００９８】
図８に示される例の場合、アタック検査部３２４ｂは、例えば、アタック候補のサブブロックＢ２の直前のサブブロックとしてサブブロックＢ１を選択し、変数ｉとしてサブブロックＢ１の先頭サンプルの位置を設定する。
【００９９】
次に、アタック検査部３２４ｂは、サンプルｉのパワー変化率ｓｕｂＰｏｗＲｔｉｏ［ｉ］を、例えば、式２及び式３を用いて求める。アタック検査部３２４ｂは、サンプルｉのパワー変化率ｓｕｂＰｏｗＲｔｉｏ［ｉ］がアタックの開始点を検出するための閾値３（ｔｈｒ３）より大きいか否かを判定する（ＯＰ１３）。すなわち、アタック検査部３２４ｂは、アタックの開始点がサンプルｉに含まれている否かを判定する。
【０１００】
サンプルｉのパワー変化率が閾値３より大きい場合には（ＯＰ１３：Ｙｅｓ）、アタッ
ク検査部３２４ｂは、アタックの開始点がサンプルｉに含まれることを判定する。アタック検査部３２４ｂは、アタックの開始点がサンプルｉを含むサブブロックに含まれることを特定し、アタック特定結果ａｔｔａｃｋ＿ｂａｎｄを設定する（ＯＰ１４）。閾値３よりパワー変化率が大きいサンプルｉが、アタック候補のサブブロックに含まれている場合には、アタック検査部３２４ｂは、ａｔｔａｃｋ＿ｂａｎｄ＝ａｔｔａｃｋ＿ｂａｎｄに設定する。閾値３よりパワー変化率が大きいサンプルｉが、アタック候補の直前のサブブロックに含まれている場合には、アタック検査部３２４ｂは、ａｔｔａｃｋ＿ｂａｎｄ＝ａｔｔａｃｋ＿ｂａｎｄ−１に設定する。その後、アタック検査部３２４ｂは、アタック特定結果としてａｔｔａｃｋ＿ｂａｎｄをブロックパワー補正部３２４ｃに出力し、アタック特定処理を終了する。
【０１０１】
図８に示される例の場合、アタック候補の直前のサブブロックＢ１に含まれるサンプルのパワー変化率が閾値３より大きいので、アタック検査部３２４ｂは、アタックがサブブロックＢ１に含まれることを判定し、ａｔｔａｃｋ＿ｂａｎｄ＝ａｔｔａｃｋ＿ｂａｎｄ−１＝２−１＝１と記録する。その後、アタック検査部３２４ｂは、アタック特定結果としてａｔｔａｃｋ＿ｂａｎｄ＝１をブロックパワー補正部３２４ｃに出力し、アタック特定処理を終了する。
【０１０２】
サンプルのパワー変化率が閾値３以下の場合には（ＯＰ１３：Ｎｏ）、アタック検査部３２４ｂは、次のサンプルの処理を行うために、サンプルの位置を示す変数ｉに１を加算する（ＯＰ１５）。
【０１０３】
アタック検査部３２４ｂは、ＯＰ１５において１を加算された変数ｉが示すサンプルの位置が、アタック候補のサブブロック及びアタック候補のサブブロックの直前のサブブロックに含まれるサンプルの位置を示すか否かを判定する（ＯＰ１６）。アタック検査部３２４ｂは、以下の式４を用いて、変数ｉが示すサンプル位置を判定する。
【０１０４】
【数４】
2011008135.tif 000006
式４は、サンプル位置を示す変数ｉが、アタック候補の１つ後のサブブロックの先頭サンプルの位置の値より小さいか否かを判定する式である。変数ｉが式４を満たす間は、アタック候補のサブブロック又はアタック候補のサブブロックの直前のサブブロックに含まれるサンプルについて、アタック特定処理が実行されていることを示す。
【０１０５】
変数ｉが式４を満たす場合には（ＯＰ１６：Ｙｅｓ）、アタック検査部３２４ｂは、ＯＰ１３〜ＯＰ１６の処理を繰り返し実行する。
【０１０６】
変数ｉが式４を満たさない場合には（ＯＰ１６：Ｎｏ）、アタック候補のサブブロック及びアタック候補の直前のサブブロックに含まれる全サンプルのアタックの開始点の調査が終了し、且つ、アタックの開始点が含まれるサンプルが検出されなかったことが示される。次に、アタック検査部３２４ｂは、アタック候補及びアタック候補の直前のサブブロックにアタックが検出されなかったので、ａｔｔａｃｋ＿ｂａｎｄ＝−１と記録する（ＯＰ１７）。アタック検査部３２４ｂは、アタック特定結果として、アタックが特定されなかったことを示すａｔｔａｃｋ＿ｂａｎｄ＝−１をブロックパワー補正部３２４ｃに出力し、アタック特定結果を終了する。
【０１０７】
図９に示されるアタック特定処理においては、アタック検査部３２４ｂは、まず、アタック候補のサブブロックの直前のサブブロックからアタックの開始点の調査を行う。アタック候補のサブブロックの直前のサブブロックからアタックの開始点が検出されない場合に、アタック検査部３２４ｂは、アタック候補のサブブロックのアタックの開始点の調査を行う。しかしながら、アタック検査部３２４ｂは、アタックの開始点の調査をアタック候補の直前のサブブロックから行うことに限定されず、アタック候補のサブブロックの調査から行ってもよい。
【０１０８】
次に、ブロックパワー補正部３２４ｃは、アタック検査部３２４ｂからアタック特定結果ａｔｔａｃｋ＿ｂａｎｄを入力として得る。ブロックパワー補正部３２４ｃは、アタック特定結果ａｔｔａｃｋ＿ｂａｎｄに基づいて、アタック検査部３２４ｂによって特定されたアタックの開始点を含むサブブロックの音声信号のパワーを補正する。ブロックパワー補正部３２４ｃは、アタックの開始点が含まれるサブブロックの音声信号のパワーが補正された、１フレーム分の音声信号をパワー変化率算出部３２５に出力する。
【０１０９】
図１０は、ブロックパワー補正部３２４ｃが実行するパワー補正処理の例を説明する図である。図１０に示される例では、図６に示される各サブブロックのパワーＰ１を、サブブロック毎にプロットしたグラフである。したがって、図１０に示される例では、サブブロックＢ１にアタックの開始点が含まれているが、サブブロックＢ２の方が音声信号のパワーが大きい。サブブロックＢ１がアタックが含まれるサブブロックとしてアタック決定部３２６（図４）に判定されるために、ブロックパワー補正部３２４ｃはサブブロックＢ１の音声信号のパワーを補正する。すなわち、ブロックパワー補正部３２４ｃは、サブブロックＢ１の音声信号のパワーの変化率が、アタック検出用の閾値１を超えるように、サブブロックＢ１のパワーを補正する。
【０１１０】
図１０に示される例では、ブロックパワー補正部３２４ｃは、アタック特定結果ａｔｔａｃｋ＿ｂａｎｄ＝Ｂ１によって特定されるサブブロックＢ１の音声信号のパワーに、サブブロックＢ２のサブブロックの音声信号のパワーを加算して補正する。補正されたサブブロックＢ１のパワーは、アタックがサブブロックＢ１にのみ含まれる場合のパワーと近い値になる。
【０１１１】
サブブロックＢ１にサブブロックＢ２の音声信号が加算されることによって、サブブロックＢ１の音声信号のパワーがアタック検出用閾値である閾値１より大きい値となる。従って、アタック決定部３２６において、アタックがサブブロックＢ１に含まれると判定されるようになる。
【０１１２】
ブロックパワー補正部３２４ｃは、サブブロックＢ１の補正されたパワーを含む、１フレーム分の音声信号をパワー変化率算出部３２５に出力する。
【０１１３】
図１１は、ブロックパワー補正部３２４ｃが実行するパワー補正処理の例のフローを示す図である。
【０１１４】
ブロックパワー補正部３２４ｃは、アタック検査部３２４ｂからアタック特定結果ａｔｔａｃｋ＿ｂａｎｄが入力されると、パワー補正処理を開始する。
【０１１５】
ブロックパワー補正部３２４ｃは、サブブロックの音声信号のパワーを補正する必要があるか否かを判定するために、アタック特定結果がａｔｔａｃｋ＿ｂａｎｄ＝−１であるか否かを判定する（ＯＰ２１）。アタック特定結果がａｔｔａｃｋ＿ｂａｎｄ＝−１である場合には（ＯＰ２１：Ｙｅｓ）、アタック候補が検出されなかった、又は、アタック候
補及びアタック候補の直前のサブブロックにアタックの開始点が検出されなかったことが示される。従って、ブロックパワー補正部３２４ｃは、サブブロックの音声信号のパワーを補正せず、パワー補正処理を終了する。
【０１１６】
アタック特定結果がａｔｔａｃｋ＿ｂａｎｄ＝−１でない場合には（ＯＰ２1：Ｎｏ）
、ブロックパワー補正部３２４ｃは、サブブロックの音声信号のパワーの補正を行うために、サブブロックの位置を示す変数ｂの初期値をｂ＝０と設定する（ＯＰ２２）。
【０１１７】
次に、ブロックパワー補正部３２４ｃは、変数ｂがａｔｔａｃｋ＿ｂａｎｄと同じ値を示すか否かを判定する（ＯＰ２３）。すなわち、ブロックパワー補正部３２４ｃが、現在処理しているサブブロックｂに、アタックが含まれるか否かを判定する。
【０１１８】
変数ｂがａｔｔａｃｋ＿ｂａｎｄと同じ値の場合には（ＯＰ２３：Ｙｅｓ）、ブロックパワー補正部３２４ｃが現在処理中のサブブロックｂにアタックが含まれることが示される。ブロックパワー補正部３２４ｃは、アタックが含まれるサブブロックｂの音声信号の補正を行う。ブロックパワー補正部３２４ｃは、アタックが含まれるサブブロックｂに、１つ後のサブブロックｂ＋１の音声信号のパワーを加算し、アタックが含まれるサブブロックｂの音声信号のパワーの補正を行う（ＯＰ２４）。図１１のＯＰ２４に示されるｐｏｗ［ｂ］は、サブブロックｂの音声信号のパワーを表す。
【０１１９】
変数ｂがａｔｔａｃｋ＿ｂａｎｄと同じ値でない場合には（ＯＰ２３：Ｎｏ）、現在処理中のサブブロックｂに、アタックが含まれないことが示されるので、ブロックパワー補正部３２４ｃは、サブブロックｂの音声信号のパワーの補正を行わない。ブロックパワー補正部３２４ｃは、処理をＯＰ２５に進める。
【０１２０】
次に、ブロックパワー補正部３２４ｃは、ブロックの位置を示す変数ｂに１を加算する（ＯＰ２５）。ブロックパワー補正部３２４ｃは、ＯＰ２５において１を加算された変数ｂが、１フレームに含まれるサブブロックの数Ｍより小さい値か否かを判定する（ＯＰ２６）。変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値である場合には（ＯＰ２６：Ｙｅｓ）、パワー補正処理を行っていないサブブロックが存在することが示されるので、ブロックパワー補正部３２４ｃは、処理をＯＰ２３に戻す。変数ｂが１フレームに含まれるサブブロックの数Ｍ以上の値である場合には（ＯＰ２６：Ｎｏ）、フレームに含まれる全サブブロックについてパワー補正処理が行われたことを示すので、ブロックパワー補正部３２４ｃは、パワー補正処理を終了する。
【０１２１】
ブロックパワー補正部３２４ｃは、パワー補正処理が施された１フレーム分のサブブロックの音声信号のパワーをパワー変化率算出部３２５に出力する。
【０１２２】
パワー変化率算出部３２５は、ブロックパワー補正部３２４ｃから、パワー補正処理が施された１フレーム分のサブブロックの音声信号のパワーを入力として得る。パワー変化率算出部３２５は、フレーム分のサブブロックの音声信号のパワーから、各サブブロックのパワー変化率を、例えば、式２及び式３を用いて算出する。パワー変化率算出部３２５は、算出された各サブブロックのパワー変化率をアタック決定部３２６及びグルーピング判定部３２７に出力する。
【０１２３】
アタック決定部３２６は、パワー変化率算出部３２５から各サブブロックのパワー変化率を入力として得る。アタック決定部３２６は、アタック検出用閾値である閾値１（図６）と、各サブブロックのパワー変化率とを比較する。アタック決定部３２６は、各サブブロックのパワー変化率が閾値１より大きい値の場合には、当該サブブロックのアタック検出結果をａｔｔａｃｋ［ｂ］＝１とする。アタック決定部３２６は、各サブブロックのパ
ワー変化率が閾値１以下である場合には、当該サブブロックのアタック検出結果をａｔｔａｃｋ＝０とする。アタック検出結果ａｔｔａｃｋ［ｂ］は、０か１のどちらかの値をとる。アタック検出結果ａｔｔａｃｋ［ｂ］＝０である場合には、アタックはサブブロックｂには含まれないことが示される。アタック検出結果ａｔｔａｃｋ［ｂ］＝１である場合には、アタックがサブブロックｂに含まれることが示される。アタック決定部３２６は、各サブブロックのアタック検出結果ａｔｔａｃｋ［ｂ］を、グルーピング判定部３２７とブロック判定部３３（図３）とに出力する。
【０１２４】
ブロック判定部３３は、アタック検出結果に基づいて、直行変換をＳＨＯＲＴブロック単位で行うか、ＬＯＮＧブロック単位で行うかを決定する。アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックが少なくとも１つある場合には、すなわち、フレームにアタックが検出された場合には、ブロック判定部３３は、ＳＨＯＲＴブロック単位で直交変換することを決定する。すべてのサブブロックのアタック検出結果がａｔｔａｃｋ［ｂ］＝０である場合には、ブロック判定部３３は、直行変換をＬＯＮＧブロック単位で行うことを決定する。ブロック判定部３３は、ブロック判定結果として、直交変換をＬＯＮＧブロック、又は、ＳＨＯＲＴブロックのどちらの単位で行うかを、直交変換部３４に出力する。
【０１２５】
直交変換部３４は、フレーム分割部３１から１フレーム処理分の入力音声信号と、ブロック判定部３３からブロック判定結果とを入力として得る。直交変換部３４は、ブロック判定結果がＳＨＯＲＴブロックの場合には、ＳＨＯＲＴブロック単位で１フレーム分の音声信号の直交変換を行う。直交変換部３４は、ブロック判定結果がＬＯＮＧブロックの場合には、ＬＯＮＧブロック単位で１フレーム分の音声信号の直交変換を行う。直交変換部３４は、直交変換が施された１フレーム分の音声信号をグルーピング部３５に出力する。
【０１２６】
＜＜グルーピング判定部＞＞
グルーピング判定部３２７は、各サブブロックのアタック検出結果ａｔｔａｃｋ［ｂ］と、各サブブロックのパワー変化率とを入力として得る。グルーピング判定部３２７は、グルーピング決定用の閾値４を用いて、グルーピングを決定する。グルーピング決定用の閾値４は、アタック検出用の閾値１と同じ又は閾値１よりも大きい値を設定する。例えば、アタック検出用の閾値１が、１０〜２５であるならば、グルーピング決定用の閾値４は、７０〜１７０の範囲で設定される。
【０１２７】
図１２は、グルーピング判定部３２７が実行するグルーピング判定処理の例を説明する図である。図１２に示される入力音声信号の波形は、図６に示される入力音声信号と同じものである。図１２に示される例では、入力音声信号のパワー変化率のグラフの下に、各サブブロックのアタック検出結果ａｔｔａｃｋ［ｂ］とグルーピング判定結果ｇｒｏｕｐ［ｂ］とを表示する。
【０１２８】
グルーピング判定部３２７は、各サブブロックのパワー変化率とグルーピング決定用の閾値４とを比較する。グルーピング判定部３２７は、グルーピング決定用の閾値４より大きい値のパワー変化率のサブブロックのグルーピング判定結果をｇｒｏｕｐ［ｂ］＝１とする。グルーピング判定部３２７は、グルーピング決定用の閾値４以下の値のパワー変化率のサブブロックのグルーピング判定結果をｇｒｏｕｐ［ｂ］＝０とする。グルーピング判定部３２７は、フレームに含まれるすべてのサブブロックについて、グルーピング判定結果ｇｒｏｕｐ［ｂ］を求める。グルーピング判定結果ｇｒｏｕｐ［ｂ］は０か１かどちらかの値のみをとる。
【０１２９】
グルーピング判定部３２７から各サブブロックのグルーピング判定結果ｇｒｏｕｐ［ｂ］を得るグルーピング部３５は、各サブブロックのグルーピング判定結果がｇｒｏｕｐ［
ｂ］＝０からｇｒｏｕｐ［ｂ］＝１に変わるサブブロック間でグループ境界を設定する。
【０１３０】
図１２に示される例では、サブブロックＢ０のグルーピング判定結果がｇｒｏｕｐ［Ｂ０］＝０、サブブロックＢ１のグルーピング判定結果がｇｒｏｕｐ［Ｂ１］＝１であるので、サブブロックＢ０とサブブロックＢ１との境界がグループ境界として選択される。グルーピング部３５は、グループｇ０にサブブロックＢ０を含め、グループｇ１にサブブロックＢ１〜Ｂ３を含める。なお、第１実施形態では、サブブロックはＳＨＯＲＴブロックと同じ時間長であるので、グループｇ０はＳＨＯＲＴブロックｗ０、グループｇ１はＳＨＯＲＴブロックｗ１〜ｗ３が含まれることと同意である。
【０１３１】
図１３は、図１２に示されるグルーピング判定部３２７が実行するグルーピング判定処理の例のフロー図である。グルーピング判定部３２７は、各サブブロックのアタック検出結果ａｔｔａｃｋ［ｂ］と、各サブブロックのパワー変化率とを入力として得ると、グルーピング判定処理を開始する。
【０１３２】
グルーピング判定部３２７は、グルーピングを行う単位がＳＨＯＲＴブロックであるか、ＬＯＮＧブロックであるかを判定する（ＯＰ３１）。グルーピング判定部３２７は、フレームにアタックが含まれるか否か、すなわち、アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックが少なくとも１つあるか否かを判定する。アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックが少なくとも１つある場合には（ＯＰ３１：Ｙｅｓ）、グルーピング判定部３２７は、グルーピングをＳＨＯＲＴブロック単位で行うことを判定する。
【０１３３】
アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックがない場合には（ＯＰ３１：Ｎｏ）、グルーピング判定部３２７は、グルーピングをＬＯＮＧブロック単位で行うことを判定する。グルーピングをＬＯＮＧブロック単位で行うとは、すなわち、グルーピングを行わないことを示すので、グルーピング判定部３２７は、グルーピング判定処理を終了する。
【０１３４】
次に、グルーピング判定部３２７は、サブブロックの位置を示す変数ｂの初期値をｂ＝０に設定する（ＯＰ３２）。
【０１３５】
グルーピング判定部３２７は、サブブロックｂのパワー変化率ＰｏｗＲａｔｉｏ［ｂ］を、例えば、式２および式３を用いて求める。グルーピング判定部３２７は、サブブロックｂのパワー変化率ＰｏｗＲａｔｉｏ［ｂ］がグルーピング決定用の閾値４より大きいか否かを判定する（ＯＰ３３）。サブブロックｂのパワー変化率ＰｏｗＲａｔｉｏ［ｂ］がグルーピング決定用の閾値４以下の場合には（ＯＰ３３：Ｎｏ）、グルーピング判定部３２７は、サブブロックｂはグループ境界ではないと判定する（ＯＰ３４）。グルーピング判定部３２７は、サブブロックｂのグルーピング判定結果をｇｒｏｕｐ［ｂ］＝０とする（ＯＰ３４）。その後、処理がＯＰ３６に進む。
【０１３６】
サブブロックｂのパワー変化率ＰｏｗＲａｔｉｏ［ｂ］がグルーピング決定用の閾値４より大きい場合には（ＯＰ３３：Ｙｅｓ）、グルーピング判定部３２７は、サブブロックｂはグループ境界であると判定する（ＯＰ３５）。グルーピング判定部３２７は、サブブロックｂのグルーピング判定結果をｇｒｏｕｐ［ｂ］＝１とする（ＯＰ３５）。その後、処理がＯＰ３６に進む。
【０１３７】
グルーピング判定部３２７は、サブブロックの位置を示す変数ｂに１を加算する（ＯＰ３６）。次に、グルーピング判定部３２７は、変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値か否かを判定する（ＯＰ３７）。すなわち、グルーピング判定部３
２７は、１フレームに含まれるすべてのサブブロックについて、グルーピング判定結果が求められたか否かを判定する。
【０１３８】
変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値である場合には（ＯＰ３７：Ｙｅｓ）、グルーピング判定結果が求められていないサブブロックがあることが示される。グルーピング判定部３２７は、残りのサブブロックのグルーピング判定結果を求めるため、ＯＰ３３〜ＯＰ３７の処理を繰り返し実行する。
【０１３９】
変数ｂが１フレームに含まれるサブブロックの数Ｍ以上の場合には（ＯＰ３７：Ｎｏ）、フレームに含まれるすべてのサブブロックについてグルーピング判定結果が求められたことが示される。グルーピング判定部３２７は、フレームに含まれる全サブブロックのグルーピング判定結果ｇｒｏｕｐ［ｂ］をグルーピング部３５に出力して、グルーピング判定処理を終了する。
【０１４０】
図１４は、グルーピング判定部３２７が実行するグルーピング判定処理の結果の例を示す図である。図１４に示される例では、１フレームはサブブロックＢ０からＢ７（ＳＨＯＲＴブロックｗ０〜ｗ７）の８つに分割される。図１４に示される例では、フレームに２つのアタックが含まれ、アタックは、サブブロックＢ１とサブブロックＢ４と含まれる。また、図１４に示される例では、グルーピング決定用の閾値４は、アタック検出用の閾値１よりも大きい値である。
【０１４１】
図１４に示される例では、アタック検出用の閾値１を超えるパワー変化率のサブブロックＢ１とサブブロックＢ４とが存在する。サブブロックＢ１の音声信号のパワー変化率は、グルーピング決定用の閾値４も超える。一方、サブブロックＢ４の音声信号のパワー変化率は、グルーピング決定用の閾値４を超えない。従って、図１２及び図１３において説明されたグルーピング判定処理が実行された結果、サブブロックＢ１のグルーピング判定結果はｇｒｏｕｐ［Ｂ１］＝１となり、サブブロックＢ４のグルーピング判定結果はｇｒｏｕｐ［Ｂ４］＝０となる。すなわち、サブブロックＢ０とサブブロックＢ１との境界はグループ境界として選択されるが、サブブロックＢ３とサブブロックＢ４との境界はグループ境界として選択されない。
【０１４２】
従って、図１４に示される例では、グルーピング部３５は、グループｇ０にサブブロックＢ０が含まれ、グループｇ１にサブブロックＢ１〜Ｂ７が含まれるようにグルーピングを行う。
【０１４３】
以上より、アタック検出用の閾値１よりも大きい値のグルーピング決定用の閾値４を用いると、１フレーム中に２つ以上のアタックが含まれる場合に、より強いパワーのアタックを優先してグルーピングすることができる。より強いパワーのアタックほど、聴く人間は音質の劣化を知覚しやすいので、より強いパワーのアタックを優先してグルーピングすることによって、主観的な音質を向上することができる。また、１フレーム中に２つ以上のアタックが含まれる場合には、アタック毎にグルーピングするよりも、より強いアタックを優先して（閾値４を超えるパワー変化率のサブブロックのみで）グルーピングする方が、グループ数が少なくなり、符号化の効率が上がる。
【０１４４】
グルーピング部３５は、直交変換部３４から直交変換された１フレーム処理分の音声信号と、アタック検出部３２（グルーピング判定部３２７）から各サブブロックのグルーピング判定結果とを入力として得る。グルーピング部３５は、各サブブロックのグルーピング判定結果がｇｒｏｕｐ［ｂ］＝０からｇｒｏｕｐ［ｂ］＝１に変化するサブブロック間の境界をグループ境界として定め、グルーピングを行う。グルーピング部３５は、直交変換された１フレーム処理分の音声信号をグルーピングし、量子化部３６に出力する。
【０１４５】
量子化部３６は、グルーピングされた１フレーム処理分の音声信号入力として得て、それぞれのグループ毎に量子化する。量子化された１フレーム処理分の音声信号は、ビットストリーム生成部３７に入力され、符号化されてビットストリームに変換される。符号化された１フレーム処理分の音声信号は、出力部３８を経由して、主記憶装置２のＡＡＣファイルの一部として格納される。
【０１４６】
＜＜第１実施形態の作用効果＞＞
第１実施形態で説明された音声符号化装置１は、音声ファイルをＭＰＥＧ−２  ＡＡＣファイルに変換する際に、アタックを含む可能性のあるアタック候補のサブブロックを検出する。音声符号化装置１は、検出されたアタック候補のサブブロックについて、より詳細なサンプル単位で調査を行い、アタック候補のサブブロック、又は、アタック候補のサブブロックの直前のサブブロックにアタックの開始点が含まれることを検出する。さらに、音声符号化装置１は、アタックの開始点が検出されたアタック候補のサブブロック、又は、アタック候補のサブブロックの直前のサブブロックの音声信号のパワーを補正する。音声符号化装置１は、補正されたサブブロックの音声信号のパワーからパワー変化率を算出し、アタック候補のサブブロック、又は、アタック候補のサブブロックの直前のサブブロックにアタックが含まれることを検出する。したがって、アタックの開始点が検出されたアタック候補のサブブロック、又は、アタック候補のサブブロックの直前のサブブロックの音声信号のパワーが補正されることによって、アタックの検出の精度が上がる。アタックの検出の精度が上がることによって、適切なグルーピングが行われる。適切なグルーピングが行われることによって、量子化誤差によるプリエコーの発生が抑えられ、符号化された音声データの再生時の音質が向上する。
【０１４７】
また、音声符号化装置１のグルーピング判定部３２７は、グルーピング判定処理の際に、アタック検出用の閾値１よりも大きい値（厳しい条件）のグルーピング決定用の閾値４を用いることができる。アタック検出用の閾値１よりも大きい値のグルーピング決定用の閾値４が用いられる場合には、１フレーム中に２以上のアタックが含まれていても、より強いパワーを持つアタック（閾値４を超えるパワー変化率のサブブロック）が優先されてグルーピングされる。より強いパワーを持つアタックが優先されてグルーピングされることによって、グループの数を少なくすることができ、符号化の効率が上がる。
【０１４８】
図１５は、第１実施形態で説明された音声符号化装置１による音声符号化の実行結果の例を示す図である。図１５では、音声信号（原音）の時間信号の波形と周波数信号の波形とが示される。また、図１５では、アタック候補のサブブロックまたはアタック候補の直前のサブブロックの音声信号のパワーの補正を行わない装置によってＭＰＥＧ−２  ＡＡＣ−ＬＣ（Ｌｏｗ  Ｃｏｍｐｌｅｘｉｔｙ）で符号化された原音の再生音声信号の周波数信号が示される。さらに、図１５では、第１実施形態で説明された音声符号化装置１によってＭＰＥＧ−２  ＡＡＣ−ＬＣで符号化された原音の再生音声信号の周波数信号が示される。これらの音声信号の波形は、いずれも同じ時間軸上で示される。図１５では、原音は、４８ｋＨｚでサンプリングされた音声信号が示される。また、図１５では、符号化方式としてＭＰＥＧ−２  ＡＡＣ−ＬＣ、ビットレート６４ｋｂｐｓを用いて符号化を行った場合の例が示される。
【０１４９】
図１５において、原音の波形中で、丸で囲まれているアタックＡ１は、ブロック境界に存在するアタックである。サブブロックの音声信号のパワーの補正が行われずに符号化された場合の音声信号の波形を注目すると、アタックＡ１の前にプリエコーによる波形が表れている。これは、装置がブロック境界に存在するアタックＡ１を検出できずに、ＬＯＮＧブロックで符号化してしまったために、プリエコーが発生したと考えられる。
【０１５０】
一方、第１実施形態の音声符号化装置１によって符号化された音声信号の波形を注目すると、アタックＡ１の前には波形が表れておらず、プリエコーも発生していないことがわかる。すなわち、第１実施形態の音声符号化装置１は、アタックＡ１を検出し、ＳＨＯＲＴブロックでグルーピングして符号化を行ったため、プリエコーの発生を防ぐことができたものと考えられる。
【０１５１】
以上より、第１実施形態の音声符号化装置１によると、音声信号を符号化する際の音質の劣化を少なくすることができ、結果として、符号化による音声信号を再生した場合の音質が改善する。
【０１５２】
第１実施形態では、ＭＰＥＧ−２  ＡＡＣを用いる音声符号化装置１について説明された。音声符号化装置１に適用できる符号化技術は、ＭＰＥＧ−２  ＡＡＣに限られない。音声符号化装置１に適用できる符号化技術として、例えば、ＭＰＥＧ−４  ＡＡＣ，ＭＰＥＧ−２  ＨＥ−ＡＡＣ，ＭＰＥＧ−４  ＨＥ−ＡＡＣ，ＭＰＥＧ−４  ＨＥ−ＡＡＣ  ｖ２，ＭＰＥＧ  Ｓｏｒｒｏｕｎｄ，ＭＰＥＧ−４  ＢＳＡＣ等がある。
【０１５３】
＜＜第１実施形態のハードウェア構成＞＞
図１６は、第１実施形態のハードウェア構成の例を示す図である。第１実施形態の音声符号化装置１は、情報処理装置（コンピュータ）を適用できる。情報処理装置とは、例えば、パーソナルコンピュータのような汎用のコンピュータや音声の符号化を実施する専用のコンピュータ等である。また、音声符号化装置１は、ビデオカメラやミュージックプレイヤーなどの音声をディジタルデータとして録音可能な装置を適用できる。
【０１５４】
音声符号化装置１００は、入力装置１０１，主記憶装置１０２，プロセッサ１０３，二次記憶装置１０４，媒体読み取り装置１０５，ネットワークインタフェース１０６のような周辺装置とのインタフェース装置，及び出力装置１０７を含む。また、これらは、バス１０８でそれぞれ接続されている。主記憶装置１０２及び二次記憶装置１０４はコンピュータ読み取り可能な記録媒体である。
【０１５５】
音声符号化装置１００は、プロセッサ１０３が記録媒体に記憶された音声符号化プログラム１０４ｐを主記憶装置１０２の作業領域にロードして実行する。音声符号化プログラム１０４ｐの実行を通じて周辺装置が制御されることによって、所定の目的に合致した機能を実現することができる。
【０１５６】
プロセッサ１０３は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｓｅｓｓｉｎｇ  Ｕｎｉｔ）や、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）である。主記憶装置１０２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）を含む。
【０１５７】
二次記憶装置１０４は、例えば、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）,又はハードディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）で
ある。
【０１５８】
また、音声符号化装置１００は、媒体読み取り装置１０５を備えており、媒体読み取り装置１０５にセットされたリムーバブルメディア、すなわち可搬記録媒体からデータを読み取ることができる。リムーバブルメディアは、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ、或いは、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）やＤＶＤ（Ｄｅｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）のようなディスク記録媒体である。
【０１５９】
ネットワークインタフェース１０６は、有線のネットワーク、および、無線のネットワ
ークと接続する。通信インタフェース装置は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インタフェースボートや、無線通信のための無線通信回路である。
【０１６０】
さらに、周辺装置は、キーボードやポインティングデバイスのような入力装置１０１や、ディスプレイ装置やプリンタのような出力装置１０７を含む。入力装置１０１がユーザに操作されることによって、音声符号化プログラムが起動する。また、出力装置１０７は、ユーザに音声符号化プログラムの操作画面等を提供する。
【０１６１】
また、入力装置１０１はマイクロフォンのような音声の入力装置を含むことができ、マイクロフォンで収集された音声は二次記憶装置１０４に格納されてもよい。さらに、２次記憶装置１０４に格納された音声データは、アナログ−ディジタル変換によりディジタル信号の音声データに変換されてもよい。マイクロフォンで収集され、アナログ―ディジタル変換でディジタル信号に変換された音声データは、音声符号化プログラム１０４が実行されることによって、ＭＰＥＧ−２  ＡＡＣファイルに符号化されることができる。また、出力装置１０７は、スピーカのような音声の出力装置を含むことができ、音声符号化プログラム１０４によって生成されたＭＰＥＧ−２  ＡＡＣファイルの再生音声を出力することができる。
【０１６２】
音声符号化装置１００として使用されるコンピュータは、プロセッサ１０３が実行する音声符号化プログラム１０４ｐの音声符号化プロセスにおいて、周辺装置が制御されることによって、フレーム分割部３１，アタック検出部３２，ブロック判定部３３，直交変換部３４，グルーピング部３５，量子化部３６，ビットストリーム生成部３７，及び出力部３８としての機能を実現する。また、音声符号化装置１００として使用されるコンピュータは、プロセッサ１０３が実行する音声符号化プログラム１０４ｐの音声符号化プロセスにおいて、サブブロック分割部３２２，ブロックパワー算出部３２３，補正部３２４，パワー変化率算出部３２５，アタック決定部３２６，グルーピング判定部３２７としての機能を実現する。さらに、音声符号化装置１００として使用されるコンピュータは、プロセッサ１０３による記録媒体上の音声符号化プログラム１０４ｐの実行を通じて、アタック候補決定部３２４ａ，アタック検査部３２４ｂ，及びブロックパワー補正部３２４ｃとしての機能を実現する。メモリ３２４ｍは、静的に又はプログラムの実行過程で主記憶装置１０２又は二次記憶装置１０４の記憶領域に作成される。
【０１６３】
＜＜第１実施形態の第１変形例＞＞
第１実施形態におけるアタック候補決定部３２４ａ，アタック検査部３２４ｂ，ブロックパワー補正部３２４ｃは、以下に説明されるような処理をそれぞれ行ってもよい。
【０１６４】
図１７Ａ及び図１７Ｂは、第１実施形態の第１変形例におけるアタック候補決定部３２４ａが実行するアタック候補検出処理のフローを示す図である。アタック候補決定部３２４ａは、１フレームに含まれる各サブブロックの音声信号のパワーをブロックパワー算出部３２３から入力として得ると、アタック候補検出処理を開始する。
【０１６５】
アタック候補決定部３２４ａは、サブブロックの位置を示す変数ｂの初期値として、ｂ＝０を設定する（ＯＰ４１）。１フレームが８個のサブブロックに分割される場合には、変数ｂの範囲は、０から７の範囲である。また、アタック候補決定部３２４ａは、フレームにアタックが含まれるか否かを示す変数ａｔｔａｃｋの初期値をａｔｔａｃｋ＝０とする（ＯＰ４１）。ａｔｔａｃｋ＝０の場合には、フレームにアタックが含まれないことが示される。ａｔｔａｃｋ＝１の場合には、フレームにアタックが含まれることが示される。
【０１６６】
アタック候補決定部３２４ａは、サブブロックｂのパワー変化率ＰｏｗＲａｔｉｏ＿ｔ
ｍｐ［ｂ］を、例えば、式２および式３を用いて求める。アタック候補決定部３２４ａは、サブブロックｂのパワー変化率ＰｏｗＲａｔｉｏ＿ｔｍｐ［ｂ］が閾値１（ｔｈｒ１）より大きいか否かを判定する（ＯＰ４２）。
【０１６７】
サブブロックｂのパワー変化率が閾値１より大きい場合には（ＯＰ４２：Ｙｅｓ）、サブブロックｂはアタックを含むことが検出される。アタック候補決定部３２４ａは、サブブロックｂにアタックが含まれることが検出された、すなわち、フレームにアタックが含まれることが検出されたので、ａｔｔａｃｋ＝１に更新する（ＯＰ４３）。次に処理がＯＰ４６に進む。
【０１６８】
サブブロックｂのパワー変化率が閾値１以下の場合には（ＯＰ４２：Ｎｏ）、アタック候補決定部３２４ａは、変数ｂに１を加算する（ＯＰ４４）。アタック候補決定部３２４ａは、変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値であるかを判定する（ＯＰ４５）。
【０１６９】
変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値である場合には（ＯＰ５：Ｙｅｓ）、アタック候補決定部３２４ａは、処理をＯＰ４２に進め、次のサブブロックに対してＯＰ４２からＯＰ４５の処理をくりかえし実施する。
【０１７０】
変数ｂが１フレームに含まれるサブブロックの数Ｍ以上の値である場合には（ＯＰ４５：Ｎｏ）、フレームに含まれるすべてのサブブロックに対してＯＰ４２の処理を実行したことが示される。アタック候補決定部３２４ａは、処理をＯＰ４６に進める。
【０１７１】
アタック候補決定部３２４ａは、ａｔｔａｃｋ＝１であるか否かを判定する（ＯＰ４６）。ａｔｔａｃｋ＝１である場合には（ＯＰ４６：Ｙｅｓ）、フレームにアタックが含まれていることが検出されているので、アタック候補決定部３２４ａは、アタック候補のサブブロックを検出する必要がない。アタック候補決定部３２４ａは、サブブロックがアタック候補であるか否かを示すａｔｔａｃｋ＿ｂａｎｄ［ｂ］をすべてのサブブロックについてａｔｔａｃｋ＿ｂａｎｄ［ｂ］＝０とする（ＯＰ５３）。アタック候補決定部３２４ａは、全サブブロックのアタック候補検出結果ａｔｔａｃｋ＿ｂａｎｄ［ｂ］をアタック検査部３２４ｂに出力して、アタック候補検出処理を終了する。ａｔｔａｃｋ＿ｂａｎｄ［ｂ］＝０は、サブブロックｂがアタック候補ではないことを示す。ａｔｔａｃｋ＿ｂａｎｄ［ｂ］＝１は、サブブロックｂがアタック候補であることを示す。
【０１７２】
ａｔｔａｃｋ＝１でない場合には（ＯＰ４６：Ｎｏ）、フレームにアタックは検出されていないことが示される。次に、アタック候補決定部３２４ａは、アタック候補を検出するための処理を行う。アタック候補決定部３２４ａは、サブブロックの位置を示す変数ｂをｂ＝０に設定する（ＯＰ４７）。
【０１７３】
次に、アタック候補決定部３２４ａは、サブブロックｂのパワー変化率ＰｏｗＲａｔｉｏ＿ｔｍｐ［ｂ］がアタック候補検出用の閾値２（ｔｈｒ２）より大きいか否かを判定する（ＯＰ４８）。すなわち、アタック候補決定部３２４ａは、サブブロックｂがアタック候補であるか否かを判定する。
【０１７４】
サブブロックｂのパワー変化率が閾値２以下の場合には（ＯＰ４８：Ｎｏ）、サブブロックｂはアタック候補でないことが判定される。アタック候補決定部３２４ａは、サブブロックｂのアタック候補検出結果をａｔｔａｃｋ＿ｂａｎｄ［ｂ］＝０と記録する（ＯＰ４９）。その後、処理がＯＰ５１に進む。
【０１７５】
サブブロックｂのパワー変化率が閾値２より大きい場合には（ＯＰ４８：Ｙｅｓ）、サ
ブブロックｂがアタック候補であることが判定される。アタック候補決定部３２４ａは、アタック候補検出結果をａｔｔａｃｋ＿ｂａｎｄ［ｂ］＝１と記録する（ＯＰ５０）。その後、処理がＯＰ５１に進む。
【０１７６】
次に、アタック候補決定部３２４ａは、サブブロックの位置を示す変数ｂに１を加算する（ＯＰ５１）。アタック候補決定部３２４ａは、変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値であるかを判定する（ＯＰ５２）。すなわち、アタック候補決定部３２４ａは、フレームに含まれるサブブロックでアタック候補検出処理が行われていないサブブロックが残っているか否かを判定する。１フレームがサブブロックＢ０からＢ７の８個のサブブロックに分割される場合には、アタック候補決定部３２４ａは、変数ｂが８より小さい値か否かを判定する。
【０１７７】
変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値である場合には（ＯＰ５２：Ｙｅｓ）、アタック候補検出処理が行われていないサブブロックが存在することが示される。この場合、アタック候補決定部３２４ａは、処理をＯＰ４８に進め、ＯＰ４８からＯＰ５２の処理を繰り返し実行する。
【０１７８】
変数ｂが１フレームに含まれるサブブロックの数Ｍ以上の値である場合には（ＯＰ５２：Ｎｏ）、フレームに含まれるすべてのサブブロックに対してアタック候補検出処理を実行完了したことが示される。この場合、アタック候補決定部３２４ａは、アタック候補検出結果として各サブブロックのａｔｔａｃｋ＿ｂａｎｄ［ｂ］をアタック検査部３２４ｂに出力して、アタック候補検出処理を終了する。
【０１７９】
アタック検査部３２４ｂは、各サブブロックのアタック検出結果ａｔｔａｃｋ＿ｂａｎｄ［ｂ］がアタック候補決定部３２４ａから入力されると、アタック特定処理を開始する。
【０１８０】
図１８は、第１変形例におけるアタック検査部３２４ｂが実行するアタック特定処理のフローを示す図である。
【０１８１】
アタック検査部３２４は、ａｔｔａｃｋ＝１であるか否かを判定する（ＯＰ６１）。変数ａｔｔａｃｋ＝１である場合には（ＯＰ６１：Ｙｅｓ）、フレームにアタックが含まれていることが検出されているので、アタック検査部３２４ｂは、アタック特定処理を実行する必要がない。アタック検査部３２４ｂは、アタック特定処理を終了する。
【０１８２】
ａｔｔａｃｋ＝１でない場合には（ＯＰ６１：Ｎｏ）、フレームにアタックは検出されていないことが示される。アタック検査部３２４ｂは、サブブロックの位置を示す変数ｂの初期値をｂ＝０に設定する（ＯＰ６２）。
【０１８３】
次に、アタック検査部３２４ｂは、サブブロックｂのアタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ［ｂ］＝１であるか否かを判定する（ＯＰ６３）。すなわち、アタック検査部３２４ｂは、サブブロックｂがアタック候補のサブブロックであるか否かを判定する。
【０１８４】
サブブロックｂのアタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ［ｂ］＝１でない場合には（ＯＰ６３：Ｎｏ）、サブブロックｂはアタック候補のサブブロックでないことが示される。アタック検査部３２４ｂは、サブブロックｂのパワー補正が必要か否かの判定結果であるパワー補正判定結果をｒｅｖｉｓｅ＿ｂａｎｄ［ｂ］＝０と記録する（ＯＰ６４）。サブブロックｂにパワー補正が不要である場合には、パワー補正判定結果はｒｅｖｉｓｅ＿ｂａｎｄ［ｂ］＝０と示される。サブブロックｂにパワー補正が必要である場合
には、パワー補正判定結果はｒｅｖｉｓｅ＿ｂａｎｄ［ｂ］＝１と示される。また、アタック検査部３２４ｂは、サブブロックｂにおいてアタックの開始点を含むサンプルの位置を示す変数をａｔｔａｃｋ＿ｐｏｓ［ｂ］＝−１と記録する（ＯＰ６４）。変数ａｔｔａｃｋ＿ｐｏｓ［ｂ］＝−１は、サブブロックｂにアタックの開始点が含まれるサンプルは含まれていないことを示す。その後、アタック検査部３２４ｂは、処理をＯＰ７０に移す。
【０１８５】
サブブロックｂのアタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ［ｂ］＝１である場合には（ＯＰ６３：Ｙｅｓ）、サブブロックｂはアタック候補のサブブロックであることが示される。この場合、アタックの開始点は、アタック候補であるサブブロックｂ、又は、サブブロックｂの直前のサブブロックｂ−１のどちらかに含まれる可能性が高い。アタック検査部３２４ｂは、アタックの開始点が含まれるサンプルを特定するために、アタック候補のサブブロックｂとサブブロックｂの直前のサブブロックｂ−１とをサンプル単位で調査する。
【０１８６】
アタック検査部３２４ｂは、フレーム内でのサンプルの位置を示す変数ｉの初期値をｉ＝ｂａｎｄ＿ｔｏｐ［ｂ−１］に設定する（ＯＰ６５）。ｂａｎｄ＿ｔｏｐ［ｂ−１］は、アタック候補のサブブロックｂの直前のサブブロックに含まれる先頭のサンプルの位置を示す。
【０１８７】
次に、アタック検査部３２４ｂは、サンプルｉに含まれる音声信号のパワー変化率ｓｕｂＰｏｗＲａｔｉｏ［ｉ］を算出し、アタックの開始点を特定するための閾値３（ｔｈｒ３）より大きいか否かを判定する（ＯＰ６６）。すなわち、アタック検査部３２４ｂは、サンプルｉにアタックの開始点が含まれているか否かを判定する。
【０１８８】
サンプルｉに含まれる音声信号のパワー変化率ｓｕｂＰｏｗＲａｔｉｏ［ｉ］がアタックの開始点特定用の閾値３より大きい場合には（ＯＰ６６：Ｙｅｓ）、サンプルｉにアタックの開始点が含まれることが示される。アタック検査部３２４ｂは、パワー補正判定結果ｒｅｖｉｓｅ＿ｂａｎｄと、アタックの開始点が含まれるサンプルの位置を示すａｔｔａｃｋ＿ｐｏｓとを記録する（ＯＰ６７）。サンプルｉがアタック候補であるサブブロックｂに含まれている場合には、アタック検査部３２４ｂは、パワー補正結果をｒｅｖｉｓｅ＿ｂａｎｄ［ｂ］＝１、アタックの開始点が含まれるサンプルの位置を示す変数ａｔｔａｃｋ＿ｐｏｓ［ｂ］＝ｉと記録する。サンプルｉがアタック候補の直前のサブブロックｂ−１に含まれる場合には、アタック検査部３２４ｂは、パワー補正結果をｒｅｖｉｓｅ＿ｂａｎｄ［ｂ−１］＝１、アタックの開始点が含まれるサンプルの位置を示す変数ａｔｔａｃｋ＿ｐｏｓ［ｂ−１］＝ｉと記録する。その後、処理がＯＰ７０に進む。
【０１８９】
サンプルｉに含まれる音声信号のパワー変化率ｓｕｂＰｏｗＲａｔｉｏ［ｉ］がアタックの開始点を特定するための閾値３以下の場合には（ＯＰ６６：Ｎｏ）、サンプルｉにアタックの開始点が含まれないことが示される。アタック検査部３２４ｂは、サンプルｉの調査を終え、次のサンプルを調査するために、サンプルの位置を示す変数ｉに１を加算する（ＯＰ６８）。
【０１９０】
アタック検査部３２４ｂは、サンプルの位置を示す変数ｉが現在調査中のサブブロックｂの次のサブブロックｂ＋１の先頭のサンプル位置を示す値（ｂａｎｄ＿ｔｏｐ［ｂ＋１］）より小さいか否かを判定する（ＯＰ６９）。すなわち、アタック検査部３２４ｂは、サブブロックｂおよび直前のサブブロックｂ−１に含まれるすべてのサンプルの調査が終了したか否かを判定する。
【０１９１】
サンプルの位置を示す変数ｉが現在調査中のサブブロックｂの次のサブブロックｂ＋１
の先頭のサンプル位置を示す値より小さい場合には（ＯＰ６９：Ｙｅｓ）、サブブロックｂに未調査のサンプルが残っていることが示される。アタック検査部３２４ｂは、ＯＰ６６〜ＯＰ６９の処理を繰り返し実行する。
【０１９２】
サンプル位置を示す変数ｉが現在調査中のサブブロックｂの次のサブブロックｂ＋１の先頭のサンプル位置を示す値以上の場合には（ＯＰ６９：Ｎｏ）、サブブロックｂに含まれるすべてのサンプルの調査が終了したことが示される。その後、処理がＯＰ７０に移る。
【０１９３】
サブブロックｂについて、アタックの調査が終了すると（ＯＰ６４、ＯＰ６７,ＯＰ６
９：Ｙｅｓ）、アタック検査部３２４ｂは、次のサブブロックについてアタックの検出を行うために、サブブロックの位置を示す変数ｂに１を加算する（ＯＰ７０）。アタック検査部３２４ｂは、サブブロックの位置を示す変数ｂが１つのフレームに含まれるサブブロックの数Ｍよりも小さいか否かを判定する（ＯＰ７１）。すなわち、アタック検査部３２４ｂは、フレーム中にアタック特定処理が実行されていないサブブロックがあるか否かを判定する。
【０１９４】
サブブロックの位置を示す変数ｂが１つのフレームに含まれるサブブロックの数Ｍよりも小さい場合には（ＯＰ７１：Ｙｅｓ）、フレーム中にアタック特定処理が実行されていないサブブロックがあることが示される。アタック検査部３２４ｂは、ＯＰ６３〜ＯＰ７０の処理を繰り返し実行する。
【０１９５】
サブブロックの位置を示す変数ｂが１つのフレームに含まれるサブブロックの数Ｍ以上の場合には（ＯＰ７１：Ｎｏ）、フレーム中の全てのサブブロックについてアタック特定処理が実行されたことが示される。アタック検査部３２４ｂは、各サブブロックのパワー補正判定結果ｒｅｖｉｓｅ＿ｂａｎｄ［ｂ］とａｔｔａｃｋ＿ｐｏｓ［ｂ］とをブロックパワー補正部３２４ｃに出力して、アタック特定処理を終了する。
【０１９６】
図１８に示されるアタック特定処理においては、アタック検査部３２４ｂは、まず、アタック候補のサブブロックの直前のサブブロックからアタックの開始点の調査を行う。アタック候補のサブブロックの直前のサブブロックからアタックの開始点が検出されない場合に、アタック検査部３２４ｂは、アタック候補のサブブロックのアタックの開始点の調査を行う。しかしながら、アタック検査部３２４ｂは、アタックの開始点の調査をアタック候補の直前のサブブロックから行うことに限定されず、アタック候補のサブブロックの調査から行ってもよい。
【０１９７】
ブロックパワー補正部３２４ｃは、アタック検査部３２４ｂから各サブブロックのパワー補正判定結果ｒｅｖｉｓｅ＿ｂａｎｄ［ｂ］とａｔｔａｃｋ＿ｐｏｓ［ｂ］とを入力されると、パワー補正処理を開始する。
【０１９８】
図１９は、第１変形例におけるブロックパワー補正部３２４ｃが実行するパワー補正処理を示す図である。図１９では、図６に示される例における入力音声信号のサブブロックＢ１およびサブブロックＢ２が抽出されて示されている。図１９に示される入力音声は、サブブロックＢ１とサブブロックＢ２にアタックがまたがっており、サブブロックＢ１のパワーが補正される必要がある。ブロックパワー補正部３２４ｃは、サブブロックＢ２に含まれるアタックのパワー分だけ抽出して、サブブロックＢ１のパワー補正を行う。
【０１９９】
（１）ブロックパワー補正部３２４ｃは、アタック検査部３２４ｂによって特定されたアタックの開始点が含まれるサンプルａｔｔａｃｋ＿ｐｏｓ［ｂ］のパワーをピークパワーｐｅａｋ＿ｐｏｗとする。
【０２００】
（２）ブロックパワー補正部３２４ｃは、ピークパワーからｇ［ｄｂ］（ｇ＜０）だけ減衰したパワーの閾値Ｐｔｈを以下の式５を用いて決定する。
【０２０１】
【数５】
2011008135.tif 000007
【０２０２】
（３）パワー補正部３２４は、各サンプルのパワーと閾値Ｐｔｈとを比較して、サンプルのパワーが閾値Ｐｔｈを下回るサンプルの位置ａｔｔａｃｋ＿ｅｎｄを探索する。
【０２０３】
（４）ブロックパワー補正部３２４ｃは、サブブロックＢ２の先頭のサンプルｂａｎｄ＿ｔｏｐ［Ｂ２］からパワーが閾値Ｐｔｈを下回るサンプルａｔｔａｃｋ＿ｅｎｄまでのサンプルのパワーの和Δｐｏｗを以下の式６を求める。
【０２０４】
【数６】
2011008135.tif 000008
【０２０５】
（５）ブロックパワー補正部３２４ｃは、サブブロックＢ１のパワーにΔｐｏｗを加算し、サブブロックＢ２のパワーにΔｐｏｗを減算して、補正する。
【０２０６】
【数７】
2011008135.tif 000009
このように補正することによって、サブブロックＢ１とサブブロックＢ２にまたがって存在するアタックが、サブブロックＢ１のみに存在するように見せかけることができる。
【０２０７】
図２０は、図１９で示された第１変形例におけるブロックパワー補正部３２４ｃが実行するパワー補正処理のフローである。
【０２０８】
ブロックパワー補正部３２４ｃは、フレームにアタックが含まれることを示す変数ａｔｔａｃｋがａｔｔａｃｋ＝１であるか否かを判定する（ＯＰ８１）。ａｔｔａｃｋ＝１である場合には（ＯＰ８１：Ｙｅｓ）、アタック候補決定部３２４ａによって、フレームにアタックが含まれていることが検出されている、すなわち、アタック検出用の閾値１より大きいパワー変化率のサブブロックが存在することが示される。したがって、ブロックパワー補正部３２４ｃは、パワー補正処理を実行する必要がない。ブロックパワー補正部３２４ｃは、パワー補正処理を終了する。
【０２０９】
ａｔｔａｃｋ＝１でない場合には（ＯＰ８１：Ｎｏ）、ブロックパワー補正部３２４ｃは、サブブロックの位置を示す変数ｂの初期値をｂ＝０に設定する（ＯＰ８２）。ブロックパワー補正部３２４ｃは、サブブロックｂのパワー補正判定結果がｒｅｖｉｓｅ＿ｂａｎｄ［ｂ］＝１であるか否かを判定する（ＯＰ８３）。すなわち、ブロックパワー補正部３２４ｃは、サブブロックｂはパワー補正が必要であるか否かを判定する。
【０２１０】
サブブロックｂのパワー補正判定結果がｒｅｖｉｓｅ＿ｂａｎｄ［ｂ］＝０である場合には（ＯＰ８３：Ｎｏ）、サブブロックｂはパワー補正が必要ないことが示される。その後、処理がＯＰ８５に進む。
【０２１１】
サブブロックｂのパワー補正判定結果がｒｅｖｉｓｅ＿ｂａｎｄ［ｂ］＝１である場合には（ＯＰ８３：Ｙｅｓ）、サブブロックｂはパワー補正が必要であることが示される。ブロックパワー補正部３２４ｃは、Δｐｏｗを算出し、サブブロックｂのパワー補正を行う（ＯＰ８４）。図１９で説明されたように、ブロックパワー補正部３２４ｃは、まず、ブロックパワー補正部３２４ｃは、閾値Ｐｔｈを求める。次に、ブロックパワー補正部３２４ｃは、Δｐｏｗを求める。ブロックパワー補正部３２４ｃは、サブブロックｂのパワーに、Δｐｏｗを加算して補正する。それとともに、ブロックパワー補正部３２４ｃは、サブブロックｂ＋１のパワーからΔｐｏｗを減算して補正する。
【０２１２】
ブロックパワー補正部３２４ｃは、サブブロックｂのパワー補正が終了すると、サブブロックの位置を示す変数ｂに１を加算する（ＯＰ８５）。ブロックパワー補正部３２４ｃは、サブブロックの位置を示す変数ｂが１つのフレームに含まれるサブブロックの数Ｍよりも小さいか否かを判定する（ＯＰ８６）。すなわち、ブロックパワー補正部３２４ｃは、フレーム中にパワー補正処理が実行されていないサブブロックがあるか否かを判定する。
【０２１３】
サブブロックの位置を示す変数ｂが１つのフレームに含まれるサブブロックの数Ｍよりも小さい場合には（ＯＰ８６：Ｙｅｓ）、フレーム中にパワー補正処理が実行されていないサブブロックがあることが示される。ブロックパワー補正部３２４ｃは、ＯＰ８３〜ＯＰ８６の処理を繰り返し実行する。
【０２１４】
サブブロックの位置を示す変数ｂが１つのフレームに含まれるサブブロックの数Ｍ以上の場合には（ＯＰ８６：Ｎｏ）、フレーム中の全てのサブブロックについてパワー補正処理が実行されたことが示される。ブロックパワー補正部３２４ｃは、パワー補正された各サブブロックのパワーをパワー変化率算出部３２５に出力して、パワー補正処理を終了する。
【０２１５】
その後、音声信号は、補正された各サブブロックのパワーに基づいて、アタック検出、グルーピングがなされ、符号化される。
【０２１６】
＜＜第１実施形態の第２変形例＞＞
第１実施形態のアタック検査部３２４ｂは、アタック候補のサブブロックとアタック候補のサブブロックの直前のサブブロックとをサンプル単位で調査し、アタックの開始点を検出する。これに代えて、アタック検査部３２４ｂは、サブブロック単位でアタックの開始点を検出する。
【０２１７】
アタック検査部３２４ｂは、アタック候補決定部３２４ａからアタック候補検出結果ａｔｔａｃｋ＿ｂａｎｄを入力として得る。アタック検査部３２４ｂは、アタック候補のサブブロックとアタック候補のサブブロックの直前のサブブロックとについて、アタックの開始点を検出する処理を実行する。
【０２１８】
まず、アタック検査部３２４ｂは、サブブロックｂまでの過去の電力の平均パワーａｖｅｐｏｗ＿ｓｈｏｒｔ［ｂ］を求める。例えば、アタック検査部３２４ｂは、サブブロックｂまでの過去の電力の平均パワーａｖｅｐｏｗ＿ｓｈｏｒｔ［ｂ］として、以下の式８に示されるような加重平均を求める。
【０２１９】
【数８】
2011008135.tif 000010
アタック候補決定部３２４ａは、第１実施形態においては、式２を用いて過去の電力の平均パワーａｖｅｐｏｗ［ｂ］を求める場合には、重み係数α＝０．７とし、直前のサブフレームｂ−１までの電力の平均パワーａｖｅｐｏｗ［ｂ−１］の重みを大きくした。これに対して、アタック検査部３２４ｂは、直前のサブフレームｂ−１のパワーの重みを大きくすることによって、アタックによる急激なパワーの変化をとらえることが可能となる。
【０２２０】
アタック検査部３２４ｂは、サブブロックｂのパワー変化率ｐｏｗＲａｔｉｏ＿ｔｍｐ［ｂ］を、過去の平均パワーａｖｅｐｏｗ＿ｓｈｏｒｔ［ｂ］と、サブブロックｂのパワーとから、以下の式９を用いて求める。
【０２２１】
【数９】
2011008135.tif 000011
図２１は第２変形例におけるアタック検査部３２４ｂが実行するアタック特定処理のフローを示す図である。アタック検査部３２４ｂは、アタック候補検出結果ａｔｔａｃｋ＿ｂａｎｄが入力されると、アタック特定処理を実行する。
【０２２２】
アタック検査部３２４ｂは、アタック候補決定部３２４ａから入力されるアタック候補検出結果が、ａｔｔａｃｋ＿ｂａｎｄ＝−１、又は、ａｔｔａｃｋ＿ｂａｎｄ＝０であるか否かを判定する（ＯＰ９１）。アタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ＝−１の場合には、アタック候補となるサブブロックが検出されなかったことが示される。アタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ＝０の場合には、サブブロックＢ０がアタック候補であることが示される。アタック候補のサブブロックが検出されなかった場合、及び、サブブロックＢ０がアタック候補である場合には、アタック検査部３２４ｂは、アタック特定処理を実行しなくてよい。したがって、アタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ＝−１、又は、ａｔｔａｃｋ＿ｂａｎｄ＝０である場合には（ＯＰ９１：Ｙｅｓ）、アタック検査部３２４ｂは、アタック特定結果ａｔｔａｃｋ＿ｂａｎｄ＝−１とし（ＯＰ９７）、アタック特定処理を終了する。アタック特定結果を示す変数ａｔｔａｃｋ＿ｂａｎｄが、ａｔｔａｃｋ＿ｂａｎｄ＝−１である場合、サブブロックに含まれる音声信号のパワーの補正を行う必要のあるサブブロックが存在しないことを示す。
【０２２３】
アタック候補検出結果がａｔｔａｃｋ＿ｂａｎｄ＝−１、又は、ａｔｔａｃｋ＿ｂａｎｄ＝０でない場合には（ＯＰ９１：Ｎｏ）、すなわち、アタック候補検出結果が何れかのサブブロックを指し示す場合には、アタック候補のサブブロックの存在が示される。この場合、アタックの開始点は、アタック候補のサブブロック、又は、アタック候補の直前のサブブロックに含まれる可能性が高い。したがって、アタック検査部３２４ｂは、アタック候補のサブブロックとアタック候補の直前のサブブロックとに対して、アタックの検出の処理を実行する。まず、アタック検査部３２４ｂは、アタック候補の直前のサブブロックからアタックの検出を行うために、サブブロックの位置を示す変数ｂをアタック候補の
直前のサブブロックに設定する（ＯＰ９２）。すなわち、アタック検査部３２４ｂは、ｂ＝ａｔｔａｃｋ＿ｂａｎｄ−１とする。
【０２２４】
次に、アタック検査部３２４ｂは、サブブロックｂのパワー変化率を、例えば、式８及び式９を用いて求める。アタック検査部３２４ｂは、サブブロックｂのパワー変化率ｐｏｗＲａｔｉｏ＿ｔｍｐ［ｂ］がアタックの開始点を検出するための閾値３（ｔｈｒ３）より大きいか否かを判定する（ＯＰ９３）。すなわち、アタック検査部３２４ｂは、サブブロックｂにアタックの開始点が含まれているか否かを判定する。
【０２２５】
サブブロックｂのパワー変化率が閾値３より大きい場合には（ＯＰ９３：Ｙｅｓ）、アタック検査部３２４ｂは、サブブロックｂにアタックの開始点が含まれることを判定する。アタック検査部３２４ｂは、サブブロックｂにアタックの開始点が含まれることを特定し、アタック特定結果ａｔｔａｃｋ＿ｂａｎｄ＝ｂを設定する（ＯＰ９４）。その後、アタック検査部３２４ｂは、アタック特定結果としてａｔｔａｃｋ＿ｂａｎｄをブロックパワー補正部３２４ｃに出力し、アタック特定処理を終了する。
【０２２６】
サブブロックｂのパワー変化率が閾値３以下の場合には（ＯＰ９３：Ｎｏ）、アタック検査部３２４ｂは、次のサブブロックについてアタックの開始点を検出する処理を行うために、変数ｂに１を加算する（ＯＰ９５）。
【０２２７】
アタック検査部３２４ｂは、ＯＰ９５において１を加算された変数ｂが、アタック候補の次のサブブロックの位置（ａｔｔａｃｋ＿ｂａｎｄ＋１）より小さいか否かを判定する（ＯＰ９６）。第２変形例では、アタック検査部３２４ｂは、アタック候補のサブブロックとアタック候補の直前のサブブロックについてのみ、アタックの開始点の検出処理を実行するためである。
【０２２８】
変数ｂがアタック候補の次のサブブロックの位置を示す値より小さい値の場合には（ＯＰ９６：Ｙｅｓ）、アタック検査部３２４ｂは、次のサブブロックについてＯＰ９３〜ＯＰ９６の処理を繰り返し実行する。
【０２２９】
変数ｂがアタック候補の次のサブブロックの位置を示す値以上である場合には（ＯＰ９６：Ｎｏ）、アタック候補のサブブロックとアタック候補の直前のサブブロックとのアタックの開始点の調査が終了し、且つ、アタックの開始点が検出されないことが示される。次に、アタック検査部３２４ｂは、アタック候補及びアタック候補の直前のサブブロックにアタックが検出されなかったので、ａｔｔａｃｋ＿ｂａｎｄ＝−１と記録する（ＯＰ９７）。アタック検査部１２４ｂは、アタック特定結果として、アタックが特定されなかったことを示すａｔｔａｃｋ＿ｂａｎｄ＝−１をブロックパワー補正部３２４ｃに出力し、アタック特定処理を終了する。
【０２３０】
以上のように、アタック検査部３２４ｂが、アタックの開始点を検出する際に、サンプル単位ではなく、サブブロック単位で処理を実行することによって、処理量を少なくすることができる。
【０２３１】
図２１に示されるアタック特定処理においては、アタック検査部３２４ｂは、まず、アタック候補のサブブロックの直前のサブブロックからアタックの開始点の調査を行う。アタック候補のサブブロックの直前のサブブロックからアタックの開始点が検出されない場合に、アタック検査部３２４ｂは、アタック候補のサブブロックのアタックの開始点の調査を行う。しかしながら、アタック検査部３２４ｂは、アタックの開始点の調査をアタック候補の直前のサブブロックから行うことに限定されず、アタック候補のサブブロックの調査から行ってもよい。
【０２３２】
＜＜第１実施形態の第３変形例＞＞
第１実施形態で説明されたグルーピング判定部３２７は、以下に説明される処理を行ってもよい。
【０２３３】
第３変形例では、グルーピング判定部３２７は、グルーピング決定用の閾値４より大きいパワー変化率のサブブロックが複数ある場合でも、フレーム中で最初に閾値４を超えるサブブロックをグループ境界とする。すなわち、グルーピング判定部３２７は、フレーム中で、グルーピング判定結果がｇｒｏｕｐ［１］となるサブブロックｂが検出されると、サブブロックｂとサブブロックｂの直前のサブブロックｂ−１との境界をグループ境界とする。グルーピング判定部３２７は、それ以降のサブブロックについては、閾値４との比較を行わない。
【０２３４】
図２２は、第３変形例におけるグルーピング判定部３２７が実行するグルーピング判定処理のフローを示す図である。グルーピング判定部３２７は、アタック決定部３２６から各サブブロックのアタック検出結果ａｔｔａｃｋ［ｂ］と、パワー変化率算出部３２５から各サブブロックのパワー変化率とを入力として得ると、グルーピング判定処理を開始する。
【０２３５】
グルーピング判定部３２７は、グルーピングを行う単位がＳＨＯＲＴブロックであるか、ＬＯＮＧブロックであるかを判定する（ＯＰ１０１）。グルーピング判定部３２７は、フレームにアタックが検出されるか否か、すなわち、アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックが少なくとも１つあるか否かを判定する。アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックが少なくとも１つある場合には（ＯＰ１０１：Ｙｅｓ）、グルーピングをＳＨＯＲＴブロック単位で行うことが判定される。
【０２３６】
アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックが存在しない場合には（ＯＰ１０１：Ｎｏ）、グルーピングをＬＯＮＧブロック単位で行うことが判定される。グルーピングをＬＯＮＧブロック単位で行うとは、すなわち、グルーピングが行われないことが示されるので、グルーピング判定部３２７は、グルーピング判定処理を終了する。
【０２３７】
グルーピング判定部３２７は、サブブロックの位置を示す変数ｂの初期値をｂ＝０に設定する（ＯＰ１０２）。続いて、グルーピング判定部３２７は、サブブロックｂのグルーピング判定結果の初期値としてｇｒｏｕｐ［ｂ］＝０を設定する（ＯＰ１０３）。
【０２３８】
グルーピング判定部３２７は、サブブロックｂのパワー変化率ＰｏｗＲａｔｉｏ［ｂ］がグルーピング決定用の閾値４（ｔｈｒ４）より大きいか否かを判定する（ＯＰ１０４）。サブブロックｂのパワー変化率ＰｏｗＲａｔｉｏ［ｂ］がグルーピング決定用の閾値４より大きい場合には（ＯＰ１０４：Ｙｅｓ）、グルーピング判定部３２７は、サブブロックｂはグループ境界であると判定する（ＯＰ１０５）。グルーピング判定部３２７は、サブブロックｂのグルーピング判定結果をｇｒｏｕｐ［ｂ］＝１とする（ＯＰ１０５）。この時点で、サブブロックｂと直前のサブブロックｂ−１との境界をグループ境界とすることが決定する。それ以降のサブブロックについては、アタックが含まれていたとしても、グルーピング判定部３２７は、処理を行わず一律にグルーピング判定結果をｇｒｏｕｐ［ｂ］＝０とする。すなわち、サブブロックｂを含め、サブブロックｂ以降のサブブロックに、アタックが含まれていたとしても、１つのグループとしてグルーピングされる。グルーピング判定部３２７は、各サブブロックのグルーピング判定結果ｇｒｏｕｐ［ｂ］をグルーピング部３５に出力して、グルーピング判定処理を終了する。
【０２３９】
サブブロックｂのパワー変化率ＰｏｗＲａｔｉｏ［ｂ］がグルーピング決定用の閾値４
以下の場合には（ＯＰ１０４：Ｎｏ）、グルーピング判定部３２７は、サブブロックｂはグループ境界ではないと判定する（ＯＰ１０６）。グルーピング判定部３２７は、サブブロックｂのグルーピング判定結果をｇｒｏｕｐ［ｂ］＝０とする（ＯＰ１０６）。その後、処理がＯＰ１０７に進む。
【０２４０】
グルーピング判定部３２７は、サブブロックの位置を示す変数ｂに１を加算する（ＯＰ１０７）。次に、グルーピング判定部３２７は、変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値か否かを判定する（ＯＰ１０８）。すなわち、グルーピング判定部３２７は、１フレームに含まれるすべてのサブブロックについて、グルーピング判定結果が求められたか否かを判定する。
【０２４１】
変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値である場合には（ＯＰ１０８：Ｙｅｓ）、グルーピング判定結果が求められていないサブブロックがあるため、グルーピング判定部３２７は、ＯＰ１０３〜ＯＰ１０８の処理を繰り返す。
【０２４２】
変数ｂが１フレームに含まれるサブブロックの数Ｍ以上の場合には（ＯＰ１０８：Ｎｏ）、フレームに含まれるすべてのサブブロックについてグルーピング判定結果が求められたことが示される。このとき、全サブブロックのグルーピング判定結果はｇｒｏｕｐ［ｂ］＝０である。グルーピング判定部３２７は、各サブブロックのグルーピング判定結果ｇｒｏｕｐ［ｂ］をグルーピング部３５に出力し、グルーピング判定処理を終了する。
【０２４３】
図２３は、第３変形例における、グルーピング判定部３２７のグルーピング判定処理の結果の例を示す図である。図２３に示される例では、１フレームはサブブロックＢ０からＢ７（ＳＨＯＲＴブロックｗ０〜ｗ７）の８つに分割される。図２３に示される例では、アタック検出用の閾値１を超えるパワー変化率のサブブロックが、サブブロックＢ１，サブブロックＢ２，サブブロックＢ４である。そのうち、グルーピング判定用の閾値４を超えるパワー変化率のサブブロックは、サブブロックＢ１及びサブブロックＢ２である。
【０２４４】
図２２に示されるグルーピング判定処理が実行された場合には、フレーム中のパワー変化率が最初に閾値４を超えるサブブロックであるサブブロックＢ１のみのグルーピング判定結果がｇｒｏｕｐ［Ｂ１］＝１となる。サブブロックＢ１以降のサブブロックＢ２〜Ｂ７のグルーピング判定結果は、一律にｇｒｏｕｐ［ｂ］＝０となる。サブブロックＢ２に至っては、パワー変化率がグルーピング判定用の閾値４を超えているにもかかわらず、グルーピング判定結果がｇｒｏｕｐ［ｂ］となる。
【０２４５】
従って、図２３に示される例では、各サブブロックのグルーピング判定結果ｇｒｏｕｐ［ｂ］に基づいて、グルーピング部３５は、サブブロックＢ０がグループｇ０に、サブブロックＢ１〜Ｂ７がグループｇ１に含まれるようにグルーピングする。
【０２４６】
＜第２実施形態＞
第１実施形態では、サブブロックのブロック長及び時間長はＳＨＯＲＴブロックと同じであることを前提として、音声符号化装置１について説明がなされた。第２実施形態では、ＳＨＯＲＴブロックよりも短いブロック長および時間長のサブブロックを扱う音声符号化装置について説明される。第２実施形態では、サブブロックのブロック長および時間長はＳＨＯＲＴブロックよりも短く、ＳＨＯＲＴブロックブロック長および時間長を所定数に等分割ものと等しい。
【０２４７】
第２実施形態の音声符号化装置は、第１実施形態の音声符号化装置１と、グルーピング判定部３２７の処理が異なるのみであるため、第２実施形態では、グルーピング判定部についてのみ説明される。その他の処理部については、第１実施形態と共通するため、その
説明は省略される。
【０２４８】
図２４は、第２実施形態における、グルーピング判定部３２７のグルーピング判定処理の例を示す図である。フレームは８つのＳＨＯＲＴブロックｗ０〜ｗ７を含んでおり、そのうち、図２４では、ＳＨＯＲＴブロックｗ０〜ｗ３のみが抽出されて表示されている。また、図２４では、サブブロックは、ＳＨＯＲＴブロックを４等分した時間長である。すなわち、ＳＨＯＲＴブロックは４つのサブブロックを含む。
【０２４９】
グルーピング判定部３２７は、パワー変化率算出部３２５からフレームに含まれる各サブブロックのパワー変化率と、アタック決定部３２６から各サブブロックのアタック検出結果ａｔｔａｃｋ［ｂ］とを入力として得る。なお、各サブブロックのパワー変化率には、補正されたパワーに基づいて算出されたパワー変化率も含まれる。
【０２５０】
グルーピング判定部３２７は、各サブブロックのパワー変化率と、グルーピング決定用の閾値４とを比較し、サブブロックのパワー変化率が閾値４より大きい場合、サブブロックのパワー変化率と閾値４との比較結果をｓｕｂｇｒｏｕｐ［ｂ］＝１とする。グルーピング判定部３２７は、サブブロックのパワー変化率が閾値４以下の場合には、サブブロックのパワー変化率とサブブロックの閾値４との比較結果をｓｕｂｇｒｏｕｐ［ｂ］＝０とする。図２４に示される例では、各サブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｏｕｒｐ［ｂ］が表示される。
【０２５１】
グルーピング判定部３２７は、まず、各ＳＨＯＲＴブロックに含まれるサブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］の和ｓｕｍ［ｗ］を求める。図２４に示される例では、各ＳＨＯＲＴブロックのｓｕｍ［ｗ］が、各ＳＨＯＲＴブロックに含まれるサブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］の下方にそれぞれ示される。
【０２５２】
図２４に示される例では、ＳＨＯＲＴブロックｗ０に含まれるサブブロックは、サブブロックＢ０〜Ｂ３である。サブブロックＢ０とサブブロックＢ２のパワー変化率と閾値４との比較結果はｓｕｂｇｒｏｕｐ［ｂ］＝０である。サブブロックＢ１とサブブロックＢ３のパワー変化率と閾値４との比較結果はｓｕｂｇｒｏｕｐ［ｂ］＝１である。従って、ＳＨＯＲＴブロックｗ０に含まれるサブブロックのパワー変化率と閾値４との比較結果の和はｓｕｍ［ｗ０］＝０＋１＋０＋１＝２となる。同様の処理が、ＳＨＯＲＴｗ１〜ｗ７についても行われる。図２４に示される例では、各ＳＨＯＲＴブロックのｓｕｍ［ｗ］が、各ＳＨＯＲＴブロックに含まれるサブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］の下方にそれぞれ示される。
【０２５３】
次に、グルーピング判定部３２７は、算出された和ｓｕｍ［ｗ］が最大値であるＳＨＯＲＴブロックを抽出する。図２４に示される例では、ＳＨＯＲＴブロックｗ１の和ｓｕｍ［ｗ１］＝４が最大値であるので、ＳＨＯＲＴブロックｗ１が抽出される。グルーピング判定部３２７は、抽出された和ｓｕｍ［ｗ］が最大であるＳＨＯＲＴブロックのグルーピング判定結果をｇｒｏｕｐ［ｗ］＝１とし、抽出されなかったＳＨＯＲＴブロックのグルーピング判定結果をｇｒｏｕｐ［ｗ］＝０とする。図２４に示される例では、ＳＨＯＲＴブロックｗ１のグルーピング判定結果がｇｒｏｕｐ［ｗ１］＝１となり、ＳＨＯＲＴブロックｗ０，ｗ２，ｗ３のグルーピング判定結果がｇｒｏｕｐ［ｗ］＝０となる。図２４に示される例では、各ＳＨＯＲＴブロックのｓｕｍ［ｗ］の下方に、各ＳＨＯＲＴブロックのグルーピング判定結果ｇｒｏｕｐ［ｗ］が示される。
【０２５４】
グルーピング判定部３２７は、各ＳＨＯＲＴブロックのグルーピング判定結果ｇｒｏｕｐ［ｗ］をグルーピング部３５に出力する。グルーピング部３５は、グルーピング判定結
果がｇｒｏｕｐ［ｗ］＝０からｇｒｏｕｐ［ｗ］＝１に変化するＳＨＯＲＴブロック間の境界をグルーピング境界として選択する。
【０２５５】
従って、図２４に示される例では、ＳＨＯＲＴブロックｗ０とＳＨＯＲＴブロックｗ１との境界がグルーピング境界とされる。グループｇ０にＳＨＯＲＴブロックｗ０、グループｇ１にＳＨＯＲＴブロックｗ１〜ｗ７（図２４ではＳＨＯＲＴブロックｗ１〜ｗ３のみ表示）が含まれるようにグルーピングされる。
【０２５６】
図２５は、図２４で示されたグルーピング判定部３２７が実行するグルーピング判定処理のフローの例を示す図である。グルーピング判定部３２７は、フレームに含まれる各サブブロックのアタック検出結果ａｔｔａｃｋ［ｂ］と、各サブブロックのパワー変化率とが入力されると、グルーピング判定処理を開始する。
【０２５７】
グルーピング判定部３２７は、グルーピングを行う単位がＳＨＯＲＴブロックであるか、ＬＯＮＧブロックであるかを判定する（ＯＰ１１１）。グルーピング判定部３２７は、フレームにアタックが含まれるか否か、すなわち、アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックが少なくとも１つあるか否かを判定する。アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックが少なくとも１つある場合には（ＯＰ１１１：Ｙｅｓ）、グルーピングをＳＨＯＲＴブロック単位で行うことが判定される。
【０２５８】
アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックがない場合には（ＯＰ１１１：Ｎｏ）、グルーピングをＬＯＮＧブロック単位で行うことが判定される。グルーピングをＬＯＮＧブロック単位で行うとは、すなわち、グルーピングが行われないことが示されるので、グルーピング判定処理が終了する。
【０２５９】
グルーピング判定部３２７は、各変数の初期値を設定する（ＯＰ１１２）。変数には、ＳＨＯＲＴブロックの位置を示す変数ｗと、サブブロックの位置を示す変数ｂとが含まれる。また、変数には、ＳＨＯＲＴブロックに含まれるサブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］の和を示すｓｕｍ［ｗ］と、和ｓｕｍ［ｗ］の最大値を示す変数ｍａｘと、和ｓｕｍ［ｗ］が最大となるＳＨＯＲＴブロックを示す変数ｉｄｘも含まれる。さらに、ＳＨＯＲＴブロックのグルーピング判定結果ｇｒｏｕｐ［ｗ］も含まれる。これらの変数は、いずれも、初期値が０に設定される。なお、１フレームが８つのＳＨＯＲＴブロックを含み、１つのＳＨＯＲＴブロックが４つのサブブロックを含む場合には、変数ｗは０≦ｗ≦７、変数ｂは０≦ｂ≦３１の範囲の値をとる。
【０２６０】
次に、グルーピング判定部３２７は、ＳＨＯＲＴブロックｗに含まれるサブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］の和ｓｕｍ［ｗ］を求める（ＯＰ１１３〜ＯＰ１１５）。
【０２６１】
まず、グルーピング判定部３２７は、以下の式１０を計算する（ＯＰ１１３）。すなわち、グルーピング判定部３２７は、サブブロックのパワー変化率と閾値４との比較結果の和ｓｕｍ［ｗ］に、サブブロック４×ｗ＋ｂのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［４×ｗ＋ｂ］を加算する。
【０２６２】
【数１０】
2011008135.tif 000012
次に、グルーピング判定部３２７は、サブブロックの位置を示す変数ｂに１を加算する（ＯＰ１１４）。グルーピング判定部３２７は、変数ｂが１つのＳＨＯＲＴブロックに含
まれるサブブロックの数Ｓより小さい値か否かを判定する（ＯＰ１１５）。すなわち、グルーピング判定部３２７は、現在処理中のＳＨＯＲＴブロックｗに含まれるすべてのサブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］を加算し終わったか否かを判定する。１つのＳＨＯＲＴブロックに含まれるサブブロックの数が４つの場合には、Ｓ＝４であるので、グルーピング判定部３２７は、変数ｂが４より小さいか否かを判定する。
【０２６３】
変数ｂが１つのＳＨＯＲＴブロックに含まれるサブブロックの数Ｓより小さい場合には（ＯＰ１１５：Ｙｅｓ）、ＳＨＯＲＴブロックｗ中に、未加算のサブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］があることが示される。グルーピング判定部３２７は、ＯＰ１１３、ＯＰ１１４を繰り返して、ｓｕｍ［ｗ］を求める。
【０２６４】
変数ｂが１つのＳＨＯＲＴブロックに含まれるサブブロックの数Ｓ以上の場合には（ＯＰ１１５：Ｎｏ）、ＳＨＯＲＴブロックｗに含まれるすべてのサブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］を加算し終わったことが示される。すなわち、ＳＨＯＲＴブロックｗに含まれる各サブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］の和ｓｕｍ［ｗ］が求められたことが示される。
【０２６５】
次に、グルーピング判定部３２７は、ＳＨＯＲＴブロックｗに含まれる各サブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］の和ｓｕｍ［ｗ］が最大値ｍａｘより大きいか否かを判定する（ＯＰ１１６）。ｓｕｍ［ｗ］が最大値ｍａｘ以下の場合には（ＯＰ１１６：Ｎｏ）、処理がＯＰ１１８に進む。
【０２６６】
ｓｕｍ［ｗ］が最大値ｍａｘより大きい場合には（ＯＰ１１６：Ｙｅｓ）、グルーピング判部３２７は、ｍａｘをｓｕｍ［ｗ］の値に、ｉｄｘを最大値ｍａｘとなるときのサブブロックの位置を示すｗの値に更新する（ＯＰ１１７）。
【０２６７】
グルーピング判定部３２７は、ＳＨＯＲＴブロックの位置を示す変数ｗに１を加算する（ＯＰ１１８）。グルーピング判定部３２７は、変数ｗが１フレームに含まれるＳＨＯＲＴブロックの数Ｎより小さいか否かを判定する（ＯＰ１１９）。すなわち、グルーピング判定部３２７は、サブブロックのパワー変化率と閾値４との比較結果を加算する処理がフレーム中の全てのＳＨＯＲＴブロックについて行われたか否かを判定する。１つのフレームに含まれるＳＨＯＲＴブロックが８つの場合には、Ｎ＝８であるので、グルーピング判定部３２７は、変数ｗが８より小さいか否かを判定する。
【０２６８】
変数ｗが１フレームに含まれるＳＨＯＲＴブロックの数Ｎより小さい場合には（ＯＰ１１９：Ｙｅｓ）、サブブロックのパワー変化率と閾値４との比較結果を加算する処理がなされていないＳＨＯＲＴブロックが残っていることが示される。グルーピング判定部３２７は、ＯＰ１１３〜ＯＰ１１８を繰り返して、各ＳＨＯＲＴブロックに含まれるサブブロックのパワー変化率と閾値４との比較結果の和ｓｕｍ［ｗ］を求める。
【０２６９】
変数ｗが１フレームに含まれるＳＨＯＲＴブロックの数Ｎ以上の場合には（ＯＰ１１９：Ｎｏ）、フレーム中の全てのＳＨＯＲＴブロックについてサブブロックのパワー変化率と閾値４との比較結果の和ｓｕｍ［ｗ］を求める処理が終了したことが示される。グルーピング判定部３２７は、サブブロックのパワー変化率と閾値４との比較結果の和ｓｕｍ［ｗ］が最大値となるＳＨＯＲＴブロックｉｄｘのグルーピング判定結果をｇｒｏｕｐ［ｉｄｘ］＝１とする（ＯＰ１２０）。グルーピング判定部３２７は、ＳＨＯＲＴブロックｉｄｘ以外のＳＨＯＲＴブロックｗのグルーピング判定結果をｇｒｏｕｐ［ｗ］＝０（ｗ≠ｉｄｘ）とする（ＯＰ１２０）。グルーピング判定部３２７は、各ＳＨＯＲＴブロックのグルーピング判定結果ｇｏｕｒｐ［ｗ］をグルーピング部３５に出力して、グルーピング
判定結果を終了する。
【０２７０】
グルーピング部３５には、グルーピング判定部３２７から各ＳＨＯＲＴブロックのグルーピング判定結果ｇｏｒｕｐ［ｗ］が入力される。グルーピング部３５は、グルーピング判定結果がｇｒｏｕｐ［ｗ］＝０からｇｒｏｕｐ［ｗ］＝１に変化するサブブロック間の境界をグループ境界として、グルーピングを行う。以降、第１実施形態で説明された様に、グルーピングされた音声信号は、量子化部３６で量子化され、ビットストリーム生成部３７で符号化されてビットストリームに変換される。
【０２７１】
以上のように、サブブロックがＳＨＯＲＴブロックを所定数で等分割した時間長である場合には、グループ判定部３２７が、各ＳＨＯＲＴブロックに含まれるサブブロックのパワー変化率と閾値４との比較結果を加算し、最大値となるＳＨＯＲＴブロックをグループ境界とする。これによって、音声符号化装置は、サブブロックをＳＨＯＲＴブロックよりも短い時間長にして、音声信号を符号化することができる。
【０２７２】
また、グループ判定部３２７が、各ＳＨＯＲＴブロックに含まれるサブブロックのパワー変化率と閾値４との比較結果の和が最大値となるＳＨＯＲＴブロックのみをグループ境界とすることによって、グループの数を少なくすることができ、効率の良い符号化を行うことができる。
【０２７３】
＜＜第２実施形態の変形例＞＞
グループ判定部３２７は、ｓｕｍ［ｗ］を、ＳＨＯＲＴブロックに含まれるサブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］を加算して求めることに代えて、以下に説明する処理によってｓｕｍ［ｗ］を求める。
【０２７４】
図２６は、第２実施形態の変形例における、グループ判定部３２７が実行するグルーピング判定処理を説明する図である。図２６に示される例は、図２４と同様に、１フレームはＳＨＯＲＴブロックを８つ含み、そのうち、ＳＨＯＲＴブロックｗ０〜ｗ３のみが抽出されて表示されている。また、図２６に示される例は、１つのＳＨＯＲＴブロックは４つのサブブロックを含んでおり、１つのフレームは３２個のサブフレームを含む。
【０２７５】
図２６に示される例では、各サブブロックのアタック検出結果ａｔｔａｃｋ［ｂ］と、各サブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］とが、表示される。
【０２７６】
グルーピング判定部３２７は、各サブブロックのアタック検出結果ａｔｔａｃｋ［ｂ］と、各サブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］とをそれぞれ加算し、加算値ｓｕｂｇｒｏｕｐ２［ｂ］を求める。図２６に示される例のサブブロックＢ１は、アタック検出結果はａｔｔａｃｋ［Ｂ１］＝１、サブブロックＢ１のパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［Ｂ１］＝１であるので、加算値はｓｕｂｇｒｏｕｐ２［Ｂ１］＝１＋１＝２となる。図２６に示される例では、それぞれのサブブロックの加算値は、各サブブロックのパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］の下方に示される。
【０２７７】
グルーピング判定部３２７は、ＳＨＯＲＴブロックに含まれる各サブブロックの加算値ｓｕｂｇｒｏｕｐ２［ｂ］の和ｓｕｍ［ｗ］を求める。図２６に示される例のＳＨＯＲＴブロックｗ０は、サブブロックＢ０〜Ｂ３を含む。サブブロックＢ０とサブブロックＢ２の加算値が共にｓｕｂｇｒｏｕｐ２［ｂ］＝０である。サブブロックＢ１の加算値がｓｕｂｕｇｒｏｕｐ２［Ｂ１］＝２である。サブブロックＢ３の加算値がｓｕｂｇｒｏｕｐ２［Ｂ３］＝１である。従って、図２６に示される例のＳＨＯＲＴブロックｗ０に含まれる
各サブブロックの加算値ｓｕｂｇｒｏｕｐ２［ｂ］の和は、ｓｕｍ［ｗ０］＝０＋２＋０＋１＝３となる。図２６に示される例では、各ＳＨＯＲＴブロックに含まれる各サブブロックの加算値ｓｕｂｇｒｏｕｐ２の和ｓｕｍ［ｗ］は、各ＳＨＯＲＴブロックに含まれる各サブブロックの加算値ｓｕｂｇｒｏｕｐ２の下方に示される。
【０２７８】
次に、グルーピング判定部３２７は、算出された和ｓｕｍ［ｗ］が最大値であるＳＨＯＲＴブロックを抽出する。図２６に示される例では、ＳＨＯＲＴブロックｗ１の和ｓｕｍ［１］＝６が最大値であるので、ＳＨＯＲＴブロックｗ１が抽出される。グルーピング判定部３２７は、抽出された和ｓｕｍ［ｗ］が最大であるＳＨＯＲＴブロックのグルーピング判定結果をｇｒｏｕｐ［ｗ］＝１とし、抽出されなかったＳＨＯＲＴブロックのグルーピング判定結果をｇｒｏｕｐ［ｗ］＝０とする。図２６に示される例では、ＳＨＯＲＴブロックｗ１のグルーピング判定結果がｇｒｏｕｐ［ｗ１］＝１となり、ＳＨＯＲＴブロックｗ０，ｗ２，ｗ３のグルーピング判定結果がｇｒｏｕｐ［ｗ］＝０となる。図２６に示される例では、各ＳＨＯＲＴブロックのｓｕｍ［ｗ］の下方に、各ＳＨＯＲＴブロックのグルーピング判定結果ｇｒｏｕｐ［ｗ］が示される。
【０２７９】
グルーピング判定部３２７は、各ＳＨＯＲＴブロックのグルーピング判定結果ｇｒｏｕｐ［ｗ］をグルーピング部３５に出力する。グルーピング部３５は、グルーピング判定結果がｇｒｏｕｐ［ｗ］＝０からｇｒｏｕｐ［ｗ］＝１に変化するＳＨＯＲＴブロック間の境界をグルーピング境界として選択する。
【０２８０】
従って、図２６に示される例では、ＳＨＯＲＴブロックｗ０とＳＨＯＲＴブロックｗ１との境界がグルーピング境界とされ、グループｇ０にＳＨＯＲＴブロックｗ０、グループｇ１にＳＨＯＲＴブロックｗ１〜ｗ７（図２６ではＳＨＯＲＴブロックｗ１〜ｗ３のみ表示）が含まれる。
【０２８１】
図２７は、図２６で示されたグルーピング判定部３２７が実行するグルーピング判定処理のフローの例を示す図である。グルーピング判定部３２７は、フレームに含まれる各サブブロックのアタック検出結果ａｔｔａｃｋ［ｂ］と、各サブブロックのパワー変化率とが入力されると、グルーピング判定処理を開始する。
【０２８２】
グルーピング判定部３２７は、グルーピングを行う単位がＳＨＯＲＴブロックであるか、ＬＯＮＧブロックであるかを判定する（ＯＰ１３１）。グルーピング判定部３２７は、フレームにアタックが検出されるか否か、すなわち、アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックが少なくとも１つあるか否かを判定する。アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックが少なくとも１つある場合には（ＯＰ１３１：Ｙｅｓ）、グルーピングをＳＨＯＲＴブロック単位で行うことが判定される。
【０２８３】
アタック検出結果がａｔｔａｃｋ［ｂ］＝１であるサブブロックがない場合には（ＯＰ１３１：Ｎｏ）、グルーピングをＬＯＮＧブロック単位で行うことが判定される。グルーピングをＬＯＮＧブロック単位で行うとは、すなわち、グルーピングが行われないことが示されるので、グルーピング判定処理が終了する。
【０２８４】
グルーピングをＳＨＯＲＴブロック単位で行うことが判定された場合には（ＯＰ１３１：Ｙｅｓ）、グルーピング判定部３２７は、変数ｂの初期値を０に設定する（ＯＰ１３２）。
【０２８５】
次に、グルーピング判定部３２７は、各サブブロックについて、アタック検出結果ａｔｔａｃｋ［ｂ］とパワー変化率と閾値４との比較結果ｓｕｂｇｒｏｕｐ［ｂ］との加算値ｓｕｂｇｒｏｕｐ２［ｂ］を求める（ＯＰ１３３）。
【０２８６】
グルーピング判定部３２７は、変数ｂに１を加算する（ＯＰ１３４）。グルーピング判定部３２７は、変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値か否かを判定する（ＯＰ１３５）。すなわち、グルーピング判定部３２７は、フレーム中に含まれるすべてのサブフレームについて加算値ｓｕｂｇｒｏｕｐ２［ｂ］を求めたか否かを判定する。１フレーム中に８つのＳＨＯＲＴブロックが含まれ、１つのＳＨＯＲＴブロックに４つのサブブロックが含まれる場合には、１つのフレームに３２個のサブブロックが含まれるので、Ｍ＝３２である。グルーピング判定部３２７は、変数ｂが３２より小さい値か否かを判定する。
【０２８７】
変数ｂが１フレームに含まれるサブブロックの数Ｍより小さい値である場合には（ＯＰ１３５：Ｙｅｓ）、フレーム中に加算値ｓｕｂｇｒｏｕｐ２［ｂ］が求められていないサブフレームが存在することが示される。グルーピング判定部３２７は、ＯＰ１３３〜ＯＰ１３５の処理を繰り返して、フレームに含まれるすべてのサブブロックについて加算値ｓｕｂｇｒｏｕｐ２［ｂ］を求める。
【０２８８】
変数ｂが１フレームに含まれるサブブロックの数Ｍ以上である場合には（ＯＰ１３５：Ｎｏ）、フレームに含まれるすべてのサブブロックについて、加算値ｓｕｂｇｒｏｕｐ２［ｂ］が求められたことを示す。グルーピング判定部３２７は、処理をＯＰ１３６に移す。
【０２８９】
ＯＰ１３６では、図２５で説明されたＯＰ１１２〜ＯＰ１２０の処理が実行される。ただし、図２５におけるｓｕｂｇｒｏｕｐ［ｂ］はｓｕｂｇｒｏｕｐ２［ｂ］に置き換えられる。
【０２９０】
グルーピング判定部３２７は、各ＳＨＯＲＴブロックのグルーピング判定結果ｇｒｏｕｐ［ｗ］をグルーピング部３５に出力する。グルーピング部３５は、グルーピング判定結果がｇｒｏｕｐ［ｗ］＝０からｇｒｏｕｐ［ｗ］＝１に変化するサブブロック間の境界をグループ境界としてグルーピングする。以降、音声信号は、量子化部３６で量子化され、ビットストリーム生成部３７で符号化されてビットストリームに変換される。
【０２９１】
＜第３実施形態＞
図２８は、第３実施形態における、情報処理装置２００の構成例を示す図である。情報処理装置２００は、分割部２０１，決定部２０２，探索部２０３，補正部２０４，判定部２０５，グループ化部２０６を含む。
【０２９２】
分割部２０１は、単位時間に含まれる音声信号を所定数の時間区間に分割する。分割部２０１は、所定数の時間区間に分割された単位時間に含まれる音声信号を決定部２０２に出力する。
【０２９３】
決定部２０２は、所定数の時間区間に分割された単位時間に含まれる音声信号を入力として得る。決定部２０２は、各時間区間における音声信号のパワーの変化率が、第１の閾値より大きい時間区間をアタック候補として決定する。決定部２０２は、アタック候補の時間区間が含まれる、所定数の時間区間に分割された単位時間に含まれる音声信号を探索部２０３に出力する。
【０２９４】
探索部２０３は、アタック候補の時間区間が含まれる、所定数の時間区間に分割された単位時間に含まれる音声信号を入力として得る。探索部２０３は、少なくとも、アタック候補の時間区間、又は、アタック候補の時間区間の直前の時間区間からアタックの開始点を探索する。探索部２０３は、アタックの開始点を含む時間区間が含まれる、所定数の時
間区間に分割された単位時間に含まれる音声信号を補正部２０４に出力する。
【０２９５】
補正部２０４は、アタックの開始点を含む時間区間が含まれる、所定数の時間区間に分割された単位時間に含まれる音声信号を入力として得る。補正部２０４は、アタックの開始点を含む時間区間における音声信号のパワーを、アタックの開始点を含む時間区間の直後の時間区間における音声信号のパワーを用いて補正する。補正部２０４は、音声信号のパワーが補正されたアタックの開始点を含む時間区間が含まれる、所定数の時間区間に分割された単位時間に含まれる音声信号を、判定部２０５に出力する。
【０２９６】
判定部２０５は、音声信号のパワーが補正されたアタックの開始点を含む時間区間が含まれる、所定数の時間区間に分割された単位時間に含まれる音声信号を、入力として得る。判定部２０５は、音声信号のパワーが補正されたアタックの開始点を含む時間区間における音声信号のパワー変化率が、第１の閾値より大きいアタック検出用の第２の閾値を超えるか否かを判定する。判定部２０５は、判定の結果をグループ化部２０６に出力する。
【０２９７】
グループ化部２０６は、単位時間に含まれる音声信号にアタックが含まれる場合には、単位時間が所定数に分割されたブロックを音声符号化の単位となる複数のグループにグループ化する。グループ化部２０６は、音声信号のパワーが補正されたアタックの開始点を含む時間区間における音声信号のパワーの変化率が、第１の閾値より大きいアタック検出用の第２の閾値を超えるか否かの判定結果を入力として得る。グループ化部２０６は、補正されたアタックの開始点を含む時間区間の音声信号のパワーの変化率が第２の閾値を超える場合に、アタックの開始点を含む時間区間を基準として、単位時間を少なくとも二つのグループにグループ化する。グループ化部２０６は、グループ化された単位時間に含まれる音声を出力する。
【０２９８】
情報処理装置２００は、アタック候補の時間区間を決定し、アタック候補の時間区間又はアタック候補の時間区間の直前の時間区間からアタックの開始点を探索する。情報処理装置２００は、アタックを含む時間区間における音声信号のパワーを、アタックを含む時間区間の直後の時間区間における音声信号のパワーを用いて、補正する。情報処理装置２００は、さらに、補正されたアタックを含む時間区間における音声信号のパワーの変化率がアタック検出用の第２の閾値を超えるか否かを判定する。情報処理装置２００によって、アタックの開始点を含むにも関わらず、音声信号のパワーの変化率がアタック検出用の第２の閾値に満たない時間区間でも、音声信号のパワーが補正され、補正されたパワーの変化率が第２の閾値を超える場合には、アタックを含む時間区間として検出される。従って、情報処理装置２００によれば、アタックを検出する精度を上げることができる。
【０２９９】
また、情報処理装置２００は、補正されたアタックの開始点を含む時間区間の音声信号のパワーの変化率が第２の閾値を超える場合に、アタックの開始点を含む時間区間を基準として、単位時間を少なくとも二つのグループにグループ化する。従って、アタックの検出の精度が上がることによって、適切なグルーピングが行われる。適切なグルーピングが行われることによって、量子化誤差によるプリエコーの発生が抑えられ、符号化された音声データの再生時の音質が向上する。
【０３００】
また、情報処理装置２００の補正部２０４は、アタックの開始点を含む時間区間における音声信号のパワーに、アタックの開始点を含む時間区間の直後の時間区間における音声信号のパワーを加算して補正してもよい。補正部２０４によって、アタックの開始点を含む時間区間における補正された音声信号のパワーが、アタック全体がアタックの開始点を含む時間区間に含まれている場合の音声信号のパワーに近い値になる。これによって、アタックを含む時間区間に含まれる音声信号のパワーの変化率が、アタック検出用の第２の閾値を超える可能性が高くなり、アタックの検出精度が向上する。
【０３０１】
また、情報処理装置２００の判定部２０５は、単位時間に含まれる各時間区間における音声信号のパワーの変化率が第２の閾値を超えるか否かを判定してもよい。このとき、グループ化部２０６は、２以上の時間区間がブロックに含まれる場合に、単位時間に含まれるブロックの中で、パワーの変化率が第２の閾値よりも大きい時間区間の数が最大となるブロックを基準として、単位時間を二つのグループにグループ化してもよい。これによって、時間区間がブロックより短い時間長である場合にも、適正にグループ化することができる。
【０３０２】
＜その他＞
以上の実施形態は、以下の付記を開示する。
【０３０３】
（付記１）
単位時間の音声信号を所定数の時間区間に分割する分割部と、
各時間区間における音声信号のパワーの変化率が、第１の閾値より大きい時間区間をアタック候補として決定する決定部と、
少なくとも前記アタック候補の時間区間または前記アタック候補の時間区間の直前の時間区間からアタックの開始点を探索する探索部と、
前記探索部によって探索されたアタックの開始点を含む時間区間における音声信号のパワーを、前記アタックの開始点を含む時間区間の直後の時間区間における音声信号のパワーを用いて補正する補正部と、
前記補正部によって音声信号のパワーが補正された前記アタックの開始点を含む時間区間における音声信号のパワーの変化率が前記第１の閾値より大きいアタック検出用の第２の閾値を超えるか否かを判定する判定部と、
を含む情報処理装置。
【０３０４】
（付記２）
前記補正部は、前記アタックの開始点を含む時間区間における音声信号のパワーに、前記アタックの開始点を含む時間区間の直後の時間区間における音声信号のパワーを加算して補正する
付記１に記載の情報処理装置。
【０３０５】
（付記３）
前記補正部は、前記アタックの開始点を含む時間区間の直後の時間区間に含まれる先頭から所定数のサンプルに含まれる音声信号のパワーの合計値を、前記アタック開始点を含む時間区間の直後の時間区間に含まれる音声信号のパワーから減じて、前記アタック開始点を含む時間区間に含まれる音声信号のパワーに加算して補正する
付記１に記載の情報処理装置。
【０３０６】
（付記４）
前記情報処理装置は、
前記単位時間に含まれる音声信号にアタックが含まれる場合には、前記単位時間が所定数に分割されたブロックを、音声符号化の単位となる複数のグループにグループ化するグループ化部をさらに備え、
前記グループ化部は、前記補正されたアタックの開始点を含む時間区間の音声信号のパワーの変化率が前記第２の閾値を超える場合に、前記アタックの開始点を含む時間区間を基準として、前記単位時間を少なくとも二つのグループにグループ化する
付記１から３の何れか１つに記載の情報処理装置。
【０３０７】
（付記５）
前記判定部は、前記単位時間に含まれる各時間区間における音声信号のパワーの変化率が前記第２の閾値を超えるか否かを判定し、
前記グループ化部は、パワーの変化率が前記第２の閾値を超える時間区間が複数ある場合には、前記単位時間において、時間的に最も前であるパワーの変化率が第２の閾値を超える時間区間を基準として、前記単位時間を二つのグループにグループ化する
付記４に記載の情報処理装置。
【０３０８】
（付記６）
前記グループ化部は、前記基準となる時間区間を含むブロックと前記前記基準となる時間区間を含むブロックの直前のブロックとの境界をグループの境界とする
付記４又は５に記載の情報処理装置。
【０３０９】
（付記７）
前記判定部は、前記単位時間に含まれる各時間区間における音声信号のパワーが前記第２の閾値を超えるか否かを判定し、
前記グループ化部は、２以上の前記時間区間が前記ブロックに含まれる場合に、前記単位時間に含まれるブロックの中で、前記パワーの変化率が前記第２の閾値よりも大きい時間区間の数が最大となるブロックを基準として、前記単位時間を二つのグループにグループ化する
付記４に記載の情報処理装置。
【０３１０】
（付記８）
前記グループ化部は、前記基準のブロックと前記基準のブロックの直前のブロックとの境界をグループの境界とする
付記７に記載の情報処理装置。
【０３１１】
（付記９）
前記グループ化部は、前記パワーの変化率が、前記第２の閾値より大きい第３の閾値よりも大きい時間区間の数が最大となるブロックを基準として、前記単位時間を少なくとも二つのグループにグループ化する
付記７又は８に記載の情報処理装置。
【０３１２】
（付記１０）
コンピュータに、
単位時間の音声信号を所定数の時間区間に分割するステップと、
各時間区間における音声信号のパワーの変化率が、第１の閾値より大きい時間区間をアタック候補として決定するステップと、
少なくとも前記アタック候補の時間区間または前記アタック候補の時間区間の直前の時間区間からアタックの開始点を探索するステップと、
前記探索部によって探索されたアタックの開始点を含む時間区間における音声信号のパワーを、前記アタックの開始点を含む時間区間の直後の時間区間における音声信号のパワーを用いて補正するステップと、
前記補正部によって音声信号のパワーが補正された前記アタックの開始点を含む時間区間における音声信号のパワーの変化率が前記第１の閾値より大きいアタック検出用の第２の閾値を超えるか否かを判定するステップと、
を実行させるためのプログラム。
【符号の説明】
【０３１３】
１，１００    音声符号化装置
２，１０２    主記憶装置
３      ＣＰＵ
４，１０４    二次記憶装置
５，１０８    バス
２１    音声データ
２３    ＭＰＥＧ−２  ＡＡＣファイル
２５    音声符号化プログラム
３１    フレーム分割部
３２    アタック検出部
３３    ブロック判定部
３４    直交変換部
３５    グルーピング部
３６    量子化部
３７    ビットストリーム生成部
３８    出力部
４１    音声ファイル
４２，１０４ｐ  音声符号化プログラム
１０１    入力装置
１０３    プロセッサ
１０４ａ  音声入力データ
１０５    媒体読み取り装置
１０６    ネットワークインタフェース
１０７    出力装置
２００    情報処理装置
２０１    分割部
２０２    決定部
２０３    探索部
２０４    補正部
２０５    判定部
２０６    グループ化部
３２１    ハイパスフィルタ
３２２    サブブロック分割部
３２３    ブロックパワー算出部
３２４    補正部
３２４ａ    アタック候補決定部
３２４ｂ    アタック検査部
３２４ｃ    ブロックパワー補正部
３２４ｍ  メモリ
３２５    パワー変化率算出部
３２６    アタック決定部
３２７    グルーピング判定部
【図１】
2011008135.tif 000013
【図２】
2011008135.tif 000014
【図３】
2011008135.tif 000015
【図４】
2011008135.tif 000016
【図５】
2011008135.tif 000017
【図６】
2011008135.tif 000018
【図７】
2011008135.tif 000019
【図８】
2011008135.tif 000020
【図９】
2011008135.tif 000021
【図１０】
2011008135.tif 000022
【図１１】
2011008135.tif 000023
【図１２】
2011008135.tif 000024
【図１３】
2011008135.tif 000025
【図１４】
2011008135.tif 000026
【図１５】
2011008135.tif 000027
【図１６】
2011008135.tif 000028
【図１７Ａ】
2011008135.tif 000029
【図１７Ｂ】
2011008135.tif 000030
【図１８】
2011008135.tif 000031
【図１９】
2011008135.tif 000032
【図２０】
2011008135.tif 000033
【図２１】
2011008135.tif 000034
【図２２】
2011008135.tif 000035
【図２３】
2011008135.tif 000036
【図２４】
2011008135.tif 000037
【図２５】
2011008135.tif 000038
【図２６】
2011008135.tif 000039
【図２７】
2011008135.tif 000040
【図２８】
2011008135.tif 000041