(57)【特許請求の範囲】
【請求項１】
伝送すべき情報を符号化側コードブックを用いてベクトル量子化する符号化部と、この符号化部からの符号化出力を前記符号化側コードブックに対応する復号側コードブックを用いてベクトル逆量子化することにより前記伝送すべき情報を復号する復号部とを備えた符号化復号方式において、
前記符号化側コードブック及び前記復号側コードブックの操作を記述したコードブック操作言語プログラムを前記符号化部から前記復号部に伝送すると共に、前記符号化部及び前記復号部で前記コードブック操作言語プログラムを共通に解釈して前記符号化側コードブックと前記復号側コードブックとを更新する操作を行なうことを特徴とする符号化復号方式。
【請求項２】
前記符号化部は、前記伝送すべき情報である入力ベクトルと前記符号化側コードブックの各コードブックベクトルとの距離を求め当該距離が最も小さいコードブックベクトルのインデックスを符号化出力として出力するベクトル量子化手段と、
このベクトル量子化手段で求められた距離が所定値よりも大きい場合にコードブックの操作とその操作方法を決定するコードブック操作決定手段と、
このコードブック操作決定手段での決定に基づいて前記コードブック操作言語プログラムを生成するコードブック操作言語プログラム生成手段と、
このコードブック操作言語プログラム生成手段で生成されたコードブック操作言語プログラムを解釈して前記符号化側コードブックの内容を操作するプログラム解釈手段と、
前記生成されたコードブック操作言語プログラムを前記符号化出力と共に伝送するためのビットストリームを生成するビットストリーム生成手段と
を備えたものであることを特徴とする請求項１記載の符号化復号方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、音声や画像をコードブックを用いてベクトル量子化することにより伝送情報を圧縮符号化する符号化復号方式に関し、特に符号化部と復号部のコードブックを伝送情報に応じて適応的に更新するようにした符号化復号方式に関する。
【０００２】
【従来の技術】
従来より、音声や画像を高能率に圧縮符号化して伝送又は記録するベクトル量子化が知られている。ベクトル量子化では、量子化すべき情報パターンを一定区間毎に切り出した入力ベクトルに最も近いコードブックベクトルをコードブックから選択して、そのインデックスを伝送又は記録する。入力ベクトルとコードブックベクトルとの距離が大きいと、量子化ノイズが増加して再生品質が低下する。このため、コードブックには、予め種々の入力ベクトルパターンを想定したパターンベクトルが登録される。
【０００３】
しかし、入力ベクトルの内容は、例えば音楽情報の伝送において曲のジャンルが変わったり、電話通信で話者が変わったような場合には、その傾向が大きく変わってくる。これらを含めた全ての入力ベクトルを想定してコードブックベクトルを作成すれば、再生品質は向上するが、その反面、コードブックの量が膨大になり、インデックスのビット数増加による伝送量の増大やコードブックのサーチ時間の増加等の問題が発生する。
【０００４】
そこで、コードブックの蓄積量をあまり多くせずに入力ベクトルに適合できるように、入力ベクトルに応じてコードブックの内容を適宜更新する方式として、次のような方式が提案されている。
（１）入力ベクトルとコードブックベクトルとの距離が予め定められたしきい値よりも大きくなったときに、入力ベクトルそのものを伝送してコードブックの中で最も過去に選択されたコードブックベクトルと入れ替えることにより、コードブックの内容を入力ベクトルに応じて適応的に更新するようにした符号化復号方式（特開平２−１８６８３６号）。
（２）ＣＥＬＰ（Ｃｏｄｅ−Ｅｘｃｉｔｅｄ  Ｌｉｎｅａｒ  Ｐｒｅｄｉｃｔｉｏｎ）方式等と共に用いられている方式で、送信側と受信側とで予め決められたアルゴリズムに従ってコードブックの内容を更新する適応コードブック方式（例えば特開平８−５１３６７号、特開平２−２２９３４号等）。
（３）コードブックライブラリに複数種類のコードブックを備えておき、これらを切り替えて使用するコードブック切替方式（特開平５−１８１４９９号）。
【０００５】
【発明が解決しようとする課題】
しかしながら、上述した従来の符号化復号方式は、いずれも符号化部と復号部とで予め決められたアルゴリズムに基づいてコードブックを更新するものであるから、そのような取り決めがなされた特定の符号化装置及び復号装置の間でしか適用することができない。データ伝送は、本来、不特定多数の送信部及び受信部の間で様々な性質のデータをやりとりするものであるから、状況によっては、例えばコードブックの全部を入れ替えたり、一部を入れ替えれば良い場合がある。また、入力データの性質に応じて適応コードブックの適応の仕方を変更するといったことが望まれる場合がある。しかし、従来のように固定的なアルゴリズムを前提とすると、全てのシステムに共通なアルゴリズムを確立しなければならず、アルゴリズムが最大公約数的なものにならざるを得ず、上記のような柔軟で具体的な対応がとれない。このため、必要とするコードブックの更新内容を超えて、不要なデータを伝送しなくてはならなかったり、不要な処理を実行しなければならないという問題がある。
【０００６】
この発明は、このような問題点に鑑みなされたもので、少ない伝送量で効率よく、しかも具体的且つ柔軟にコードブックの内容を更新することができる符号化復号方式を提供することを目的とする。
【０００７】
【課題を解決するための手段】
この発明に係る符号化復号方式は、伝送すべき情報を符号化側コードブックを用いてベクトル量子化する符号化部と、この符号化部からの符号化出力を前記符号化側コードブックに対応する復号側コードブックを用いてベクトル逆量子化することにより前記伝送すべき情報を復号する復号部とを備えた符号化復号方式において、前記符号化側コードブック及び前記復号側コードブックの操作を記述したコードブック操作言語プログラムを前記符号化部から前記復号部に伝送すると共に、前記符号化部及び前記復号部で前記コードブック操作言語プログラムを共通に解釈して前記符号化側コードブックと前記復号側コードブックとを更新する操作を行なうことを特徴とする。
【０００８】
なお、ここでコードブック操作言語プログラムとしては、例えばプログラムのメンテナンス等において変数の入替え等を行う中間言語を用いたプログラムなどを用いることができる。これらプログラムは、符号化部と復号部とにおいて、共通のプログラム解釈手段（インタプリタやコンパイラのようなもの）によって解釈され、この解釈結果に基づきコードブックが操作される。
【０００９】
前記符号化部は、例えば前記伝送すべき情報である入力ベクトルと前記符号化側コードブックの各コードブックベクトルとの距離を求め当該距離が最も小さいコードブックベクトルのインデックスを符号化出力として出力するベクトル量子化手段と、このベクトル量子化手段で求められた距離が所定値よりも大きい場合にコードブックの操作とその操作方法を決定するコードブック操作決定手段と、このコードブック操作決定手段での決定に基づいて前記コードブック操作言語プログラムを生成するコードブック操作言語プログラム生成手段と、このコードブック操作言語プログラム生成手段で生成されたコードブック操作言語プログラムを解釈して前記符号化側コードブックの内容を操作するプログラム解釈手段と、前記生成されたコードブック操作言語プログラムを前記符号化出力と共に伝送するためのビットストリームを生成するビットストリーム生成手段とを備える。
【００１０】
この発明によれば、コードブックの内容の操作を記述したコードブック操作言語プログラムを符号化部から復号部へ伝送するようにしているので、符号化部から復号部へ具体的で柔軟なコードブック更新指示を与えることができる。このため、状況に応じた適切な更新処理が可能になる。例えば、コードブックベクトルの傾向が大きく変わった場合には、特定のランダマイズアルゴリズムの実行を指示するプログラムを送信することにより、送信部と受信部とで同じアルゴリズムに基づいてランダムコードブックを生成したり、コードブックの内容を全て特定のアルゴリズムによって入れ替えるといった処理が可能になる。また、符号化の途中で入力ベクトルとコードブックベクトルとの距離が所定のしきい値よりも大きくなった場合には、コードブックの範囲や入れ替えるデータなどを指定して必要最小限度のコードブックベクトルだけを更新することができる。この場合、入力ベクトルだけでなく、過去に伝送されたベクトルの使用も勿論可能である。更に、頻繁に使用されると予想されるコードブック更新プログラムをマクロとして定義し、このマクロプログラムを最初に１回だけ送信し、以後は必要に応じてマクロを表す中間言語だけを送信することにより、コードブック更新に必要な伝送情報量を削減することもできる。この発明は、このように符号化部と復号部とで種々のコードブック適応アルゴリズムを共有することができ、具体的で柔軟なコードブックの更新処理が可能になる。
【００１１】
なお、ベクトル量子化手段で求められた距離が所定値よりも大きい場合にコードブックの操作とその操作方法を決定するコードブック操作決定手段と、このコードブック操作決定手段での決定に基づいてコードブック操作言語プログラムを生成するコードブック操作言語プログラム生成手段を符号化部に設けるようにすると、ベクトル量子化結果に基づいて符号化部でコードブック操作言語プログラムを生成することができるので、通信途中においても、コードブックの内容を常に適切な状態に更新することができる。
【００１２】
【発明の実施の形態】
以下、図面を参照して、この発明の好ましい実施の形態について説明する。
図１は、この発明の実施例に係る符号化復号方式における符号化部の構成を示すブロック図である。
入力データは、例えば音声信号、映像信号等をＡ／Ｄ変換して得られたＰＣＭ（Ｐｕｌｓｅ  Ｃｏｄｅ  Ｍｏｄｕｌａｔｉｏｎ）データ、これを時間−周波数直交変換して得られた周波数スペクトラム等のデータである。この入力データはメモリ１に一旦格納される。メモリ１からは、記憶されたデータが一定のフレーム毎に切り出されて読み出される。読み出されたデータは、入力ベクトルとしてベクトル量子化部２に供給される。ベクトル量子化部２では、コードブック３に登録されたコードブックベクトルのうち入力ベクトルに最も近いコードブックベクトルを選択し、そのインデックスをビットストーム生成手段であるマルチプレクサ４に供給する。
【００１３】
一方、メモリ１から読み出された入力ベクトルは、コードブック操作決定部５に供給される。コードブック操作決定部５は、ベクトル量子化部２で算出された入力ベクトルとコードブックベクトルとの最小距離等に基づいてコードブック３の操作を決定する。コードブック操作言語プログラム生成部６は、コードブック操作決定部５のコードブック操作の決定内容に従って、コードブック３を更新するためのコードブック操作言語プログラムを生成する。このプログラムは、プログラム解釈手段であるインタプリタ７に与えられる。インタプリタ７は、与えられたプログラムを解釈し、コードブック３の内容を更新する。また、コードブック操作言語プログラムは、マルチプレクサ４に供給される。マルチプレクサ４は、コードブック操作言語プログラムとベクトル量子化により得られた符号化データとしてのインデックスとからビットストリームを生成し、図示しない伝送路に送出する。
【００１４】
図２は、復号部の構成を示すブロック図である。
復号部では、受信されたビットストリームを、まずデマルチプレクサ１１でコードブック操作言語プログラムと符号化データ（インデックス）とに分割する。コードブック操作言語プログラムは、インタプリタ１２に供給され、ここでプログラムが解釈され、符号化部と同様のアルゴリズムにより、コードブック１３の内容が更新される。一方、インデックスは、ベクトル逆量子化部１４に供給され、更新されたコードブック１３を用いて出力データに復号される。
【００１５】
次に、このように構成された符号化部及び復号部の動作について説明する。
まず、コードブックの初期化処理の典型例としてコードブック３，１３の内容を全て入れ替える処理の例について説明する。
図３は、最も簡単な処理を実行するためのビットストリームの構成を示す図である。
ビットストリームの先頭には、コードブック操作言語プログラムとしてコードブック入れ替えを表す中間言語が配置されている。続いて、入れ替える新しいコードブックデータが続き、更に符号化データ開始を表す中間言語を介して符号化データが続く。最初にコードブックの入れ替えの指示が符号化部から復号部に伝送されているので、符号化データを伝送する前にコードブックデータをまとめて入れ替えることができる。例えばオンラインカラオケシステム等において、各曲毎にそれに適したコードブックを予め用意しておき、選曲された時点で、コードブックの内容を伝送して全て入れ替える場合等に有効である。音楽の再生前にコードブックの内容が全て更新されるため、符号化データの復号途中で音切れなどの発生を防止することができる。
【００１６】
図４は、コードブックの内容を全て入れ替える他の例で、ランダムコードブックを生成するコードブック操作言語プログラムの記述例である。
このプログラムでは、符号化部と復号部とで同じ乱数生成アルゴリズムを用いて、ランダムコードブックを生成する。第１行では、１１３という数値で乱数を初期化し、第２行〜第４行でｉを０〜ＣＯＤＥＢＯＯＫＳＩＺＥ−１まで増加させながら、コードブックに乱数を格納していく。
このプログラムの場合、コードブックベクトルを全く伝送せずにコードブック３，１３の内容を初期化することができる。
【００１７】
図５は、コードブックの一部を入れ替えるコードブック操作言語プログラムの記述例である。
このプログラムは、コードブックベクトルのうち今まで使用していたベクトルと、使用しない部分に格納しておいたベクトルとを符号化部と復号部とで同じように入れ替えるためのものである。第１行〜第３行で、コードブックの第５５番〜第７９番のベクトルを、通常は使用しない第１０５番〜第１２９番のベクトルと入れ替えるようにしている。
【００１８】
図６は、適応コードブックの適応方法をプログラムする第１の記述例である。このプログラムは、第５行〜第１２行に、”ｓｔａｒｔ”  で定義されたメインループと、第１３行〜第１８行に、”Ｌａｂｅｌ”  で定義された終了判定ループとから構成される。第１行では、このプログラムのロード及び実行を指示し、第２行では、ｍｅｓｓａｇｅ  が来たら  Ｌａｂｅｌ  に飛ぶことを指示している。ｍｅｓｓａｇｅ  は、メッセージが入っている特殊変数であり、終了判定ループで  ｍｅｓｓａｇｅ  ＝  ”ＥＮＤ”  と判定されるまでプログラムが実行される。第３行及び第４行で入力ベクトルとコードブックベクトルとの距離の最大許容値  ＭＡＸ＿ＬＩＭＩＴ  と、コードブックのサイズとを定義している。メインループでは、各サンプルについて（第６行）、入力ベクトルと最も近いコードブックベクトルのインデックスを検索し（第７行）、検索されたインデックスのコードブックベクトルと入力ベクトルとの距離が最大許容値  ＭＡＸ＿ＬＩＭＩＴ  よりも大きい場合には（第８行）、コードブックの後ろから２番目のベクトルを、同じく後ろから１番目と２番目のベクトルの平均ベクトルと置き換え（第９行）、後ろから１番目のベクトルとして入力ベクトルを格納する（第１０行）。
これによって、入力ベクトルに徐々に適合していくようにコードブック３，１３の内容が更新される。
【００１９】
図７は、適応コードブックの適応方法をプログラムする第２の記述例である。このプログラムは、マクロを使用する例で、ピッチの変化に応じてコードブックを変化させるようにしたプログラム例である。このため、符号化部には、図８に示すように、入力データのピッチの変化を抽出するためのピッチ抽出部８を設ける必要がある。
まず、第１行〜第５行でマクロ  ”ｉｒｅｋａｅ”  を定義する。ここで  ｆｒｏｍ，  ｔｏ，  ｓｉｚｅ  は、マクロ  ”ｉｒｅｋａｅ”  の引数で、入れ替え元の開始位置、入れ替え先の開始位置及び入れ替えのサイズをそれぞれ示している。このマクロは、１度送信しておけば、その後送信する必要がない。
【００２０】
第６行で  ”ｐｃｈａｎｇｅ”  というルーチンの実行が指示され、第８行でしきい値が定義されている。第１１行〜第１６行にかけての、＃ＩＦ  ＥＮＣＯＤＥＲ〜＃ＥＮＤＩＦ  に記述されたプログラムは符号化部でのみ使用し、復号部には伝送されない。ここで、第１２行の  ｇｅｔＰｉｔｃｈ  関数は、符号化部に設置されたピッチ抽出部８の状態を読み出す関数である。ｇｅｔＰｉｔｃｈ（）  の値がしきい値を超えたら、引数３０，２０を指定してマクロ”ｉｒｅｋａｅ”を実行し（第１３行）、復号部にピッチが変化したというメッセージ  ”ＰＣＨＡＮＧＥ”  を送る（第１４行）
また、第１９行〜第２４行にかけての、＃ＩＦ  ＤＥＣＯＤＥＲ〜＃ＥＮＤＩＦ  に記述されたプログラムは復号部でのみ使用する。復号部では、メッセージ  ”ＰＣＨＡＮＧＥ”  を受け取ったら（第２０行）、引数３０，２０を指定してマクロ”ｉｒｅｋａｅ”を実行する（第２１行）。
このように、良く使用する操作内容を表すマクロを定義してそのマクロを表す中間言語だけを伝送することで中間言語（プログラム）の伝送量を大幅に減らすことができる。
【００２１】
図９は、適応コードブックの適応方法をプログラムする第３の記述例である。このプログラムは、入力データに応じてコードブックを変化させるプログラム例で、入力データとコードブックの中のコードベクトルとの最短距離がしきい値ＴＨＲＥＳＨＯＬＤ  よりも大きい場合（第７行〜第８行）には、バックアップコードブックのうち、一番入力ベクトルの値に近いコードブックベクトルのインデックス”ｉｎｄｅｘ２”  を伝送し（第９行〜第１０行）、エンコーダ、デコーダ双方のコードブックを更新する。なお、第６行〜第１２行の＃ＩＦ  ＥＮＣＯＤＥＲ〜＃ＥＮＤＩＦ  に記述されたプログラムは符号化部でのみ使用し、復号部には伝送されない。同様に、第１５行〜第２０行の＃ＩＦ  ＤＥＣＯＤＥＲ〜＃ＥＮＤＩＦ  に記述されたプログラムは復号部でのみ使用する。
【００２２】
図１０は、動作するプログラムを切り換える例である。
過去に伝送したプログラムが複数存在する場合、現在動作しているプログラムを停止して別のプログラムを動作させる。例えば、ｏｐｔ，ｐｃｈａｎｇｅというプログラムが既に伝送されていて、現在ｃ−ｃｈａｎｇｅというプログラムが動作しているときに、図１０の内容が実行されると、プログラムｃ−ｃｈａｎｇｅが停止してｏｐｔが動作する。
【００２３】
図１１は、既に伝送済みのプログラムを削除する例である。
符号化部、復号部共に蓄えることのできるプログラムの容量には制限がある。このため、過去に伝送したアルゴリズムを削除できるようにする必要がある。図示の例は、過去に送られたｐｃｈａｎｇｅ（）というプログラムを削除する例である。
【００２４】
図１２は、この発明をＣＥＬＰ方式に適用した符号化部の構成を示すブロック図である。
１フレーム毎に切り出されて入力された入力データは、ＬＰＣ（Ｌｉｎｅａｒ  Ｐｒｅｄｉｃｔｉｖｅ  Ｃｏｄｉｎｇ）分析部２１に入力され、ここでスペクトラムの包絡を予測するＬＰＣ係数が求められる。求められたＬＰＣ係数に基づいてＬＰＣ合成フィルタ２２が予測データを生成し、入力データとの予測残差が減算器２３で求められる。この予測残差のゲインをゲイン量子化部２４で量子化すると共に、予測残差をゲイン正規化部２５で正規化する。正規化された予測残差は、聴覚重み付けフィルタ２６で聴覚特性に基づき重み付けされる。これが入力ベクトル（励振ベクトル）となる。ベクトル量子化手段は、距離計算部２７と探索部２８とから構成される。このシステムでは、２段のコードブック２９，３０を使用してベクトル量子化を行っている。コードブック２９，３０からのコードブックベクトルは、加算器３１で加算され、距離計算部２７は、この加算ベクトルと入力ベクトルとの距離を計算する。
【００２５】
ここで、コードブック操作決定部３２は、▲１▼聴覚重み付けフィルタ２６からの入力ベクトルの値がもともと大きいとき、▲２▼距離計算部２７での距離が所定のしきい値よりも大きいとき、▲３▼探索部２８での探索結果が良くないとき、等にコードブックの操作を決定する。コードブック操作言語プログラム生成部３３は、それぞれの場合に応じて最適となるコードブック操作言語プログラムを生成する。このプログラムは、インタプリタ３４で解釈され、例えばコードブック２９の内容が更新される。
そして、ＬＰＣ係数、ゲイン、インデックス及びコードブック操作言語プログラムがマルチプレクサ３５においてビットストリームに組み立てられ、復号部に伝送される。
【００２６】
この実施例によれば、コードブック操作決定のための要因を様々な角度から検討することができ、適切なプログラムを選定し易いという利点がある。
【００２７】
なお、以上の実施例では、コードブック操作決定部とコードブック操作言語プログラム生成部とがそれぞれ別々に設けられていたが、これらは１つにまとめることもできる。また、コードブック操作言語プログラムは、上記の例のように符号化部で生成する他に、予め他の装置で作成しておくこともできる。この場合、符号化部は入力データの符号化処理だけを行い、送信制御部等で符号化データにプログラムを付け加えればよい。また、コードブック操作言語プログラムで使用する中間言語の仕様を予め一定の量に制限しておき、且つそれらの出現率を考慮することにより、コードブック操作言語プログラムの伝送情報量を最適化することができる。
【００２８】
【発明の効果】
以上述べたように、この発明によれば、コードブックの内容を操作するコードブック操作言語プログラムを符号化部から復号部へ伝送するようにしているので、符号化部から復号部へ具体的で柔軟なコードブック更新指示を与えることができる、状況に応じた適切な更新処理が可能になるという効果を奏する。
【図面の簡単な説明】
【図１】この発明の一実施例に係る符号化復号方式の符号化部のブロック図である。
【図２】同符号化復号方式の復号部のブロック図である。
【図３】同符号化復号方式の伝送ビットストリーム例を示す図である。
【図４】同符号化復号方式に適用されるコードブック操作言語プログラムの例を示す図である。
【図５】コードブック操作言語プログラムの他の例を示す図である。
【図６】コードブック操作言語プログラムの他の例を示す図である。
【図７】コードブック操作言語プログラムの他の例を示す図である。
【図８】符号化部の他の構成例を示すブロック図である。
【図９】コードブック操作言語プログラムの他の例を示す図である。
【図１０】コードブック操作言語プログラムの他の例を示す図である。
【図１１】コードブック操作言語プログラムの他の例を示す図である。
【図１２】符号化部の他の構成例を示すブロック図である。
【符号の説明】１…メモリ、２…ベクトル量子化部、３，１３，２９，３０…コードブック、４，３５…マルチプレクサ、５，３２…コードブック操作決定部、６，３３…コードブック操作言語プログラム生成部、７，１２，３４…インタプリタ、８…ピッチ抽出部、１１…デマルチプレクサ、１４…ベクトル逆量子化部、２１…ＬＰＣ分析部、２２…ＬＰＣ合成フィルタ、２３…減算器、２４…ゲイン量子化器、２５…ゲイン正規化器、２６…聴覚重み付けフィルタ、２７…距離計算部、２８…探索部、３１…加算器。
【図１】
0003564896.tif 000002
【図２】
0003564896.tif 000003
【図３】
0003564896.tif 000004
【図４】
0003564896.tif 000005
【図５】
0003564896.tif 000006
【図６】
0003564896.tif 000007
【図７】
0003564896.tif 000008
【図８】
0003564896.tif 000009
【図９】
0003564896.tif 000010
【図１０】
0003564896.tif 000011
【図１１】
0003564896.tif 000012
【図１２】
0003564896.tif 000013