(57)【特許請求の範囲】
【請求項１】
デジタル信号を周波数変換して周波数変換係数を求める周波数変換手段と、
前記周波数変換手段が求めた周波数変換係数を量子化する量子化手段と、
対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第１の記号列を生成する記号列生成手段と、
前記記号列生成手段が生成した第１の記号列をローテートすることにより特定の記号が末尾に多く連続する第２の記号列を生成するローテート手段と、
前記量子化手段が量子化した周波数変換係数のうち前記記号列生成手段が生成した第１の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第２の記号列に基づいて第１の記号列を復元するための記号列復元用データとを符号化するとともに、前記ローテート手段が生成した第２の記号列を先頭から順に符号化して行き、第２の記号列の残りの記号が全て特定の記号になった場合に、残りの記号が全て特定の記号であることを示す符号を用いて符号化する符号化手段と、
前記符号化手段が符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別手段と、
前記符号量超過判別手段により合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除手段と、を備え、
符号化されたデータの合計符号量が目標符号量を超えなくなるまで、前記記号列生成手段による前記データ削除手段が削除した周波数変換係数を符号化対象から除外した新たな第１の記号列の生成、前記ローテート手段による前記新たな第１の記号列に基づく第２の記号列の生成、及び前記符号化手段による前記新たな第１の記号列に基づく符号化を、繰り返すようにした、
ことを特徴とする符号化装置。
【請求項２】
前記ローテート手段は、前記記号列生成手段が生成した第１の記号列をローテートすることにより得られる記号列のうち、特定の記号が末尾に最も長く連続する記号列を第２の記号列として生成するとともに、第１の記号列から第２の記号列を生成するために必要なローテート数を求め、
前記符号化手段は、前記ローテート手段が生成したローテート数を記号列復元用データとして符号化する、
ことを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記符号化手段は、前記ローテート手段が生成したローテート数に換えて、当該ローテート数と前回の符号化の際に前記ローテート手段が生成したローテート数との差分を記号列復元用データとして符号化する、
ことを特徴とする請求項２に記載の符号化装置。
【請求項４】
前記周波数変換手段が求めた周波数変換係数の全周波数帯域を複数の分割周波数帯域に分割する周波数帯域分割手段と、
分割周波数帯域毎に、前記周波数変換手段が求めた周波数変換係数のうち前記前記データ削除手段により削除されていない周波数変換係数の絶対値の最大値を包絡値として取得する包絡値取得手段と、をさらに備え、
前記量子化手段は、各分割周波数帯域に含まれる周波数変換係数を、前記包絡値取得手段が取得した分割周波数帯域毎の包絡値のうち当該分割周波数帯域の包絡値で除算することにより量子化し、
前記ローテート手段は、前記記号列生成手段が生成した第１の記号列を構成する各記号のうち、包絡値が０である分割周波数帯域に含まれる周波数に対応する記号を符号化対象から除外することを示す記号に置換し、包絡値が０ではない分割周波数帯域に含まれる周波数に対応する記号を符号化対象とすることを示す記号に置換した場合に得られる記号列を、各分割周波数帯域に含まれる周波数変換係数の個数ずつローテートした場合に得られる記号列のうち、特定の記号が末尾に最も長く連続する記号列を第２の記号列として生成し、
前記符号化手段は、前記包絡値取得手段が生成した分割周波数帯域毎の包絡値を記号列復元用データとして符号化する、
ことを特徴とする請求項１に記載の符号化装置。
【請求項５】
請求項１乃至４のいずれか１項に記載の符号化装置によって符号化されたデータを周波数変換係数と第２の記号列と記号列復元用データとに復号化する復号化手段と、
前記復号化手段が復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化手段が復号化した第２の記号列を記号列復元用データを用いて符号化のときと逆方向にローテートすることにより得られた第１の記号列に基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完手段と、
前記復号化手段が復号化した周波数変換係数と前記除外データ補完手段が予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化手段と、
前記逆量子化手段が逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換手段と、を備える、
ことを特徴とする復号化装置。
【請求項６】
デジタル信号を符号化するシステムにおける符号化方法であって、
デジタル信号を周波数変換して周波数変換係数を求める周波数変換ステップと、
前記周波数変換ステップで求めた周波数変換係数を量子化する量子化ステップと、
対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第１の記号列を生成する記号列生成ステップと、
前記記号列生成ステップで生成した第１の記号列をローテートすることにより特定の記号が末尾に多く連続する第２の記号列を生成するローテートステップと、
前記量子化ステップで量子化した周波数変換係数のうち前記記号列生成ステップで生成した第１の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第２の記号列から第１の記号列を復元するための記号列復元用データとを符号化するとともに、前記ローテートステップで生成した第２の記号列を先頭から順に符号化して行き、第２の記号列の残りの記号が全て特定の記号になった場合に、残りの記号が全て特定の記号であることを示す符号を用いて符号化する符号化ステップと、
前記符号化ステップで符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別ステップと、
前記符号量超過判別ステップにより合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除ステップと、を備え、
符号化されたデータの合計符号量が目標符号量を超えなくなるまで、前記記号列生成ステップによる前記データ削除ステップで削除した周波数変換係数を符号化対象から除外した新たな第１の記号列の生成、前記ローテートステップによる前記新たな第１の記号列に基づく第２の記号列の生成、及び前記符号化ステップによる前記新たな第１の記号列に基づく符号化を、繰り返すようにした、
ことを特徴とする符号化方法。
【請求項７】
符号化データを復号化するシステムにおける復号化方法であって、
請求項６に記載の符号化方法によって符号化されたデータを周波数変換係数と第２の記号列と記号列復元用データとに復号化する復号化ステップと、
前記復号化ステップで復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化ステップで復号化した第２の記号列を記号列復元用データを用いて符号化のときと逆方向にローテートすることにより得られた第１の記号列に基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完ステップと、
前記復号化ステップで復号化した周波数変換係数と前記除外データ補完ステップで予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化ステップと、
前記逆量子化ステップで逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換ステップと、を備える、
ことを特徴とする復号化方法。
【請求項８】
コンピュータを、
デジタル信号を周波数変換して周波数変換係数を求める周波数変換手段、
前記周波数変換手段が求めた周波数変換係数を量子化する量子化手段、
対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第１の記号列を生成する記号列生成手段、
前記記号列生成手段が生成した第１の記号列をローテートすることにより特定の記号が末尾に多く連続する第２の記号列を生成するローテート手段、
前記量子化手段が量子化した周波数変換係数のうち前記記号列生成手段が生成した第１の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第２の記号列から第１の記号列を復元するための記号列復元用データとを符号化し、前記ローテート手段が生成した第２の記号列を先頭から順に符号化して行き、第２の記号列の残りの記号が全て特定の記号になった場合に、残りの記号が全て特定の記号であることを示す符号を用いて符号化する符号化手段、
前記符号化手段が符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別手段と、
前記符号量超過判別手段により合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除手段、
として機能させるためのプログラムであって、
符号化されたデータの合計符号量が目標符号量を超えなくなるまで、前記記号列生成手段による前記データ削除手段が削除した周波数変換係数を符号化対象から除外した新たな第１の記号列の生成、前記ローテート手段による前記新たな第１の記号列に基づく第２の記号列の生成、及び前記符号化手段による前記新たな第１の記号列に基づく符号化を、繰り返すようにした、
ことを特徴とするプログラム。
【請求項９】
コンピュータを、
請求項８に記載のプログラムによって符号化されたデータを周波数変換係数と第２の記号列と記号列復元用データとに復号化する復号化手段、
前記復号化手段が復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化手段が復号化した第２の記号列を記号列復元用データを用いて符号化のときと逆方向にローテートすることにより得られた第１の記号列に基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完手段、
前記復号化手段が復号化した周波数変換係数と前記除外データ補完手段が予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化手段、
前記逆量子化手段が逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換手段、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル信号を効率良く符号化する符号化装置、符号化方法及びこれらをコンピュータ上で実現するためのプログラム、並びに、上記符号化装置、符号化方法又はプログラムにより符号化されたデータをデジタル信号に復号化する復号化装置、復号化方法及びこれらをコンピュータ上で実現するためのプログラムに関する。
【背景技術】
【０００２】
従来、発音機能を搭載した電子辞書装置が知られている。このような電子辞書装置は、例えば、録音時に各単語に対応する音声信号を符号化してメモリに記憶し、再生時にメモリに記憶されたデータを復号化して再生する。ここで、十分な音質を確保したままビットレートを低く抑えるためには、高い符号化効率（圧縮効率）で音声信号を符号化する必要がある。かかる目的を達成するための技術として、例えば、特許文献１には、人間の聴覚の特性に基づいて音声信号を符号化する音声処理装置が開示されている。
【０００３】
特許文献１に開示された音声処理装置は、まず、音声信号を複数のブロックからなるフレームに分割する。そして、音声処理装置は、１フレーム分の音声信号をブロック毎に周波数変換することにより、ブロック毎に各周波数のＭＤＣＴ係数を求める。次に、音声処理装置は、１フレーム分のＭＤＣＴ係数に基づいて各周波数の重要度を設定する。具体的には、音声処理装置は、各周波数の１フレーム分のＭＤＣＴ係数から当該周波数のエネルギーを求め、エネルギーが高い周波数ほど重要度を高く設定する。
【０００４】
音声処理装置は、所定のビットレート（例えば、１６ｋｂｐｓ程度）に達するまで、すなわち、符号量が所定の符号量に達するまで、重要度の高い周波数から順番にＭＤＣＴ係数を符号化する。このため、重量度の低い周波数のＭＤＣＴ係数は符号化されない。ここで、音声処理装置は、各周波数が、ＭＤＣＴ係数が符号化された周波数であるか否かを判別するためのフラグ列を生成し、作成したフラグ列も符号化する。
【特許文献１】特開２００７−１９３０４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、生成したフラグ列をそのまま符号化する場合、フラグ列自体も容量を有するため、符号化効率がそれほど向上しない場合もあった。
【０００６】
本発明は、上記問題に鑑みてなされたものであり、符号化効率を向上することが可能な符号化装置、符号化方法及びこれらをコンピュータ上で実現するためのプログラムを提供することを目的とする。また、本発明は、上記符号化装置、符号化方法又はプログラムにより符号化されたデータからデジタル信号を復号化することが可能な復号化装置、復号化方法及びこれらをコンピュータ上で実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の第１の観点に係る符号化装置は、
デジタル信号を周波数変換して周波数変換係数を求める周波数変換手段と、
前記周波数変換手段が求めた周波数変換係数を量子化する量子化手段と、
対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第１の記号列を生成する記号列生成手段と、
前記記号列生成手段が生成した第１の記号列をローテートすることにより特定の記号が末尾に多く連続する第２の記号列を生成するローテート手段と、
前記量子化手段が量子化した周波数変換係数のうち前記記号列生成手段が生成した第１の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第２の記号列に基づいて第１の記号列を復元するための記号列復元用データとを符号化するとともに、前記ローテート手段が生成した第２の記号列を先頭から順に符号化して行き、第２の記号列の残りの記号が全て特定の記号になった場合に、残りの記号が全て特定の記号であることを示す符号を用いて符号化する符号化手段と、
前記符号化手段が符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別手段と、
前記符号量超過判別手段により合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除手段と、を備え、
符号化されたデータの合計符号量が目標符号量を超えなくなるまで、前記記号列生成手段による前記データ削除手段が削除した周波数変換係数を符号化対象から除外した新たな第１の記号列の生成、前記ローテート手段による前記新たな第１の記号列に基づく第２の記号列の生成、及び前記符号化手段による前記新たな第１の記号列に基づく符号化を、繰り返すようにした、
ことを特徴とする。
【０００８】
前記ローテート手段は、前記記号列生成手段が生成した第１の記号列をローテートすることにより得られる記号列のうち、特定の記号が末尾に最も長く連続する記号列を第２の記号列として生成するとともに、第１の記号列から第２の記号列を生成するために必要なローテート数を求め、
前記符号化手段は、前記ローテート手段が生成したローテート数を記号列復元用データとして符号化してもよい。
【０００９】
前記符号化手段は、前記ローテート手段が生成したローテート数に換えて、当該ローテート数と前回の符号化の際に前記ローテート手段が生成したローテート数との差分を記号列復元用データとして符号化してもよい。
【００１０】
前記周波数変換手段が求めた周波数変換係数の全周波数帯域を複数の分割周波数帯域に分割する周波数帯域分割手段と、
分割周波数帯域毎に、前記周波数変換手段が求めた周波数変換係数のうち前記前記データ削除手段により削除されていない周波数変換係数の絶対値の最大値を包絡値として取得する包絡値取得手段と、をさらに備え、
前記量子化手段は、各分割周波数帯域に含まれる周波数変換係数を、前記包絡値取得手段が取得した分割周波数帯域毎の包絡値のうち当該分割周波数帯域の包絡値で除算することにより量子化し、
前記ローテート手段は、前記記号列生成手段が生成した第１の記号列を構成する各記号のうち、包絡値が０である分割周波数帯域に含まれる周波数に対応する記号を符号化対象から除外することを示す記号に置換し、包絡値が０ではない分割周波数帯域に含まれる周波数に対応する記号を符号化対象とすることを示す記号に置換した場合に得られる記号列を、各分割周波数帯域に含まれる周波数変換係数の個数ずつローテートした場合に得られる記号列のうち、特定の記号が末尾に最も長く連続する記号列を第２の記号列として生成し、
前記符号化手段は、前記包絡値取得手段が生成した分割周波数帯域毎の包絡値を記号列復元用データとして符号化してもよい。
【００１２】
上記目的を達成するために、本発明の第２の観点に係る復号化装置は、
前記符号化装置によって符号化されたデータを周波数変換係数と第２の記号列と記号列復元用データとに復号化する復号化手段と、
前記復号化手段が復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化手段が復号化した第２の記号列を記号列復元用データを用いて符号化のときと逆方向にローテートすることにより得られた第１の記号列に基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完手段と、
前記復号化手段が復号化した周波数変換係数と前記除外データ補完手段が予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化手段と、
前記逆量子化手段が逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換手段と、を備える、
ことを特徴とする。
【００１３】
上記目的を達成するために、本発明の第３の観点に係る符号化方法は、
デジタル信号を符号化するシステムにおける符号化方法であって、
デジタル信号を周波数変換して周波数変換係数を求める周波数変換ステップと、
前記周波数変換ステップで求めた周波数変換係数を量子化する量子化ステップと、
対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第１の記号列を生成する記号列生成ステップと、
前記記号列生成ステップで生成した第１の記号列をローテートすることにより特定の記号が末尾に多く連続する第２の記号列を生成するローテートステップと、
前記量子化ステップで量子化した周波数変換係数のうち前記記号列生成ステップで生成した第１の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第２の記号列から第１の記号列を復元するための記号列復元用データとを符号化するとともに、前記ローテートステップで生成した第２の記号列を先頭から順に符号化して行き、第２の記号列の残りの記号が全て特定の記号になった場合に、残りの記号が全て特定の記号であることを示す符号を用いて符号化する符号化ステップと、
前記符号化ステップで符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別ステップと、
前記符号量超過判別ステップにより合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除ステップと、を備え、
符号化されたデータの合計符号量が目標符号量を超えなくなるまで、前記記号列生成ステップによる前記データ削除ステップで削除した周波数変換係数を符号化対象から除外した新たな第１の記号列の生成、前記ローテートステップによる前記新たな第１の記号列に基づく第２の記号列の生成、及び前記符号化ステップによる前記新たな第１の記号列に基づく符号化を、繰り返すようにした、
ことを特徴とする。
【００１４】
上記目的を達成するために、本発明の第４の観点に係る復号化方法は、
符号化データを復号化するシステムにおける復号化方法であって、
前記符号化方法によって符号化されたデータを周波数変換係数と第２の記号列と記号列復元用データとに復号化する復号化ステップと、
前記復号化ステップで復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化ステップで復号化した第２の記号列を記号列復元用データを用いて符号化のときと逆方向にローテートすることにより得られた第１の記号列に基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完ステップと、
前記復号化ステップで復号化した周波数変換係数と前記除外データ補完ステップで予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化ステップと、
前記逆量子化ステップで逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換ステップと、を備える、
ことを特徴とする。
【００１５】
上記目的を達成するために、本発明の第５の観点に係るプログラムは、
コンピュータを、
デジタル信号を周波数変換して周波数変換係数を求める周波数変換手段、
前記周波数変換手段が求めた周波数変換係数を量子化する量子化手段、
対応する周波数の周波数変換係数を符号化対象とするか符号化対象から除外するかを示す記号を周波数毎に生成し、生成した記号を周波数順に連結することにより第１の記号列を生成する記号列生成手段、
前記記号列生成手段が生成した第１の記号列をローテートすることにより特定の記号が末尾に多く連続する第２の記号列を生成するローテート手段、
前記量子化手段が量子化した周波数変換係数のうち前記記号列生成手段が生成した第１の記号列により符号化対象とすることが示された周波数の周波数変換係数と復号化の際に第２の記号列から第１の記号列を復元するための記号列復元用データとを符号化し、前記ローテート手段が生成した第２の記号列を先頭から順に符号化して行き、第２の記号列の残りの記号が全て特定の記号になった場合に、残りの記号が全て特定の記号であることを示す符号を用いて符号化する符号化手段、
前記符号化手段が符号化したデータの合計符号量が予め設定された目標符号量を超えているか否かを判別する符号量超過判別手段と、
前記符号量超過判別手段により合計符号量が目標符号量を超えていると判別された場合に、符号化対象から除外する周波数変換係数の周波数を求め、当該周波数の周波数変換係数を削除するデータ削除手段、
として機能させるためのプログラムであって、
符号化されたデータの合計符号量が目標符号量を超えなくなるまで、前記記号列生成手段による前記データ削除手段が削除した周波数変換係数を符号化対象から除外した新たな第１の記号列の生成、前記ローテート手段による前記新たな第１の記号列に基づく第２の記号列の生成、及び前記符号化手段による前記新たな第１の記号列に基づく符号化を、繰り返すようにした、
ことを特徴とする。
【００１６】
上記目的を達成するために、本発明の第６の観点に係るプログラムは、
コンピュータを、
前記プログラムによって符号化されたデータを周波数変換係数と第２の記号列と記号列復元用データとに復号化する復号化手段、
前記復号化手段が復号化したデータのうち、前記符号化対象から除外された周波数変換係数を、前記復号化手段が復号化した第２の記号列を記号列復元用データを用いて符号化のときと逆方向にローテートすることにより得られた第１の記号列に基づいて判別し、判別した周波数変換係数に、予め設定された値を挿入する除外データ補完手段、
前記復号化手段が復号化した周波数変換係数と前記除外データ補完手段が予め設定された値を挿入した周波数変換係数とを逆量子化する逆量子化手段、
前記逆量子化手段が逆量子化した周波数変換係数を逆周波数変換することによりデジタル信号を復元する逆周波数変換手段、
として機能させることを特徴とする。
【発明の効果】
【００１７】
本発明にかかる符号化装置、符号化方法及びプログラムによれば、デジタル信号を効率良く符号化することができる。また、本発明にかかる復号化装置、復号化方法及びプログラムによれば、上記符号化装置、符号化方法又はプログラムにより符号化されたデータをデジタル信号に復号化できる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して、本実施形態に係る音声処理装置の構成について説明する。
【００１９】
本発明の実施形態に係る音声処理装置１０の構成を図１に示す。なお、音声処理装置１０は、デジタル音声信号を符号化する音声符号化装置として機能する他、符号化されたデジタル音声信号を復号化する音声復号化装置としても機能する。
【００２０】
音声処理装置１０は、図１に示すように、音声入力装置１１と、記憶装置１２と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１４と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１５と、を備える。音声入力装置１１が備える各ユニットはバスを介して接続される。
【００２１】
音声入力装置１１は、音声を入力してデジタル音声信号Ｓｏｕｎｄ０に変換する。音声入力装置１１は、例えば、音声を１６ｋＨｚのサンプリング周波数でサンプリングし、１６ビットで量子化してデジタル音声信号Ｓｏｕｎｄ０に変換する。
【００２２】
記憶装置１２は、音声入力装置１１から供給されたデジタル音声信号Ｓｏｕｎｄ０を記憶するとともに、このデジタル音声信号Ｓｏｕｎｄ０の符号化や復号化に必要なデータを記憶する。記憶装置１２は、例えば、ハードディスクから構成される。
【００２３】
ＲＯＭ１３は、ＣＰＵ１５の動作を制御するためのプログラム等を記憶する。
【００２４】
ＲＡＭ１４は、ＣＰＵ１５のワークエリアとして機能する。
【００２５】
ＣＰＵ１５は、ＲＯＭ１３に記憶されたプログラムに従って処理を実行する。ＣＰＵ１５は、機能的には、符号化部１５−１と復号化部１５−２とを備える。
【００２６】
まず、符号化部１５−１について詳細に説明する。
【００２７】
符号化部１５−１は、デジタル音声信号を符号化するものであり、図２に示すように、ＤＣ削除部２１と、フレーム化部２２と、レベル調整部２３と、ＭＤＣＴ（Ｍｏｄｉｆｉｅｄ  Ｄｅｓｃｒｅｔｅ  Ｔｒａｎｓｆｏｒｍ、修正離散コサイン変換）部２４と、正規化部２５と、帯域分割部２６と、包絡生成部２７と、包絡除算部２８と、量子化部２９と、フラグ生成部３０と、フラグローテート部３１と、エントロピー符号化部３２と、符号量比較部３３と、データ削除部３４と、を備える。
【００２８】
ＤＣ削除部２１は、音声入力装置１１から供給されたデジタル音声信号Ｓｏｕｎｄ０から、直流成分を削除する。ＤＣ削除部２１は、例えば、式（１）により示される高域通過フィルタにより構成される。
【数１】
0005018557.tif 000002
・・・（１）
【００２９】
フレーム化部２２は、ＤＣ削除部２１により直流成分が削除されたデジタル音声信号Ｓｏｕｎｄ１を、符号化（圧縮）の処理単位であるフレームに分割する。フレーム化部２２は、１つのフレームにｍ（ｍ≧１）個のブロックを含むように分割する。なお、各ブロックは、１回のＭＤＣＴの次数分の長さを有する。また、理解を容易にするため、特に説明がない限り、１フレーム分のデジタル音声信号の符号化及び復号化について説明する。
【００３０】
レベル調整部２３は、フレーム化部２２から供給されたデジタル音声信号Ｓｏｕｎｄ１のレベルを調整する。レベル調整部２３は、フレームに含まれる全てのデジタル音声信号Ｓｏｕｎｄ１のレベルが指定ビット数に収まるように調整する。
【００３１】
例えば、１フレーム中の信号の最大振幅がｎビットのデータで表されるものとして、制圧目標ビット数をＮとすると、レベル調整部２３は、次の式（２）に従い、フレーム中の信号のビットをＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）側にシフトすることにより、デジタル音声信号のレベル調整を行う。
【数２】
0005018557.tif 000003
・・・（２）
なお、制圧目標ビット数Ｎは、例えば１０ビット程度とすることが望ましい。また、レベル調整部２３は、ビットシフト数ｓｈｉｆｔ＿ｂｉｔを記憶装置１２に記憶する。
【００３２】
ＭＤＣＴ部２４は、レベル調整部２３がレベル調整したデジタル音声信号Ｓｏｕｎｄ２を、ブロック毎に周波数変換してＭＤＣＴ係数Ｘｋ（ｋは変換した周波数を示す符号）を算出する。ＭＤＣＴ部２４は、例えば、式（３）に従いＭＤＣＴ係数Ｘｋを算出する。
【数３】
0005018557.tif 000004
・・・（３）
なお、ＭＤＣＴのタップ数Ｍは５１２タップが理想的である。
【００３３】
正規化部２５は、ＭＤＣＴ部２４がブロック毎に算出したＭＤＣＴ係数Ｘｋをそれぞれ正規化する。まず、正規化部２５は、ＭＤＣＴ係数Ｘｋの最大値を検索し、検索したＭＤＣＴ係数Ｘｋの最大値をゲインｇａｉｎとして設定する。そして、正規化部２５は、全てのＭＤＣＴ係数Ｘｋをゲインｇａｉｎでそれぞれ除算したうえで、指定ビット数（例えば、８ビット）にそれぞれ正規化（量子化）する。なお、正規化部２５は、ゲインｇａｉｎを、記憶装置１２に記憶する。なお、ゲインｇａｉｎはブロック毎に用意しても良いが、理解を容易にするため１フレームに１つのゲインｇａｉｎを設定するものとして説明する。
【００３４】
帯域分割部２６は、図３に示すように、正規化部２５により正規化されたＭＤＣＴ係数Ｘｋ＿ｒｅｇを、聴覚の特性に合わせて低域ほど狭く、高域ほど広くなるように対数的に分割する（区分けする）。なお、図３は、横軸を周波数ｆ、縦軸をＭＤＣＴ係数Ｘｋ＿ｒｅｇとして、１ブロック分のＭＤＣＴ係数Ｘｋ＿ｒｅｇを実線で示している。図３には、理解を容易にするために、ＭＤＣＴ係数Ｘｋ＿ｒｅｇを６つの分割帯域ｂ＿ｉ（ｉは分割帯域の数）に区分けした例を示すが、実際は１６程度に分割することが望ましい。また、図３、７、１０及び１２においてはＭＤＣＴ係数は絶対値で示す。
【００３５】
包絡生成部２７は、正規化部２５により正規化されたＭＤＣＴ係数Ｘｋ＿ｒｅｇに基づいて分割帯域ｂ＿ｉ毎に包絡値ｅｎｖ＿ｉを求める。ここでは、包絡値ｅｎｖ＿ｉは、各分割帯域ｂ＿ｉに含まれるＭＤＣＴ係数Ｘｋ＿ｒｅｇの絶対値の最大値とする。図３において、周波数軸と、分割帯域ｂ＿ｉ毎に波線で示した各線分との各距離が各分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉに相当する。また、包絡生成部２７は、求めた各分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉを記憶装置１２に記憶する。なお、包絡値ｅｎｖ＿ｉはブロック毎に用意してもよいが、理解を容易にするため１フレーム中の全てのブロックに共通の値を用いるものとして説明する。
【００３６】
包絡除算部２８は、正規化部２５により正規化されたＭＤＣＴ係数Ｘｋ＿ｒｅｇのそれぞれを、包絡生成部２７が求めた包絡値ｅｎｖ＿ｉのうち対応する分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉで除算する。具体的には、包絡除算部２８は、各分割帯域ｂ＿ｉに含まれる全てのＭＤＣＴ係数Ｘｋ＿ｒｅｇを、当該分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉでそれぞれ除算する。
【００３７】
量子化部２９は、包絡除算部２８による除算済みのＭＤＣＴ係数Ｘｋ＿ｅのそれぞれを、分割帯域ｂ＿ｉ毎に予め定められた量子化ビット数のうち対応する分割帯域ｂ＿ｉの量子化ビット数でそれぞれ量子化する。この量子化ビット数は、人間の聴覚の特性に基づいて、低域ほど多く、高域ほど少なくなるように、例えば、８〜５ビット程度とすることが望ましい。
【００３８】
フラグ生成部３０は、量子化部２９が量子化したＭＤＣＴ係数Ｘｋ＿ｑを符号化するかしないかを示すフラグＦｌａｇ＿ｋを周波数毎に生成し、このフラグＦｌａｇ＿ｋを連結してフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを生成する。フラグ生成部３０は、例えば、ｍブロック分のＭＤＣＴ係数Ｘｋ＿ｑが全て「０」である周波数については「０」、ｍブロック分のＭＤＣＴ係数Ｘｋ＿ｑのいずれかが「０」以外である周波数については「１」と設定した全周波数分のフラグＦｌａｇ＿ｋを周波数の小さい順に連結することにより、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを生成する。
【００３９】
なお、フラグ生成部３０は、データを削除したことを示す信号を後述するデータ削除部３４から供給された場合、再度フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを生成する。
【００４０】
フラグローテート部３１は、フラグ生成部３０が生成したフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔに基づいて、最後尾に最も長く「０」が続くフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔを求める。また、フラグローテート部３１は、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔからフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔにするために必要なローテート数Ｒｏｔａｔｅを求める。
【００４１】
エントロピー符号化部３２は、「残りの符号は全て０である」ことを示す符号を用いて、フラグローテート部３１が生成したフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔをエントロピー符号化する。なお、エントロピー符号化部３２は、レンジコーダ、ハフマンコード等のエントロピー符号化を行う。
【００４２】
また、エントロピー符号化部３２は、量子化部２９により量子化されたＭＤＣＴ係数Ｘｋ＿ｑのうち、フラグ生成部３０が生成したフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔの値が「１」である周波数のＭＤＣＴ係数Ｘｋ＿ｑを周波数順にエントロピー符号化する。さらに、エントロピー符号化部３２は、記憶装置１２に記憶されたビットシフト数ｓｈｉｆｔ＿ｂｉｔとゲインｇａｉｎと包絡値ｅｎｖ＿ｉとをエントロピー符号化する。
【００４３】
また、エントロピー符号化部３２は、フラグローテート部３１が生成したローテート数Ｒｏｔａｔｅとあらかじめ記憶装置１２に記憶された１つ前のフレームのローテート数Ｒｏｔａｔｅ＿ｏｌｄとの差分を求め、求めたローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆをエントロピー符号化する。また、エントロピー符号化部３２は、ローテート数Ｒｏｔａｔｅをローテート数Ｒｏｔａｔｅ＿ｏｌｄとして記憶装置１２に記憶する。
【００４４】
符号量比較部３３は、エントロピー符号化部３２が符号化した１フレーム分の符号化データのデータ量が予め設定された基準値を超えているか否かを判別する。符号量比較部３３は、符号化データのデータ量が基準値を超えていないと判別した場合、符号化データを記憶装置１２に記憶する。一方、符号量比較部３３は、符号化データのデータ量が目標符号量を超えていると判別した場合、符号化データの削減を指示する信号をデータ削除部３４に供給する。なお、目標符号量は、あらかじめ、記憶装置１２等に記憶しておく。
【００４５】
データ削除部３４は、符号量比較部３３から供給された符号化データの削減を指示する信号に応答して、データを削除する。具体的には、例えば、データ削除部３４は、各周波数のｍブロック分のＭＤＣＴ係数Ｘｋ＿ｑから当該周波数の重要度を求める。そして、データ削除部３４は、重要度が最も小さい周波数のＭＤＣＴ係数Ｘｋ＿ｑを「０」に設定するとともに、データを削除したことを示す信号をフラグ生成部３０に供給する。
【００４６】
重要度を求める方法としては、例えば、各周波数のｍブロック分のＭＤＣＴ係数Ｘｋ＿ｑから当該周波数のエネルギーを求め、エネルギーが高い周波数ほど重要度を高く設定する方法が考えられる。
【００４７】
例えば、ｉ番目の周波数のエネルギーは、次の式（４）によって表すことができる。
【数４】
0005018557.tif 000005
・・・（４）
【００４８】
なお、データ削除部３４は、周波数に依存した重み付け係数をエネルギーに乗算した上で、重要度を求めても良い。
【００４９】
例えば、データ削除部３４は、５００Ｈｚ未満のＭＤＣＴ係数Ｘｋ＿ｑには１．３を乗算し、５００以上３５００Ｈｚ未満のＭＤＣＴ係数Ｘｋ＿ｑには１．１を乗算し、３５００Ｈｚ以上のＭＤＣＴ係数Ｘｋ＿ｑには１．０を乗算する。
【００５０】
符号化部１５−１は、以上のようにしてデジタル音声信号をフレーム毎に符号化し、生成した符号化データを記憶装置１２に記憶する。
【００５１】
次に、復号化部１５−２について詳細に説明する。
【００５２】
復号化部１５−２は、符号化部１５−１により符号化された符号化データを復号するものであり、図４に示すように、エントロピー復号化部４１と、フラグローテート部４２と、除外データ補完部４３と、逆量子化部４４と、包絡乗算部４５と、ゲイン合成部４６と、ＩＭＤＣＴ部４７と、レベル再現部４８と、を備える。
【００５３】
エントロピー復号化部４１は、記憶装置１２に記憶された符号化データを復号化する。エントロピー復号化部４１は、エントロピー復号化により、符号化対象であった周波数のＭＤＣＴ係数Ｘｋ＿ｑと、ビットシフト数ｓｈｉｆｔ＿ｂｉｔと、ゲインｇａｉｎと、包絡値ｅｎｖ＿ｉと、ローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆとを復号化する。また、エントロピー復号化部４１は、エントロピー復号化により、フラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔを復号化する。
【００５４】
また、エントロピー復号化部４１は、復号化したローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆと、あらかじめ記憶装置１２に記憶されたローテート数Ｒｏｔａｔｅ＿ｏｌｄとからローテート数Ｒｏｔａｔｅを求める。また、エントロピー復号化部４１は、ビットシフト数ｓｈｉｆｔ＿ｂｉｔと、ゲインｇａｉｎと、包絡値ｅｎｖ＿ｉと、を記憶装置１２に記憶する。なお、エントロピー復号化部４１は、求めたローテート数Ｒｏｔａｔｅをローテート数Ｒｏｔａｔｅ＿ｏｌｄとして記憶装置１２に記憶する。
【００５５】
フラグローテート部４２は、エントロピー復号化部４１により復号化されたフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔと、ローテート数Ｒｏｔａｔｅとに基づいて、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを求める。具体的には、フラグローテート部４２は、エントロピー復号化部４１により復号化されたフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔを、ローテート数Ｒｏｔａｔｅの分だけ符号化のときと逆方向にローテートすることによりフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを求める。
【００５６】
除外データ補完部４３は、フラグローテート部４２が求めたフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔに基づいて、符号化対象から除外された周波数のＭＤＣＴ係数Ｘｋ＿ｑを補完することにより、全周波数のＭＤＣＴ係数Ｘｋ＿ｑを生成する。具体的には、除外データ補完部４３は、フラグＦｌａｇ＿ｋが「１」、すなわち符号化対象であった周波数のＭＤＣＴ係数Ｘｋ＿ｑとしては、エントロピー復号化部４１が復号化したｍブロック分のＭＤＣＴ係数Ｘｋ＿ｑを設定し、フラグが「０」、すなわち符号化対象でなかった周波数のＭＤＣＴ係数Ｘｋ＿ｑとしては、全て「０」を設定する。除外データ補完部４３は、生成したＭＤＣＴ係数Ｘｋ＿ｑを逆量子化部４４に供給する。
【００５７】
逆量子化部４４は、除外データ補完部４３が生成したＭＤＣＴ係数Ｘｋ＿ｑを、分割帯域ｂ＿ｉ毎に予め定められた精度で、それぞれ逆量子化する。
【００５８】
包絡乗算部４５は、逆量子化部４４により逆量子化されたＭＤＣＴ係数Ｘｋ＿ｅのそれぞれに、記憶装置１２に記憶された包絡値ｅｎｖ＿ｉのうち対応する分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉを乗算する。包絡乗算部４５は、各分割帯域ｂ＿ｉに含まれる全てのＭＤＣＴ係数Ｘｋ＿ｅに、当該分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉを乗算する。
【００５９】
ゲイン合成部４６は、包絡乗算部４５により包絡値ｅｎｖ＿ｉが乗算されたＭＤＣＴ係数Ｘｋ＿ｒｅｇのそれぞれに、記憶装置１２に記憶されたゲインｇａｉｎを乗算する。
【００６０】
ＩＭＤＣＴ部４７は、ゲイン合成部４６によりゲインｇａｉｎが乗算されたＭＤＣＴ係数Ｘｋをブロック毎に逆ＭＤＣＴ変換することにより、時間軸のデジタル音声信号Ｓｏｕｎｄ２を求める。
【００６１】
レベル再現部４８は、記憶装置１２に記憶されたビットシフト数ｓｈｉｆｔ＿ｂｉｔに基づいて、ＩＭＤＣＴ部４７が求めたデジタル音声信号Ｓｏｕｎｄ２のレベルを調整することによりデジタル音声信号Ｓｏｕｎｄ１を生成する。
【００６２】
次に、本実施形態に係る音声処理装置の動作について説明する。
【００６３】
まず、図５に示すフローチャートを用いて、音声処理装置１０の符号化処理について説明する。符号化部１５−１は、音声入力装置１１からデジタル音声信号を供給されると、図５に示すフローチャートに従って符号化処理を実行する。
【００６４】
ＤＣ削除部２１は、式（１）に従って、デジタル音声信号Ｓｏｕｎｄ０の直流成分を削除する（ステップＳ１１）。
【００６５】
フレーム化部２２は、直流成分が削除されたデジタル音声信号Ｓｏｕｎｄ１をフレームに分割する（ステップＳ１２）。
【００６６】
レベル調整部２３は、１フレームに分割されたデジタル音声信号Ｓｏｕｎｄ１のレベルを調整する（ステップＳ１３）。
【００６７】
ＭＤＣＴ部２４は、レベル調整されたデジタル音声信号Ｓｏｕｎｄ２をブロック毎に周波数変換する（ステップＳ１４）。
【００６８】
正規化部２５は、ブロック毎に算出されたＭＤＣＴ係数Ｘｋをそれぞれ正規化する（ステップＳ１５）。
【００６９】
帯域分割部２６は、正規化されたＭＤＣＴ係数Ｘｋ＿ｒｅｇを、聴覚の特性に合わせて低域ほど狭く、高域ほど広くなるように対数的に分割する（ステップＳ１６）。
【００７０】
包絡生成部２７は、正規化されたＭＤＣＴ係数Ｘｋ＿ｒｅｇに基づいて分割帯域ｂ＿ｉ毎に包絡値ｅｎｖ＿ｉを求める（ステップＳ１７）。
【００７１】
包絡除算部２８は、正規化されたＭＤＣＴ係数Ｘｋ＿ｒｅｇのそれぞれを、対応する分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉで除算する（ステップＳ１８）。
【００７２】
量子化部２９は、各包絡値ｅｎｖ＿ｉで除算済みのＭＤＣＴ係数Ｘｋ＿ｅのそれぞれを、分割帯域ｂ＿ｉ毎に予め定められた量子化ビット数のうち対応する分割帯域ｂ＿ｉの量子化ビット数でそれぞれ量子化する（ステップＳ１９）。
【００７３】
フラグ生成部３０は、フラグＦｌａｇ＿ｋを周波数毎に生成し、このフラグＦｌａｇ＿ｋを連結してフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを生成する（ステップＳ２０）。
【００７４】
符号化部１５−１は、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを生成した後、フラグ符号化処理（ステップＳ２１）を実行する。フラグ符号化処理については、図６に示すフローチャートを参照して詳細に説明する。
【００７５】
フラグ符号化処理では、まず、フラグローテート部３１は、生成されたフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔの中から最も長く「０」が続くビット列のを検索する（ステップＳ３１）。なお、フラグローテート部３１は、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔが周波数の低い順に生成されている場合、最も高い周波数のフラグの次には最も低い周波数のフラグが続いているものとして、ビット列を検索する。
【００７６】
フラグローテート部３１は、例えば、「０」のみからなるビット列のビット数（ビット長）を格納するビット数格納用変数Ｂｉｔ＿ｃｎｔと、「０」のみからなるビット列のうち最長のビット列のビット数を格納する最長ビット数格納用変数Ｂｉｔ＿ｃｎｔ＿ｍａｘと、「０」のみからなるビット列のうち最長のビット列の最後のビットの位置を格納する最終ビット位置格納用変数Ｂｉｔ＿ｍａｘ＿ｐｏｓと、を用いてビット位置を求める。
【００７７】
フラグローテート部３１は、ビット数格納用変数Ｂｉｔ＿ｃｎｔと、最長ビット数格納用変数Ｂｉｔ＿ｃｎｔ＿ｍａｘと、最終ビット位置格納用変数Ｂｉｔ＿ｍａｘ＿ｐｏｓと、を全て「０」に初期化する。そして、フラグローテート部３１は、位置が「０」であるビット、すなわち、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔの最初のフラグ（例えば、最も低い周波数に対応するフラグ）から順に、各フラグＦｌａｇ＿ｋが「０」か否かを判別し、判別結果に応じた処理を実行する。
【００７８】
フラグローテート部３１は、判別結果が「０」である場合は、ビット数格納用変数Ｂｉｔ＿ｃｎｔをインクリメントしてから次のフラグのチェックに移行する。
【００７９】
一方、フラグローテート部３１は、判別結果が「１」である場合は、さらにビット数格納用変数Ｂｉｔ＿ｃｎｔの値が最長ビット数格納用変数Ｂｉｔ＿ｃｎｔ＿ｍａｘの値より大きいか否かを判別する。
【００８０】
フラグローテート部３１は、ビット数格納用変数Ｂｉｔ＿ｃｎｔの値の方が大きいと判別したときは最長ビット数格納用変数Ｂｉｔ＿ｃｎｔ＿ｍａｘにビット数格納用変数Ｂｉｔ＿ｃｎｔの値を格納し、前のビットの位置を最終ビット位置格納用変数Ｂｉｔ＿ｍａｘ＿ｐｏｓに格納し、ビット数格納用変数Ｂｉｔ＿ｃｎｔの値を「０」にクリアしてから次のフラグのチェックに移行する。一方、フラグローテート部３１は、ビット数格納用変数Ｂｉｔ＿ｃｎｔの値の方が小さい（又は同じ）と判別したときは、ビット数格納用変数Ｂｉｔ＿ｃｎｔの値を「０」にクリアして次のフラグのチェックに移行する。
【００８１】
フラグローテート部３１は、全てのフラグをチェックした後、さらに判別結果が「１」となるフラグのチェックを終了すると、検索を終了する。なお、最終ビット位置格納用変数Ｂｉｔ＿ｍａｘ＿ｐｏｓに格納されている値が最も長く「０」が続くビット列の最後のビットの位置となる。
【００８２】
次に、フラグローテート部３１は、最も長く「０」が続くビット列の最後のビットの位置に基づいて、当該最も長く「０」が続くビット列が最後尾にくるようにフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔをローテートする（ステップＳ３２）。フラグローテート部３１は、例えば、周波数の低い方にローテートする場合は、最も長く「０」が続くビット列の最後のビットの位置をローテート数としてローテートする。
【００８３】
図７を参照して、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔをローテートする例を説明する。図７に示すように、周波数帯域は６つの分割帯域ｂ＿ｉに分割され、１〜６の分割帯域ｂ＿ｉにはそれぞれ「２」、「３」、「４」、「６」、「９」、「１４」個のＭＤＣＴ係数Ｘｋ＿ｑが含まれているものとして説明する。
【００８４】
図７に示すように、量子化部２９による量子化、或いは、データ削除部３４によるデータの削除により、ＭＤＣＴ係数Ｘｋ＿ｑが「０」とされた周波数のフラグＦｌａｇ＿ｋは「０」、他の周波数のフラグＦｌａｇ＿ｋは「１」に設定される。
【００８５】
ローテート前のフラグ列が図７に示すような値である場合、フラグローテート部３１は、ステップＳ３１の処理により、最も長く「０」が続くビット列の最後のビットの位置として「６」を検出する。フラグローテート部３１は、ローテート数Ｒｏｔａｔｅを「６」として設定し、フラグ列を左に「６」ビット分ローテートすることにより、図７に示すようなフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔを求める。
【００８６】
エントロピー符号化部３２は、ローテート数Ｒｏｔａｔｅとあらかじめ記憶装置１２に記憶された１つ前のフレームのローテート数Ｒｏｔａｔｅ＿ｏｌｄとの差分をとり、求めたローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆを符号化する。（ステップＳ３３）。
【００８７】
エントロピー符号化部３２は、ローテート数Ｒｏｔａｔｅをローテート数Ｒｏｔａｔｅ＿ｏｌｄとして記憶装置１２に記憶する（ステップＳ３４）。
【００８８】
エントロピー符号化部３２は、フラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔのうち符号化されていない全てのフラグが全て「０」であるか否かを判別する（ステップＳ３４）。エントロピー符号化部３２は、例えば、符号化済みのフラグ数と記憶装置１２に記憶された最長ビット数格納用変数Ｂｉｔ＿ｃｎｔ＿ｍａｘの値との和がフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔのフラグ数と一致するか否かにより判別する。
【００８９】
エントロピー符号化部３２は、符号化されていないフラグのいずれかが「０」ではないと判別したときは（ステップＳ３５：ＮＯ）、フラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔのフラグを１つ符号化する（ステップＳ３６）。
【００９０】
エントロピー符号化部３２は、符号化されていない全てのフラグが全て「０」であると判別したときは（ステップＳ３５：ＹＥＳ）、残りのフラグが全て０であることを示す符号である「残りは０符号」を出力する（ステップＳ３７）。
【００９１】
符号化部１５−１は、「残りは０符号」を出力するとフラグ符号化処理を終了する。なお、フラグ符号化処理においては、フラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔは先頭のフラグから符号化するものとして説明した。
【００９２】
エントロピー符号化部３２は、フラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔ及びローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆをエントロピー符号化した後、その他のデータをエントロピー符号化する（ステップＳ２２）。具体的には、エントロピー符号化部３２は、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔの値が「１」である周波数のＭＤＣＴ係数Ｘｋ＿ｑと、ビットシフト数ｓｈｉｆｔ＿ｂｉｔと、ゲインｇａｉｎと、包絡値ｅｎｖ＿ｉとを符号化する。なお、エントロピー符号化部３２は、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔの連結順序に合わせて、ＭＤＣＴ係数Ｘｋ＿ｑを周波数の小さい順に符号化する。
【００９３】
符号量比較部３３は、エントロピー符号化部３２が符号化した１フレーム分の符号化データのデータ量が目標符号量以下であるか否かを判別する（ステップＳ２３）。
【００９４】
符号量比較部３３が、符号化データのデータ量が目標符号量以下であると判別すると（ステップＳ２３：ＹＥＳ）、符号化処理が完了する。
【００９５】
一方、符号量比較部３３が、符号化データのデータ量が目標符号量以下ではないと判別したときは（ステップＳ２３：ＮＯ）、データ削除部３４に符号化データの削減を指示する信号を供給する。
【００９６】
データ削除部３４は、符号量比較部３３から供給された符号化データの削減を求める信号に応答して、符号化データを削除する（ステップＳ２４）。データ削除部３４は、周波数毎に重要度を求め、重要度が最も低い周波数のＭＤＣＴ係数Ｘｋ＿ｑを「０」に設定するとともに、符号化データを削減したことを示す信号をフラグ生成部３０に供給する。
【００９７】
フラグ生成部３０は、符号化データを削減したことを示す信号をデータ削除部３４から供給されると、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを生成する処理を再度実行する（ステップＳ２０）。
【００９８】
次に、図８に示すフローチャートを用いて、音声処理装置１０の復号化処理について説明する。復号化部１５−２は、図８に示すフローチャートに従って復号化処理を実行することにより、記憶装置１２に記憶された符号化データをデジタル音声信号に復号する。
【００９９】
エントロピー復号化部４１は、フラグに関するデータ以外のデータを復号化する（ステップＳ４１）。具体的には、エントロピー復号化部４１は、記憶装置１２に記憶された符号化データをエントロピー復号化することにより、符号化対象であった周波数のＭＤＣＴ係数Ｘｋ＿ｑと、ビットシフト数ｓｈｉｆｔ＿ｂｉｔと、ゲインｇａｉｎと、包絡値ｅｎｖ＿ｉとを求める。
【０１００】
エントロピー復号化部４１は、エントロピー復号化によりフラグに関するデータを復号化する（ステップＳ４２）。フラグ復号化処理については、図９に示すフローチャートを参照して詳細に説明する。
【０１０１】
エントロピー復号化部４１は、記憶装置１２に記憶された符号化データをエントロピー復号化することにより、ローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆを求める（ステップＳ５１）。
【０１０２】
エントロピー復号化部４１は、ローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆとあらかじめ記憶装置１２に記憶された１つ前のフレームのローテート数Ｒｏｔａｔｅ＿ｏｌｄとから、ローテート数Ｒｏｔａｔｅを求め、求めたローテート数Ｒｏｔａｔｅをローテート数Ｒｏｔａｔｅ＿ｏｌｄとして記憶装置１２に記憶する（ステップＳ５２）。
【０１０３】
エントロピー復号化部４１は、記憶装置１２に記憶された符号化データのうちフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔに対応する部分読み出し、先頭から順に対応する符号が「残りは０符号」か否かを判別し、判別結果に応じた処理を実行する。（ステップＳ５３）。
【０１０４】
エントロピー復号化部４１は、対応する符号が「残りは０符号」ではないと判別したときは（ステップＳ５３：ＮＯ）、対応する符号を１つのフラグとして復号化し（ステップＳ５４）、次の符号が「残りは０符号」か否かを判別する（ステップＳ５３）。
【０１０５】
一方、エントロピー復号化部４１は、対応する符号が「残りは０符号」であると判別したときは（ステップＳ５３：ＹＥＳ）、残りのフラグを全て「０」に設定したフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔを生成する（ステップＳ５５）。
【０１０６】
フラグローテート部４２は、ステップＳ５５で求めたフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔを、ステップＳ５２で求めたローテート数Ｒｏｔａｔｅの分だけ符号化のときと逆方向にローテートすることにより、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを生成する（ステップＳ５６）。復号化部１５−２は、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを生成すると、フラグ復号化処理を終了する。
【０１０７】
除外データ補完部４３は、ステップＳ４１で求めたＭＤＣＴ係数Ｘｋ＿ｑとステップＳ５６で求めたフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔとに基づいて、各周波数のＭＤＣＴ係数Ｘｋ＿ｑを生成する（ステップＳ４３）。具体的には、除外データ補完部４３は、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔのうち対応するフラグが「０」、すなわち符号化対象でなかった周波数のＭＤＣＴ係数Ｘｋ＿ｑには全て「０」を補完することにより、全ての周波数のＭＤＣＴ係数Ｘｋ＿ｑを生成する。
【０１０８】
逆量子化部４４は、ステップＳ４３で生成したＭＤＣＴ係数Ｘｋ＿ｑを、分割帯域ｂ＿ｉ毎に予め定められた精度で、それぞれ逆量子化する（ステップＳ４４）。
【０１０９】
包絡乗算部４５は、ステップＳ４４で逆量子化されたＭＤＣＴ係数Ｘｋ＿ｅのそれぞれに、記憶装置１２に記憶された包絡値ｅｎｖ＿ｉのうち対応する分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉを乗算する（ステップＳ４５）。
【０１１０】
ゲイン合成部４６は、ステップＳ４５で包絡値ｅｎｖ＿ｉが乗算されたＭＤＣＴ係数Ｘｋ＿ｒｅｇのそれぞれに、記憶装置１２に記憶されたゲインｇａｉｎを乗算する（ステップＳ４６）。
【０１１１】
ＩＭＤＣＴ部４７は、ステップ４６でゲインｇａｉｎが乗算されたＭＤＣＴ係数Ｘｋをブロック毎に逆ＭＤＣＴ変換することにより、時間軸のデジタル音声信号Ｓｏｕｎｄ２を求める（ステップＳ４７）。
【０１１２】
レベル再現部４８は、記憶装置１２に記憶されたビットシフト数ｓｈｉｆｔ＿ｂｉｔに基づいて、ステップＳ４７で求めたデジタル音声信号Ｓｏｕｎｄ２のレベルを調整する（ステップＳ４８）。レベル再現部４８がデジタル音声信号Ｓｏｕｎｄ２のレベルを調整することによりデジタル音声信号Ｓｏｕｎｄ１を生成すると復号化処理が完了する。
【０１１３】
上述のように、本実施形態に係る音声処理装置１０は、フラグローテート部４２が最後尾に最も長く「０」が続くフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔになるようにフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔをローテートし、エントロピー符号化部３２が「残りは０符号」を用いてフラグ列をエントロピー符号化する。このため、本実施形態に係る音声処理装置１０によれば、符号化効率の向上を期待できる。
【０１１４】
ここで、図１０を用いて、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔをローテートするメリットを説明する。図１０（Ａ）は、母音部分に相当するブロックを周波数変換したときの周波数ｆとＭＤＣＴ係数Ｘｋ＿ｒｅｇの関係の一例を示す図である。図１０（Ｂ）は、子音部分に相当するブロックを周波数変換したときの周波数ｆとＭＤＣＴ係数Ｘｋ＿ｒｅｇの関係の一例を示す図である。
【０１１５】
図１０（Ａ）に示すように、母音部分に相当するブロックを周波数変換したときは、１、２及び６番目の分割帯域ｂ＿ｉに含まれるＭＤＣＴ係数Ｘｋ＿ｒｅｇの絶対値が小さい値となる。一方、図１０（Ｂ）に示すように、子音部分に相当するブロックを周波数変換したときは、１、２及び３番目の分割帯域ｂ＿ｉに含まれるＭＤＣＴ係数Ｘｋ＿ｒｅｇの絶対値、並びに、６番目の分割帯域ｂ＿ｉに含まれるＭＤＣＴ係数Ｘｋ＿ｒｅｇのうち比較的高周波側のＭＤＣＴ係数Ｘｋ＿ｒｅｇの絶対値が小さい値となる。
【０１１６】
このようにＭＤＣＴ係数Ｘｋ＿ｒｅｇの絶対値が小さい値となる周波数のフラグＦｌａｇ＿ｋは、フラグ生成部３０により「０」とされる可能性がきわめて高くなる。この理由は、量子化部２９による量子化によりＭＤＣＴ係数Ｘｋ＿ｑが「０」とされる確率が高いことに加え、データ削除部３４によりＭＤＣＴ係数Ｘｋ＿ｑが「０」とされる可能性が極めて高いためである。
【０１１７】
ここで、母音部分に相当するブロックを周波数変換したときは、１番目と２番目の分割帯域ｂ＿ｉに属する周波数のフラグＦｌａｇ＿ｋが連続して「０」となる可能性が極めて高く、また、６番目の分割帯域ｂ＿ｉに属する周波数のフラグＦｌａｇ＿ｋが連続して「０」となる可能性が極めて高い。以下、理解を容易にするため、１、２及び６番目の分割帯域ｂ＿ｉに属する周波数のフラグＦｌａｇ＿ｋは全て「０」であると仮定して説明する。
【０１１８】
エントロピー符号化部３２は、「残りの符号は全て０である」ことを示す符号を用いてフラグ列をエントロピー符号化する。このため、フラグ生成部３０が生成したフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔをそのままエントロピー符号化する場合、６番目の分割帯域ｂ＿ｉに属する周波数のフラグＦｌａｇ＿ｋについてのみ「残りの符号は全て０である」ことを示す符号を用いて符号化することになる。
【０１１９】
一方、フラグローテート部３１がフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔをローテートしたフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔを符号化する場合、６番目の分割帯域ｂ＿ｉに属する周波数のフラグＦｌａｇ＿ｋに加え１番目及び２番目の分割帯域ｂ＿ｉに属する周波数のフラグＦｌａｇ＿ｋについても「残りの符号は全て０である」ことを示す符号を用いて符号化することができる。
【０１２０】
子音部分に相当するブロックを周波数変換したときは、フラグが「０」となる周波数が比較的高周波側にシフトする。しかしながら、フラグが「０」となる周波数は、低周波側と高周波側に分かれていることは同様であるため、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔをローテートするメリットは損なわれない。このように、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔをローテートしたフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔを符号化することにより、符号化効率の向上が期待できる。
【０１２１】
また、本実施形態に係る音声処理装置１０は、エントロピー符号化部３２は、本フレームのローテート数Ｒｏｔａｔｅそのものでなく、ローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆを符号化する。このため、さらなる符号化効率の向上が期待できる。これは、連続するフレームでは、ローテート数も近い値となる可能性が高いためである。
【０１２２】
（変形例）
上記実施形態では、復号時にローテート数Ｒｏｔａｔｅを得るために、ローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆを符号化していた。しかし、ローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆ自体も一定の容量をもつため、符号化データにはローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆを含まない方が好ましい。以下、符号化時に前述の包絡値ｅｎｖ＿ｉに基づいてフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔをローテートすることにより、符号化データにローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆを含まずに、復号時にローテート数Ｒｏｔａｔｅを得る例について説明する。
【０１２３】
なお、変形例に係る音声処理装置は、上記実施形態に係る音声処理装置１０と同様の構成であり、フラグ符号化処理及びフラグ復号化処理のみが異なる。このため、変形例に係る音声処理装置については、構成の説明は省略し、フラグ符号化処理及びフラグ復号化処理について図面を参照しながら説明する。
【０１２４】
まず、図１１に示すフローチャートを用いて、変形例に係る音声処理装置のフラグ符号化処理について説明する。
【０１２５】
包絡生成部２７は、全ての周波数のフラグＦｌａｇ＿ｋが「０」である分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉを「０」に設定する（ステップＳ６１）。
【０１２６】
なお、データ削除部３４により重要度が最も低い周波数のＭＤＣＴ係数Ｘｋ＿ｑが「０」に設定される（ステップＳ２４）と、フラグ生成部３０は、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを生成する処理を再度実行する（ステップＳ２０）。このため、包絡生成部２７は、包絡生成（ステップＳ１７）と同様の処理を実行することにより、全ての周波数のフラグＦｌａｇ＿ｋが「０」である分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉを「０」に設定することができる。
【０１２７】
なお、全ての周波数のフラグＦｌａｇ＿ｋが「０」である分割帯域ｂ＿ｉに含まれる周波数のＭＤＣＴ係数Ｘｋ＿ｑは全て符号化しないため、当該分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉは復号化の際に使用しない。このため、符号化及び復号化の際にローテート数Ｒｏｔａｔｅを求めるためにこの包絡値ｅｎｖ＿ｉを利用することができる。
【０１２８】
フラグローテート部３１は、分割帯域ｂ＿ｉ単位でフラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔをローテートした場合に、末尾に長く０が続くフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔにするためのローテート数Ｒｏｔａｔｅを包絡値ｅｎｖ＿ｉに基づいて検索する（ステップＳ６２）。
【０１２９】
図１２を参照して、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを包絡値ｅｎｖ＿ｉに基づいてローテートする例を説明する。
【０１３０】
包絡値ｅｎｖ＿ｉが「０」である分割帯域ｂ＿ｉに含まれる周波数のフラグを全て「０」、包絡値ｅｎｖ＿ｉが「０」以外である分割帯域ｂ＿ｉに含まれる周波数のフラグを全て「１」としたときの分割帯域単位のフラグ列をフラグ列Ｆｌａｇｓｂ＿ｂｅｆ＿ｒｏｔと定義する。仮に、ステップＳ６１により、１、２及び６番目の分割帯域ｂ＿ｉの包絡値ｅｎｖ＿ｉが「０」に設定されたとすると、フラグ列Ｆｌａｇｓｂ＿ｂｅｆ＿ｒｏｔは、図１２に示したフラグ列になる。
【０１３１】
このフラグ列Ｆｌａｇｓｂ＿ｂｅｆ＿ｒｏｔを周波数が小さい方に２ビット、３ビット、４ビット、６ビット、９ビット、１４ビットと分割帯域ｂ＿ｉ毎（各分割帯域ｂ＿ｉに含まれる周波数の個数毎）にローテートさせた場合に、末尾に最も長く「０」が続くのは、フラグ列Ｆｌａｇｓｂ＿ｂｅｆ＿ｒｏｔを２＋３＝５ビット分ローテートさせたときである。図１２に示すように、フラグ列Ｆｌａｇｓｂ＿ｂｅｆ＿ｒｏｔを周波数が小さい方に５ビット分ローテートさせると、フラグ列Ｆｌａｇｓｂ＿ａｆｔ＿ｒｏｔのようなフラグ列になる。このフラグ列Ｆｌａｇｓｂ＿ａｆｔ＿ｒｏｔは、フラグ列の最初に「０」が１ビットだけ残るため末尾に最も長く「０」が続いたフラグ列ではないが、末尾に長く「０」が続いたフラグ列となる。
【０１３２】
このようにして、フラグローテート部３１は、分割帯域単位フラグ列Ｆｌａｇｓｂ＿ｂｅｆ＿ｒｏｔを分割帯域ｂ＿ｉ単位でローテートさせたときに、末尾に最も長く「０」が続くようにローテートしたときのローテート数Ｒｏｔａｔｅを検出する。
【０１３３】
フラグローテート部３１は、求めたローテート数Ｒｏｔａｔｅに基づいてフラグ列Ｆｌａｇｓｂ＿ｂｅｆ＿ｒｏｔをローテートし、フラグ列Ｆｌａｇｓｂ＿ａｆｔ＿ｒｏｔを求める（ステップＳ６３）。
【０１３４】
以下、ステップＳ６４〜ステップＳ６６の処理は、図６のフローチャートに示したフラグ符号化処理のステップＳ３５〜ステップＳ３７と同様であるため説明を省略する。
【０１３５】
次に、図１３に示すフローチャートを用いて、変形例に係る音声処理装置のフラグ復号化処理について説明する。
【０１３６】
エントロピー復号化部４１は、記憶装置１２に記憶された符号化データのうちフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔに対応する部分を読み出し、順に対応する符号が「残りは０符号」か否かを判別し、判別結果に応じた処理を実行する。（ステップＳ７１）。
【０１３７】
エントロピー復号化部４１は、対応する符号が「残りは０符号」ではないと判別したときは（ステップＳ７１：ＮＯ）、対応する符号を１つのフラグとして復号化し（ステップＳ７２）、次の符号が「残りは０符号」か否かを判別する（ステップＳ７１）。
【０１３８】
一方、エントロピー復号化部４１は、対応する符号が「残りは０符号」であると判別したときは（ステップＳ７１：ＹＥＳ）、残りのフラグを全て０に設定してフラグ列Ｆｌａｇｓ＿ａｆｔ＿ｒｏｔを生成（ステップＳ７３）した後、記憶装置１２に記憶された包絡値ｅｎｖ＿ｉに基づいてローテート数を求める（ステップＳ７４）。
【０１３９】
フラグローテート部４２は、ステップＳ７４では、フラグ符号化処理においてフラグローテート部３１が実行したステップＳ６２と同様の処理を実行する。さらに、ローテート数Ｒｏｔａｔｅを求めるために用いる包絡値ｅｎｖ＿ｉはステップＳ７４とステップＳ６２とで同じであるため、フラグローテート部４２は、ステップＳ６２においてフラグローテート部３１が求めたローテート数Ｒｏｔａｔｅと同じローテート数Ｒｏｔａｔｅを求めることができる。
【０１４０】
フラグローテート部４２は、ステップＳ７４で求めたローテート数Ｒｏｔａｔｅに基づいて、フラグ列Ｆｌａｇｓ＿ｂｅｆ＿ｒｏｔを求める（ステップＳ７５）。
【０１４１】
変形例に係る音声処理装置によれば、ローテート数Ｒｏｔａｔｅあるいはローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆを符号化せずに符号化の際のローテート数Ｒｏｔａｔｅを復号化の際に得ることができるため、符号化効率の向上を図ることができる。
【０１４２】
なお、上記実施形態に係る音声処理装置の符号化処理及び復号化処理と、上記変形例に係る音声処理装置の符号化処理及び復号化処理とを組み合わせてもよい。
【０１４３】
すなわち、ローテート数Ｒｏｔａｔｅ又はローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆを符号化してまでベストなローテート数Ｒｏｔａｔｅを用いた方が符号化効率が良いのか、それともローテート数Ｒｏｔａｔｅ又はローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆを符号化せずに包絡値ｅｎｖ＿ｉから求めたローテート数Ｒｏｔａｔｅを用いた方が符号化効率が良いのかを求め、符号化効率の良い方を選択して符号化することもできる。
【０１４４】
例えば、両方の方法で符号化した後に、両方の符号化効率を比較して符号化効率の良い方の方法を採用してもよいし、符号化の前にあらかじめ用意した計算式の計算結果等からいずれの方法で符号化するかを決定するようにしてもよい。なお、復号化の際は、ローテート数Ｒｏｔａｔｅ又はローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆの有無により、いずれの方法で符号化したかを判別することができる。
【０１４５】
また、上記実施形態に係る音声処理装置では、ローテート数の差分Ｒｏｔａｔｅ＿ｄｉｆを符号化していたが、ローテート数Ｒｏｔａｔｅそのものを符号化するようにしてもよい。
【０１４６】
また、上記実施形態に係る音声処理装置では、周波数変換にＭＤＣＴを用いていたが、時間軸のデータを周波数軸のデータに変換するものであればＤＣＴなど他の周波数変換を用いても良い。
【０１４７】
また、所定のビットレートに符号量を抑えるために削除するデータを選択する方法や、量子化の方法などが上述した実施形態に限定されないことは勿論である。
【０１４８】
上記実施形態では、符号化装置、復号化装置を音声処理装置に適用した場合について説明した。しかし、符号化装置、復号化装置は、音声処理装置に限るものではなく、例えば、携帯電話、携帯端末のような送受信装置に適用することができる。
【０１４９】
また、上記実施形態では、プログラムが、それぞれメモリ等に予め記憶されているものとして説明した。しかし、符号化装置、復号化装置を、装置の全部又は一部として動作させ、あるいは、上述の処理を実行させるためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＭＯ（Ｍａｇｎｅｔｏ  Ｏｐｔｉｃａｌ  Ｄｉｓｋ）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【０１５０】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等してプログラムを実行してもよい。
【図面の簡単な説明】
【０１５１】
【図１】本発明の実施形態に係る音声処理装置の構成を示すブロック図である。
【図２】本発明の実施形態に係る音声処理装置の符号化部の構成を示すブロック図である。
【図３】周波数帯域の分割と包絡値とを説明するための図である。
【図４】本発明の実施形態に係る音声処理装置の復号化部の構成を示すブロック図である。
【図５】図２に示す符号化部が実行する符号化処理を示すフローチャートである。
【図６】図５のフローチャートに示すフラグ符号化処理を示すフローチャートである。
【図７】図６のフローチャートに示すフラグ符号化処理におけるフラグ列のローテート方法を説明するための図である。
【図８】図４に示す復号化部が実行する復号化処理を示すフローチャートである。
【図９】図８のフローチャートに示すフラグ復号化処理を示すフローチャートである。
【図１０】（Ａ）は、母音部分に相当するブロックを周波数変換したときの周波数とＭＤＣＴ係数の関係を示す図である。（Ｂ）は、子音部分に相当するブロックを周波数変換したときの周波数とＭＤＣＴ係数の関係を示す図である。
【図１１】変形例に係る音声処理装置の符号化部が実行するフラグ符号化処理を示すフローチャートである。
【図１２】図１１のフローチャートに示すフラグ符号化処理におけるフラグ列のローテート方法を説明するための図である。
【図１３】変形例に係る音声処理装置の復号化部が実行するフラグ復号化処理を示すフローチャートである。
【符号の説明】
【０１５２】
１０  音声処理装置
１１  音声入力装置
１２  記憶装置
１３  ＲＯＭ
１４  ＲＡＭ
１５  ＣＰＵ
１５−１  符号化部
１５−２  復号化部
２１  ＤＣ削除部
２２  フレーム化部
２３  レベル調整部
２４  ＭＤＣＴ部
２５  正規化部
２６  帯域分割部
２７  包絡生成部
２８  包絡除算部
２９  量子化部
３０  フラグ生成部
３１  フラグローテート部
３２  エントロピー符号化部
３３  符号量比較部
３４  データ削除部
４１  エントロピー符号化部
４２  フラグローテート部
４３  除外データ補完部
４４  逆量子化部
４５  包絡乗算部
４６  ゲイン合成部
４７  ＩＭＤＣＴ部
４８  レベル再現部
【図１】
0005018557.tif 000006
【図２】
0005018557.tif 000007
【図３】
0005018557.tif 000008
【図４】
0005018557.tif 000009
【図５】
0005018557.tif 000010
【図６】
0005018557.tif 000011
【図７】
0005018557.tif 000012
【図８】
0005018557.tif 000013
【図９】
0005018557.tif 000014
【図１０】
0005018557.tif 000015
【図１１】
0005018557.tif 000016
【図１２】
0005018557.tif 000017
【図１３】
0005018557.tif 000018