(57)【特許請求の範囲】
【請求項１】
入力データをビットストリームにフレーム単位で符号化する符号化装置であって、
前記入力データを時間関数から周波数関数に変換してスペクトル信号を生成するスペクトル信号生成手段と、
前記スペクトル信号の心理聴覚分析を行い、帯域毎のビット割当を決定するビット割当手段と、
前記ビット割当手段により決定された現在フレームのビット割当と直前フレームのビット割当との差分データを演算し、前記差分データをエントロピー符号化して差分符号化データを算出する差分データ符号化器と、
前記スペクトル信号を前記ビット割当に基づいて量子化して量子化スペクトルを生成する量子化手段と、
前記差分符号化データ及び前記量子化スペクトルを含む生成フレームを生成し、前記生成フレームにより構成されるビットストリームを出力するビットストリーム出力手段とを含み、
前記ビット割当手段は、
前記ビットストリームを構成する１フレームのビット数（以下、所望のビット数）よりも大きくなるように目標ビット数を設定し、その目標ビット数に基づいてビット割当を決定し、そのビット割当及び直前フレームのビット割当の差分データをエントロピー符号化した差分符号化データと、当該決定されたビット割当に基づいて量子化された量子化スペクトルとを含んで生成される場合の生成フレームのビット数が、前記所望のビット数より大きいか否かを比較し、
前記所望のビット数よりも大きい場合には、その所望のビット数より大きく、かつ、直前に設定された目標ビット数よりも小さい目標ビット数を再設定し、再設定された目標ビット数に基づいてビット割当を再決定し、再決定されたビット割当、及び、直前に設定された目標ビット数に基づいて決定されたビット割当の差分データをエントロピー符号化した差分符号化データと、当該再決定されたビット割当に基づいて量子化された量子化スペクトルとを含んで生成される場合の生成フレームのビット数が、前記所望のビット数より大きいか否かを比較する処理を繰り返し、
前記比較の結果、前記所望のビット数以下の場合には、そのときに決定されたビット割当を処理結果として出力する、符号化装置。
【請求項２】
前記ビット割当手段は、前記所望のビット数より大きいか否かを比較する処理を所定の制限回数繰り返し、かつ、前記所望のビット数より大きい場合には、当該所望のビット数に基づいて決定されたビット割当を処理結果として出力する、請求項１に記載の符号化装置。
【請求項３】
前記ビット割当手段における比較結果に応じたフラグを設定するフラグ設定手段をさらに含み、
前記ビットストリーム出力手段は、前記フラグを含む前記生成フレームを生成し出力する、請求項２に記載の符号化装置。
【請求項４】
前記差分データ符号化器によるエントロピー符号化はハフマン符号化である、請求項１または２に記載の符号化装置。
【請求項５】
入力データをビットストリームにフレーム単位で符号化する符号化方法であって、
前記入力データを時間関数から周波数関数に変換してスペクトル信号を生成するステップと、
前記スペクトル信号の心理聴覚分析を行い、帯域毎のビット割当を決定するステップと、
前記決定された現在フレームのビット割当と直前フレームのビット割当との差分データを演算し、前記差分データをエントロピー符号化して差分符号化データを算出するステップと、
前記スペクトル信号を前記ビット割当に基づいて量子化して量子化スペクトルを生成するステップと、
前記差分符号化データ及び前記量子化スペクトルを含む生成フレームを生成し、前記生成フレームにより構成されるビットストリームを出力するステップとを含み、
前記ビット割当を決定するステップは、
前記ビットストリームを構成する１フレームのビット数（以下、所望のビット数）よりも大きくなるように目標ビット数を設定し、その目標ビット数に基づいてビット割当を決定し、そのビット割当及び直前フレームのビット割当の差分データをエントロピー符号化した差分符号化データと、当該決定されたビット割当に基づいて量子化された量子化スペクトルとを含んで生成される場合の生成フレームのビット数が、前記所望のビット数より大きいか否かを比較し、
前記所望のビット数よりも大きい場合には、その所望のビット数より大きく、かつ、直前に設定された目標ビット数よりも小さい目標ビット数を再設定し、再設定された目標ビット数に基づいてビット割当を再決定し、再決定されたビット割当、及び、直前に設定された目標ビット数に基づいて決定されたビット割当の差分データをエントロピー符号化した差分符号化データと、当該再決定されたビット割当に基づいて量子化された量子化スペクトルとを含んで生成される場合の生成フレームのビット数が、前記所望のビット数より大きいか否かを比較する処理を繰り返し、
前記比較の結果、前記所望のビット数以下の場合には、そのときに決定されたビット割当を処理結果として出力する、符号化方法。
【請求項６】
請求項１に記載の符号化装置からのビットストリームを復号化する復号化装置であって、
前記ビットストリームのフレームを分解し、前記フレームから差分符号化データを含む副情報と量子化スペクトルとを分離するフレーム分解部と、
前記差分符号化データを含む副情報を復号化し、前記差分符号化データからビット割当を取得する副情報復号化部と、
前記ビット割当の情報に基づいて前記量子化スペクトルを逆量子化する逆量子化器と、
を含む復号化装置。
【請求項７】
請求項５に記載の符号化方法で生成された生成フレームに含まれるビットストリームを復号化する復号化方法であって、
前記ビットストリームのフレームを分解し、前記フレームから差分符号化データを含む副情報と量子化スペクトルとを分離するフレーム分解ステップと、
前記差分符号化データを含む副情報を復号化し、前記差分符号化データからビット割当を取得する副情報復号化ステップと、
前記ビット割当の情報に基づいて前記量子化スペクトルを逆量子化する逆量子化ステップと、
を含む復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力信号の符号化装置、符号化方法、復号化装置及び復号化方法に関するものである。
【背景技術】
【０００２】
音声符号化技術は、１９９０年代から大きく発展してきており、インターネットを用いた音楽配信や携帯音楽プレーヤなどに応用されている。特に、ＤＳＰ（Digital Signal Processor）などのデバイス性能の向上とともに、携帯音楽プレーヤなどの普及が大きく進んでいる。
これらのアプリケーションで主に用いられている音声符号化技術としては、ＭＰ３（MPEG1 Audio Layer3）、ＡＡＣ（Advanced Audio Coding）、ＡＴＲＡＣ（Adaptive TRansform Acoustic Coding）などの周波数変換型の技術が挙げられる。これらの周波数変換型の音声符号化技術においては、時間領域の入力データを周波数変換して人間の聴覚特性を考慮に入れて分析することで、帯域毎のビット割当を動的に変更する。これにより、入力データに最適なビット割当を実現し、高圧縮率でも比較的音質劣化の少ない音声符号化技術を提供している。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、上記音声符号化技術においては、周波数分解能を確保するために周波数変換のフレームの長さ、つまりオーディオデータのサンプル数を大きく取っているため、遅延時間が大きくなる。この遅延時間は、周波数変換を行うためのフレーム長分、オーディオデータを蓄積するために発生する。例えば、ＡＡＣではフレーム長が１０２４サンプルであり、標本化周波数４８ｋＨｚである場合、符号化及び復号化に要する遅延時間は６４ｍｓｅｃとなる。これでは、発話及び受話をリアルタイムで行う機器への利用を考えると遅延時間が大きすぎて聞く人に違和感を与える。また、拡声器などでは、使用者による発話と使用者に届く自分の声とにずれが生じることで、発話が困難になるなどの問題が発生する。
【０００４】
そこで、遅延時間を小さくするためにフレーム長を短くする技術が提案されている。ここで、フレームは、ヘッダ情報、オーディオデータに付随する情報であるスケールファクタやビット割当情報及びオーディオデータなどから構成される。フレーム長を短くした場合には、オーディオデータ以外のヘッダ情報やオーディオデータに付随する情報などのフレームに占める割合が大きくなり、オーディオデータに割当可能なビット数が減少する。そのため、符号化されたオーディオデータの音質の劣化が著しい。
【０００５】
そこで、本発明は、音質を良好に維持しつつ符号化可能な符号化装置、符号化方法を提供することを目的とする。また、音質を良好に維持しつつ復号化可能な復号化装置及び復号化方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本願発明に係る符号化装置は、入力データをビットストリームにフレーム単位で符号化する符号化装置であって、前記入力データを時間関数から周波数関数に変換してスペクトル信号を生成するスペクトル信号生成手段と、前記スペクトル信号の心理聴覚分析を行い、帯域毎のビット割当を決定するビット割当手段と、前記ビット割当手段により決定された現在フレームのビット割当と直前フレームのビット割当との差分データを演算し、前記差分データをエントロピー符号化して差分符号化データを算出する差分データ符号化器と、前記スペクトル信号を前記ビット割当に基づいて量子化して量子化スペクトルを生成する量子化手段と、前記差分符号化データ及び前記量子化スペクトルを含む生成フレームを生成し、前記生成フレームにより構成されるビットストリームを出力するビットストリーム出力手段とを含み、前記ビット割当手段は、前記ビットストリームを構成する１フレームのビット数（以下、所望のビット数）よりも大きくなるように目標ビット数を設定し、その目標ビット数に基づいてビット割当を決定し、そのビット割当及び直前フレームのビット割当の差分データをエントロピー符号化した差分符号化データと、当該決定されたビット割当に基づいて量子化された量子化スペクトルとを含んで生成される場合の生成フレームのビット数が、前記所望のビット数より大きいか否かを比較し、前記所望のビット数よりも大きい場合には、その所望のビット数より大きく、かつ、直前に設定された目標ビット数よりも小さい目標ビット数を再設定し、再設定された目標ビット数に基づいてビット割当を再決定し、再決定されたビット割当、及び、直前に設定された目標ビット数に基づいて決定されたビット割当の差分データをエントロピー符号化した差分符号化データと、当該再決定されたビット割当に基づいて量子化された量子化スペクトルとを含んで生成される場合の生成フレームのビット数が、前記所望のビット数より大きいか否かを比較する処理を繰り返し、前記比較の結果、前記所望のビット数以下の場合には、そのときに決定されたビット割当を処理結果として出力するものである。
【０００７】
通常、ビットストリームは、量子化の際に割り当てるビット数に関するビット割当情報と、そのビット割当情報に基づいて量子化される量子化スペクトルとを含むフレームから構成される。本発明では、前述のビット割当情報としてビット割当の差分符号化データを用いる。ここで、ビット割当の差分符号化データは、現在フレームと直前フレームとのビット割当の差分をエントロピー符号化したものである。ビット割当情報としてこの差分符号化データを用いてフレームを生成することで、ビット割当そのものを用いるよりもビット割当情報に割り当てるビット数を少なくすることができる。よって、ビット割当情報に割り当てるビット数が少なくてすむ分だけ、量子化スペクトルに割り当てるビット数を増加することができる。目標ビット数を繰り返し設定して最適なビット割当を行うことを、目標ビット数に基づくビット割当というものとする。
なお、目標ビット数を設定してビット割当を決定することを繰り返すのは、差分データの符号化後の符号量を予測することができないからである。
【０００９】
ビット割当情報としてビット割当そのものではなく差分符号化データを用いることで、ビット割当情報のビット数が減少するが、ビット割当を行うことで、この減少した分のビット数が量子化スペクトルに割り当てられるようになる。よって、量子化スペクトルに割り当てるビット数を増加することができる。そのため、遅延時間を短縮するためにフレーム長を短くしても、量子化スペクトルに割り当てられるビット数の減少を抑えることができ音質の劣化を防止することができる。また、ビット割当手段は、生成フレームのビット数が１フレームの所望のビット数以下であるかを判断するため、ビットレートを維持しつつ量子化スペクトルにビットを最適に割り当てることができる。これにより、生成フレームのビット数が所望のビット数を超えることによる音質の劣化を防止することができる。
【００１０】
なお、ビット割当情報に割り当てるビット数が少なくてすむ分だけビットストリームを構成するフレームを小さくすると、同じ音質であってもより圧縮率を高めることができる。また、ビット数が少なくてすむ分だけ量子化スペクトルに割り当てるとともにフレームを小さくすることで、遅延時間を短縮しつつ音質の劣化を防止することもできる。
前記ビット割当手段は、前記所望のビット数より大きいか否かを比較する処理を所定の制限回数繰り返し、かつ、前記所望のビット数より大きい場合には、当該所望のビット数に基づいて決定されたビット割当を処理結果として出力するようにしてもよい。
【００１１】
繰り返し回数に制限を設けることで、量子化スペクトルへの最適なビット割当に要する演算量を低減させることができる。特に、遅延時間を短くするためにフレーム長を短くすると、演算に許される時間が短くなる。そのため、フレーム長が大きい場合には問題とならないような処理の演算量が、全体の演算量に対して大きな影響を与えるようになる。このような場合に、繰り返し回数に制限を設けて演算量を低減させることが有効となる。例えば、ビット割当の差分データをエントロピー符号化する際の演算量が大きく、繰り返し回数によっては演算処理が間に合わずノイズが発生する原因となる場合がある。そこで、前述のように、繰り返し回数に制限を設けて演算量を低減させ、所定時間内に演算処理を終了させノイズの発生を防止する。
【００１２】
本願発明は、前記ビット割当手段における比較結果に応じたフラグを設定するフラグ設定手段をさらに含み、前記ビットストリーム出力手段は、前記フラグを含む前記生成フレームを生成し出力するようにしてもよい。
【００１８】
前記差分データ符号化器によるエントロピー符号化をハフマン符号化としてもよい。
【００２０】
上記課題を解決するために、本願発明に係る符号化方法は、入力データをビットストリームにフレーム単位で符号化する符号化方法であって、前記入力データを時間関数から周波数関数に変換してスペクトル信号を生成するステップと、前記スペクトル信号の心理聴覚分析を行い、帯域毎のビット割当を決定するステップと、前記決定された現在フレームのビット割当と直前フレームのビット割当との差分データを演算し、前記差分データをエントロピー符号化して差分符号化データを算出するステップと、前記スペクトル信号を前記ビット割当に基づいて量子化して量子化スペクトルを生成するステップと、前記差分符号化データ及び前記量子化スペクトルを含む生成フレームを生成し、前記生成フレームにより構成されるビットストリームを出力するステップとを含み、前記ビット割当を決定するステップは、前記ビットストリームを構成する１フレームのビット数（以下、所望のビット数）よりも大きくなるように目標ビット数を設定し、その目標ビット数に基づいてビット割当を決定し、そのビット割当及び直前フレームのビット割当の差分データをエントロピー符号化した差分符号化データと、当該決定されたビット割当に基づいて量子化された量子化スペクトルとを含んで生成される場合の生成フレームのビット数が、前記所望のビット数より大きいか否かを比較し、前記所望のビット数よりも大きい場合には、その所望のビット数より大きく、かつ、直前に設定された目標ビット数よりも小さい目標ビット数を再設定し、再設定された目標ビット数に基づいてビット割当を再決定し、再決定されたビット割当、及び、直前に設定された目標ビット数に基づいて決定されたビット割当の差分データをエントロピー符号化した差分符号化データと、当該再決定されたビット割当に基づいて量子化された量子化スペクトルとを含んで生成される場合の生成フレームのビット数が、前記所望のビット数より大きいか否かを比較する処理を繰り返し、前記比較の結果、前記所望のビット数以下の場合には、そのときに決定されたビット割当を処理結果として出力するものである。
【００２１】
上記課題を解決するために、本願発明に係る復号化装置は、上記符号化装置からのビットストリームを復号化する復号化装置であって、前記ビットストリームのフレームを分解し、前記フレームから差分符号化データを含む副情報と量子化スペクトルとを分離するフレーム分解部と、前記差分符号化データを含む副情報を復号化し、前記差分符号化データからビット割当を取得する副情報復号化部と、前記ビット割当の情報に基づいて前記量子化スペクトルを逆量子化する逆量子化器と、を含むものである。
【００２２】
復号化装置によれば、遅延を低減し音質が向上された出力データを得ることができる。
上記課題を解決するために、本願発明に係る復号化方法は、上記符号化方法で生成された生成フレームに含まれるビットストリームを復号化する復号化方法であって、前記ビットストリームのフレームを分解し、前記フレームから差分符号化データを含む副情報と量子化スペクトルとを分離するフレーム分解ステップと、前記差分符号化データを含む副情報を復号化し、前記差分符号化データからビット割当を取得する副情報復号化ステップと、前記ビット割当の情報に基づいて前記量子化スペクトルを逆量子化する逆量子化ステップと、を含むものである。
【発明の効果】
【００２４】
本発明によれば、音質を良好に維持しつつ符号化可能な符号化装置、符号化方法を提供することができる。また、音質を良好に維持しつつ復号化可能な復号化装置及び復号化方法を提供することができる。
【発明を実施するための最良の形態】
【００２５】
＜発明の概要＞
図１は、符号化による遅延時間を短縮しつつ音質を良好に維持可能な本発明の概要を説明するための模式図であり、（ａ）、（ｂ）及び（ｃ）はそれぞれビットストリームの生成フレームの模式図である。図１（ａ）はビット割当情報としてビット割当そのものを用いて生成した生成フレームを示しており、図１（ｂ）及び（ｃ）はビット割当情報としてビット割当の差分符号化データを用いて生成した生成フレームを示している。
【００２６】
符号化装置が生成するビットストリームの生成フレームは、ビット割当情報及び入力データのサンプルを含んで構成される。ここで、以下ビット割当情報とは、ビット割当そのもの及びビット割当の差分符号化データの総称とする。
本発明を適用しない場合、生成フレームを構成するビット割当情報としてはビット割当そのものを用いており、生成フレームは図１の（ａ）に示すようにビット割当ba及びサンプルmcにより構成される。一方、本発明の符号化装置では、ビット割当情報として現在フレームのビット割当と直前フレームのビット割当との差分をエントロピー符号化した差分符号化データhbaを用いる。よって、本発明により生成される生成フレームは、図１の（ｂ）に示すように差分符号化データhba及びサンプルmcにより構成される。
【００２７】
ビット割当情報としてビット割当そのものを用いた生成フレーム（図１（ａ）参照）と、ビット割当情報として差分符号化データを用いた生成フレーム（図１（ｂ）参照）とを比較すると、図１（ｂ）の生成フレームは図１（ａ）の生成フレームよりも斜線部分の分だけ生成フレームに割り当てるビット数が削減されている。これは、ビット割当情報としてビット割当そのものではなくビット割当の差分符号化データを用いているためである。ここで、図１の（ｃ）の生成フレームに示すように、この削減されたビット数分をサンプルmcに割り当てることでサンプルmcに割り当てるビット数を増加することができる。そのため、遅延時間を短縮するためにフレーム長を短くしても、量子化サンプルmcに割り当てられるビット数の減少を抑えることができ音質の劣化を防止することができる。
【００２８】
＜第１実施形態例＞
｛符号化装置の構成｝
図２は、本発明の第１実施形態例に係る符号化装置である。以下に、第１実施形態例に係る符号化装置１００の各部の構成について説明する。
（１）MDCT変換器
MDCT変換器１１は、オーディオ信号などの入力データを変形離散コサイン変換処理（MDCT：Modified Discrete Cosine Transform）し、MDCT係数（図２中、mdctに相当：スペクトル信号とも言う）を生成する。このMDCT係数は、入力データの周波数スペクトルを表現する係数である。ここで、入力データはフレーム毎に入力され、MDCT変換器１１はフレーム単位のMDCT係数を出力する。フレームとは、符号化・復号化の1単位処理において処理されるデータであり、1単位の処理ではこれまでのデータに加えて新たに1フレーム分の入力データを読み込み、処理を行うことで1フレーム分の新たなMDCT係数を算出する。本発明の第１実施形態例に係るMDCT変換器１１では、変換処理を行うフレーム長が短い。つまり１フレーム内のサンプリング数が少ない。例えば、フレーム長が１２８サンプル以下であり、好ましくは６４サンプル以下である。このように１フレームに含まれるサンプル数が少ないため、１フレーム分の入力データが蓄積されるのに要する時間が短く、１フレームの処理を開始するまでに要する遅延が少ない。よって、全体として符号化・復号化に要する時間を短縮することができる。以下、第１実施形態例では、フレーム毎に６４サンプルのMDCT係数を生成しているものとする。
【００２９】
（２）スケーリング部
スケーリング部１３は、MDCT係数を数本ずつ含むセグメントに１フレームを分割し、セグメントごとにスケールファクタ（図２中、scに相当）を算出するとともに、スケールファクタに基づいてセグメントごとにMDCT係数を正規化（図２中、正規化mdctに相当）する。ここで、スケールファクタとは、セグメント毎におけるMDCT係数の振幅の最大値に基づく値である。第１実施形態例では、２サンプルのMDCT係数を１セグメントとし、１フレームを３２分割し３２個のスケールファクタを算出している。
【００３０】
（３）FFT部
FFT部２５は、入力データについてFFT（Fast Fourier Transform）による周波数スペクトルの計算を行って、例えば５１２点の周波数データを算出し心理聴覚分析器２７に出力する。
（４）心理聴覚分析器
心理聴覚分析器２７は、FFT部２５からの算出結果に基づいて帯域毎のSMR（Signal to Masking Ratio）を決定し、ビット割当部１５に出力する。以下、ビット割当の単位を帯域というものとする。ビット割当の単位である帯域とスケールファクタを算出する単位であるセグメントは、同じ単位であっても良いし異なっていても良い。
【００３１】
（５）ビット割当部
以下において、所望のビットレートのビットストリームを構成する１フレームのビット数を所望のビット数とする。まず、ビット割当部１５は、所望のビット数よりも大きな目標ビット数を設定する。そして、ビット割当部１５は、正規化MDCT係数及びSMRの入力を受けて、生成フレームが目標ビット数以下となるようにビット割当を行う。さらに、ビット割当部１５は、決定したビット割当を後述の量子化器１７及び差分符号化器１９に出力する。差分符号化器１９は、決定されたビット割当に基づいて差分符号化データを演算する。そして、比較部２１は、その差分符号化データと、決定されたビット割当に基づいて量子化された量子化MDCT係数（図２中、mcに相当）と、スケールファクタと、後述のフラグ情報とを含んで生成される場合の生成フレームのビット数と、所望のビット数とを比較する。ビット割当部１５は、比較部２１での比較結果を受信し、比較結果に応じて、必要であれば再度ビット割当を行う。
【００３２】
ビット割当部１５は、生成フレームのビット数が所望のビット数以下である場合は、そのときの目標ビット数に基づくビット割当をビットストリーム生成部２９に出力する。一方、ビット割当部１５は、生成フレームのビット数が所望のビット数よりも大きい場合は、再度、目標ビット数を設定してビット割当を行う。このとき設定する目標ビット数は、所望のビット数よりも大きく、かつ直前に設定した目標ビット数よりも小さくなるように設定する。そして、差分符号化器１９及び比較部２１により同様に比較結果が算出されビット割当部１５に入力される。ビット割当部１５は、その比較結果に応じて生成フレームのビット数が所望のビット数よりも大きい場合は、同様の処理を繰り返す。
【００３３】
なお、ビット割当部１５は、ビット割当の繰り返し回数をカウントするカウンタ（図示せず）を有しており、繰り返し回数を制限する。所定の繰り返し回数（以下、制限回数という）に到達しても生成フレームのビット数が所望のビット数よりも大きい場合は、ビット割当部１５は所望のビット数に基づいてビット割当を行う。そして、この所望のビット数に基づくビット割当をビットストリーム生成部２９に出力する。このように繰り返し回数に制限を設けることで、量子化MDCT係数への最適なビット割当に要する演算量を低減させることができる。特に、遅延時間を短くするためにフレーム長を短くすると、演算に許される時間が短くなる。そのため、フレーム長が大きい場合には問題とならないような処理の演算量が、全体の演算量に対して大きな影響を与えるようになる。このような場合に、繰り返し回数に制限を設けて演算量を低減させることが有効となる。例えば、ビット割当の差分データをエントロピー符号化する際の演算量が大きく、繰り返し回数によっては演算処理が間に合わずノイズが発生する原因となる場合がある。そこで、前述のよう繰り返しに制限を設けて演算量を低減させ、所定時間内に演算処理を終了させノイズの発生を防止する。また、後述の差分符号化器１９において、差分データのエントロピー符号化としてハフマン符号化を用いた場合に、制限回数を有していると有効である。ハフマン符号化は、一般的に演算量の小さい符号化方式であるが、一方で符号化後の符号量を予測することが困難な符号化方式である。よって、ハフマン符号化を用いて所望のビット数以下となるようにビット割当を行うには繰り返し回数が多くなり演算量が多くなる場合がある。しかし、繰り返し回数に制限を設けた場合には、演算量の増加に制限を設けて所定時間内に演算処理を終了させ、ノイズの発生を防ぐことができる。
【００３４】
（６）差分符号化器
差分符号化器１９は、ビット割当部１５から出力されるビット割当と直前フレームのビット割当との差分データをハフマン符号化して差分符号化データ（図中、hbaに相当）を算出する。さらに、差分符号化器１９は、比較部２１での比較結果に基づいて差分符号化データをビットストリーム生成部２９に出力する。なお、差分符号化器１９ではエントロピー符号化としてハフマン符号化を用いているが、これに限定されるものではない。ただし、ハフマン符号化を用いた場合には演算量を小さくできるので好ましい。
【００３５】
また、ビット割当部１５が決定したビット割当の差分符号化データと、そのビット割当に基づいて量子化された量子化MDCT係数と、スケールファクタと、後述のフラグ情報とを含んで生成される場合の生成フレームのビット数が所望のビット数以下である場合は、差分符号化器１９はビットストリーム生成部２９に差分符号化データを出力する。一方、生成フレームのビット数が所望のビット数よりも大きい場合は、差分符号化器１９はビットストリーム生成部２９への差分符号化データの出力を行わない。なお、この場合はビット割当部１５が決定した、所望のビット数に基づくビット割当がビットストリーム生成部２９に出力される。
【００３６】
（７）比較部
ビットストリームは、前述の通り後述のフラグ情報と、差分符号化データと、スケールファクタと、量子化MDCT係数とを含む生成フレームにより構成される。所望のビットレートを維持するためには、この生成フレームが所望のビット数以下である必要がある。よって、比較部２１は、ビット割当部１５からのビット割当と、差分符号化器１９からの差分符号化データとを受信し、これらから生成されるであろう生成フレームのビット数を計算し、所望のビット数と比較する。なお、図２において、比較部２１は、差分符号化データhbaを受信しているが、より詳細には差分符号化データhbaの長さに関する情報を受信している。また、ここでは、生成フレームがフラグ情報、ビット割当情報、スケールファクタ及び量子化MDCT係数により構成されるとしているが、その他のヘッダ情報などを含んでいても良い。さらに、以下において、フラグ情報及びスケールファクタに割り当てられるビット数は固定とする。
【００３７】
比較部２１において生成フレームのビット数と所望のビット数との比較が必要な理由を説明する。ビット割当部１５は、ビット割当そのものではなく差分符号化データにより生成フレームを生成することで削減されたビット割当情報のビット数分を、量子化MDCT係数に割り当てるようなビット割当を行っている。しかしこの場合、量子化MDCT係数のビット数を増加するように割り当てたビット割当と直前フレームとの差分符号化データにより生成フレームを生成した場合、生成フレームのビット数が所望のビット数を超えてしまう可能性がある。あるいは、生成フレームが十分に圧縮されない可能性がある。これは、ハフマン符号化後の差分符号化データの符号量を予測することができないためである。
【００３８】
例えば、あるビット割当ba（ｎ）と直前フレームのビット割当ba（ｎ−１）との差分データ（ba（ｎ）−ba（ｎ−１））をハフマン符号化して差分符号化データhba（ｎ）を算出したとする。この場合、そのビット割当ba（ｎ）がフレームに占めるビット数と差分符号化データhba（ｎ）がフレームに占めるビット数との差分の分だけ、MDCT係数に割り当てるビット数を増加するようにビット割当ba（ｎ）’を行う。ここで、実際にフレームに用いる差分符号化データは、ビット割当ba（ｎ）’と直前フレームのビット割当ba（ｎ−１）との差分データ（ba（ｎ）’−ba（ｎ−１））をハフマン符号化した差分符号化データhba（ｎ）’である。つまり、フレームの生成に用いる差分符号化データhba（ｎ）’は、ビット割当の際に参照した差分符号化データhba（ｎ）と異なり、またハフマン符号化前に差分符号化データhba（ｎ）’の符号量を予測することができない。よって差分符号化データhba（ｎ）’の符号量が予想以上に大きい場合は生成された生成フレームのビット数が所望のビット数を超える場合がある。逆に差分符号化データhba（ｎ）’の符号量が予想以上に小さい場合は、生成フレームのビット数が所望のビット数を下回っており、圧縮率を高めることができる可能性を残したまま十分な圧縮符号化ができていない。以上より、圧縮率をたかめつつ生成フレームが所望のビット数以下となるように、生成フレームのビット数と所望のビット数との比較結果に基づいたビット割当を繰り返す必要がある。
【００３９】
（８）フラグ設定部
フラグ設定部２３は、比較部２１での比較結果を受信しフラグ情報（図２中、ｆに相当）を設定し、ビットストリーム生成部２９に出力する。ここで、フラグ情報とは、フラグ情報、差分符号化データ、スケールファクタ及び量子化MDCT係数を含む生成フレームのビット数と１フレームの所望のビット数との比較結果を示す情報である。以下では、制限回数までに生成フレームのビット数が所望のビット数以下になった場合は、フラグ＝“０”とする。一方、制限回数後においても生成フレームのビット数が所望のビット数より大きい場合は、フラグ＝“１”とする。
【００４０】
（９）量子化器
量子化器１７は、ビット割当部１５からビット割当を受信し、スケーリング部１３から正規化MDCT係数を受信する。そして、量子化器１７は、正規化MDCT係数をビット割当に基づいて量子化し、量子化MDCT係数（図中、mcに相当）を生成する。ここで、量子化器１７は、ビット割当部１５から目標ビット数に基づくビット割当または所望のビット数に基づくビット割当を受信している。
【００４１】
（１０）ビットストリーム生成部
ビットストリーム生成部２９は、フラグ設定部２３からフラグ情報を受信し、差分符号化器１９またはビット割当部１５からビット割当情報を受信し、スケーリング部１３からスケールファクタを受信し、量子化器１７から量子化MDCT係数を受信し、これらの情報に基づいてフレームを組み立ててビットストリームを生成する。より具体的には、制限回数までに生成フレームのビット数が所望のビット数以下になった場合は、ビットストリーム生成部２９は、フラグ＝“０”、差分符号化データ、スケールファクタ及び量子化MDCT係数に基づいてビットストリームを生成する。一方、制限回数後においても生成フレームのビット数が所望のビット数より大きい場合は、ビットストリーム生成部２９は、フラグ＝“１”、ビット割当、スケールファクタ及び量子化MDCT係数に基づいてビットストリームを生成する。
【００４２】
そして、ビットストリーム生成部２９は、ビットストリームを伝送路または蓄積メディアに出力し、そこから復号化装置２００に出力される。なお、ビット割当情報が差分符号化されているかどうかを示すフラグ情報が先頭となるようにビットストリームを生成する。これは、後述の復号化装置において、まずフラグ情報を判断してビット割当情報がエントロピー符号化されているかどうかを判断するためである。
【００４３】
なお、特許請求の範囲のスペクトル信号生成手段はMDCT変換器１１に相当し、特許請求の範囲のビット割当手段はビット割当部１５及び比較部２１を含み、特許請求の範囲の差分データ符号化器は差分符号化器１９に相当し、特許請求の範囲の量子化手段は量子化器１７に相当し、特許請求の範囲のビットストリーム生成手段はビットストリーム生成部２９に相当し、特許請求の範囲のフラグ設定手段はフラグ設定部２３に相当する。
【００４４】
｛符号化処理の流れ｝
（１）全体処理
次に、第１実施形態例に係る符号化装置１００の符号化処理全体の流れについて説明する。図３は、符号化処理の流れの概要を示すフローチャートの一例である。
ステップＳ１０：MDCT変換器１１は、入力データを受け付け変形離散コサイン変換処理してMDCT係数を生成し、スケーリング部１３に出力する。
【００４５】
ステップＳ１５：次に、スケーリング部１３は、分割されたフレームのセグメント毎にスケールファクタを算出する。さらに、スケーリング部１３は、スケールファクタに基づいてMDCT係数を正規化する。
ステップＳ２０、Ｓ２５：FFT部２５は入力データを解析して周波数データを算出する。心理聴覚分析器２７は、その算出結果に基づいて帯域毎のSMRを決定してビット割当部１５に出力する。
【００４６】
ステップＳ３０：ビット割当部１５は、目標ビット数または所望のビット数に基づいてビット割当を決定するビット割当処理を行う。ビット割当処理については、下記（２）にて説明する。
ステップＳ３５：量子化器１７は、正規化MDCT係数をビット割当部１５から受信したビット割当に基づいて量子化し、量子化MDCT係数を生成する。
【００４７】
ステップＳ４０：ビットストリーム生成部２９は、フラグ情報、ビット割当情報、ケールファクタ及び量子化MDCT係数からビットストリームを生成し、伝送路または蓄積メディアを経て復号化装置２００に出力される。ここで、ビット割当情報は、目標ビット数に基づくビット割当から算出された差分符号化データまたは所望のビット数に基づくビット割当のいずれかである。
【００４８】
（２）ビット割当処理
次に、前記ステップＳ３０の比較結果に基づくビット割当処理について図４を用いて説明する。図４は、ビット割当処理の流れを示す模式図である。
着目するフレームを現在フレームｎとし、現在フレームに対して直前のフレームを直前フレーム（ｎ−１）とする。以下において、このｎは現在フレームに関連する添字とし、（ｎ−１）は直前フレームに関連する添字とする。例えば、直前フレームのビット割当をba(ｎ−１)とする。また、所望のビットレートのビットストリームを構成する１フレームのビット数（所望のビット数）をＸとする。
【００４９】
ステップＳ３０ａ：ビット割当部１５は、所望のビット数Ｘよりも大きな目標ビット数Ｘ＋ａを設定する。
ステップＳ３０ｂ：ビット割当部１５は、目標ビット数Ｘ＋ａに基づいてビット割当を決定する。つまり、決定されたビット割当に基づいて演算した差分符号化データと、決定されたビット割当に基づいて量子化された量子化MDCT係数と、スケールファクタと、フラグ情報とを含んで生成される場合の生成フレームのビット数が、目標ビット数Ｘ＋ａ以下となるようにビット割当を決定する。このビット割当は、MPEG-1/Audio Layer 2と同様の方法で行われ、割当ビット数により変化するSNR（Signal to Nose Ratio）とSMRとからMNR（Masking to Noise Ratio）を計算し、MNRの小さい帯域から順にビットを割り当てる。
【００５０】
なお、MPEG-1/Audio Layer 2では、帯域ごとに最大割当ビット数やビットの増やし方を変えているが、本発明においては演算量低減のために一定としている。例えば、ある帯域のビット数を増加した場合は、ビットレートに適合しなくなる場合があり、これを別の帯域で吸収する演算などが必要となる。しかし、最大割当ビット数やビットの増やし方を一定とすることで、前述のような演算が不要となる。
【００５１】
ステップＳ３０ｃ：次に、比較部２１は、この生成フレームのビット数と所望のビット数Ｘとを比較する。このときの生成フレームのビット数は、目標ビット数Ｘ＋ａに基づくビット割当ba（ｎ）及び直前フレームのビット割当ba(ｎ−１)から算出した差分符号化データのビット数bit_hbaと、ビット割当ba（ｎ）に基づいて量子化された量子化MDCT係数bit_mcと、スケールファクタのビット数bit_scと、フラグ情報のビット数bit_fとの総和により求まる。比較部２１において生成フレームのビット数が所望のビット数以下（bit_hba＋bit_mc＋bit_sc＋bit_f≦X）であると判断された場合は、ステップＳ３０ｄに進む。一方、生成フレームのビット数が所望のビット数より大きい（bit_hba＋bit_mc＋bit_sc＋bit_f＞X）であると判断された場合は、ステップＳ３０ｅに進む。
【００５２】
ステップＳ３０ｄ：生成フレームのビット数が所望のビット数Ｘ以下である場合は、ビット割当部１５はそのときに決定したビット割当を差分符号化器１９に出力する。そして、差分符号化器１９は、そのビット割当に基づいて算出した差分符号化データをビットストリーム生成部２９に出力する。
ステップＳ３０ｅ：一方、ビット割当部１５は、生成フレームのビット数が所望のビット数Ｘより大きい場合は、前回設定した目標ビット数Ｘ＋ａよりも小さく、かつ所望のビット数Ｘよりも大きな目標ビット数Ｘ＋ｂを設定する。そして、ビット割当部１５は、再度設定された目標ビット数Ｘ＋ｂに基づいてビット割当を決定する。
【００５３】
ステップＳ３０ｆ：次に、比較部２１は、生成フレームのビット数と所望のビット数Ｘとを比較する。このときの生成フレームのビット数は、目標ビット数Ｘ＋ｂに基づくビット割当ba（ｎ）’及び直前フレームのビット割当ba(ｎ−１)から算出した差分符号化データのビット数bit_hba’と、ビット割当ba（ｎ）’に基づいて量子化された量子化MDCT係数bit_mc’と、スケールファクタのビット数bit_scと、フラグ情報のビット数bit_fとの総和により求まる。比較部２１において生成フレームのビット数が所望のビット数以下（bit_hba’＋bit_mc’＋bit_sc＋bit_f≦X）であると判断された場合は、ステップＳ３０ｄに進む。一方、生成フレームのビット数が所望のビット数より大きい（bit_hba’＋bit_mc’＋bit_sc＋bit_f＞X）であると判断された場合は、以上の処理を制限回数Ｎまで繰り返す。
【００５４】
ステップＳ３０ｇ：処理の繰り返し回数が制限回数Ｎに到達しても、生成フレームのビット数が所望のビット数よりも大きい場合は、ビット割当部１５は所望のビット数に基づいてビット割当を行う。そして、この所望のビット数に基づくビット割当をビットストリーム生成部２９に出力する。
｛復号化装置の構成｝
図５は、本発明の第１実施形態例に係る復号化装置である。以下に、第１実施形態例に係る復号化装置２００の各部の構成について説明する。
【００５５】
（１）フレーム分解部
フレーム分解部５１は、前述の符号化装置１００からビットストリームをフレームごとに受信し、量子化MDCT係数と、それ以外のフラグ情報、帯域毎のビット割当情報及びセグメント毎のスケールファクタを含む副情報とに分解する。
（２）副情報復号化部
副情報復号化部５３は、フレーム分解部５１で分解された副情報を受信して、必要に応じて復号化し、ビット割当情報及びスケールファクタを逆量子化器５５に出力する。ここで、副情報復号化部５３は、まず各フレームの先頭に含まれるフラグ情報を解釈し、ビット割当情報として差分符号化データが含まれているかどうかを判断する。そして、フラグ＝“０”である場合はビット割当情報として差分符号化データが含まれるため、副情報復号化部５３はその差分符号化データを復号化してビット割当の差分データを取得する。副情報復号化部５３は、この差分データに基づいて現在フレームのビット割当を算出し、逆量子化器５５に出力する。なお、副情報復号化部５３は、差分データから現在フレームのビット割当を算出するため、直前フレームのビット割当を記憶しているものとする。一方、フラグ＝“１”である場合はビット割当情報として所望のビット数に基づくビット割当が含まれるため、副情報復号化部５３はフレーム分解部５１から受信した所望のビット数に基づくビット割当そのものを逆量子化器５５に出力する。
【００５６】
（３）逆量子化器
逆量子化器５５は、ビット割当情報及びスケールファクタに基づいて量子化MDCT係数を逆量子化し、逆量子化データを算出する。つまり、フラグ＝“０”である場合は、逆量子化器５５は、差分符号化データから算出されたビット割当に基づいて量子化MDCT係数を逆量子化する。一方、フラグ＝“１”である場合は、逆量子化器５５は、所望のビット数に基づくビット割当に基づいて量子化MDCT係数を逆量子化する。
（４）MDCT逆変換器  MDCT逆変換器５７は、逆量子化されたMDCT係数を逆変形離散コサイン変換処理(IMDCT:Inverse Modified DiscreteCosine Transform）して出力信号を生成し出力する。
【００５７】
｛作用効果｝
第１実施形態例によると、ビットストリームが差分符号化データと、量子化MDCT係数bit_と、スケールファクタと、フラグ情報とを含んで構成される。ここで、差分符号化データは、現在フレームと直前フレームとのビット割当の差分を符号化したものであり、ビット割当そのものよりもフレーム内において割り当てるビット数を少なくすることができる。よって、ビット割当情報に割り当てるビット数が少なくてすむので、その分だけ量子化スペクトルに割り当てるビット数を増加することができる。そのため、符号化及び復号化による遅延時間を短縮するためにフレーム長を短くしても、量子化スペクトルに割り当てられるビット数の減少を抑えることができ音質の劣化を防止することができる。
【００５８】
また、比較部２１は、生成フレームのビット数が１フレームの所望のビット数以下であるかを判断し、ビット割当部１５がその判断結果に基づいてビット割当を行う。よって、生成フレームが所望のビット数を超えることがなく、ビットレートを維持しつつ量子化スペクトルにビットを最適に割り当てることができる。これにより、生成フレームのビット数が所望のビット数を超えることによる音質の劣化を防止することができる。
【００５９】
なお、ビット割当情報に割り当てるビット数が少なくてすむ分だけビットストリームを構成するフレームを小さくすると、同じ音質であってもより圧縮率を高めることができる。また、ビット数が少なくてすむ分だけ量子化スペクトルに割り当てるとともにフレームを小さくすることで、符号化及び復号化による遅延時間を短縮しつつ音質の劣化を防止することもできる。例えば、ＡＤＰＣＭなどの予測符号化においては、圧縮率を１／６以上にあげることは困難であるが、本発明によれば圧縮率を１／６以上に上げるとともに音質の劣化を防止できる符号化及び復号化を実現することができる。
【００６０】
また、上記のような符号化装置により符号化された入力データを、前述の復号化装置で復号化することで、符号化及び復号化による遅延時間を短縮しつつ音質の劣化が低減された出力データを得ることができる。
【産業上の利用可能性】
【００６１】
本発明によれば符号化・復号化に伴う遅延を小さくするとともに音質の劣化を低減することができるので、遅延が許されず、音質が重要視される機器、例えば拡声器やマイクロホンなどに適用可能である。
【図面の簡単な説明】
【００６２】
【図１】符号化による遅延時間を短縮しつつ音質を良好に維持可能な本発明の概要を説明するための模式図。
【図２】本発明の第１実施形態例に係る符号化装置。
【図３】符号化処理の流れの概要を示すフローチャートの一例。
【図４】ビット割当処理の流れを示す模式図。
【図５】本発明の第１実施形態例に係る復号化装置。
【符号の説明】
【００６３】
１１：MDCT変換器  
１３：スケーリング部  
１５：ビット割当部  
１７：量子化器  
１９：差分符号化器  
２１：比較部  
２３：フラグ設定部  
２５：FFT部  
２９：ビットストリーム生成部
１００：符号化装置    
２００：復号化装置    
【図１】
0004573670.tif 000002
【図２】
0004573670.tif 000003
【図３】
0004573670.tif 000004
【図４】
0004573670.tif 000005
【図５】
0004573670.tif 000006