(57)【要約】【課題】符号化条件パラメータを所定の区間ごとに変更可能であると共に、大容量のデータであっても符号化することが可能な時系列信号の符号化装置を提供する。【解決手段】時系列のサンプル列で構成される音響信号をあらかじめ設定されたサンプル数単位を１ブロックとして、ワークメモリに読み込み、符号化処理を行う。符号化の際、各ブロックに最適なパラメータで符号化を行い、その符号化パラメータをブロック単位で記録していく。【選択図】  図１１
2004343299.tif 000002
【特許請求の範囲】
【請求項１】
時系列のサンプル列で構成される時系列信号に対して、前記サンプル列を再現できるように情報量を圧縮する符号化装置であって、
前記サンプル列を所定のサンプル数単位のブロックに分割し、分割した各ブロックを順次ワークメモリに読み込むブロック分割手段と、
前記ワークメモリに読み込まれたブロックを構成するサンプル列に対して、線形予測誤差を算出し、前記サンプル列の各サンプルの値を予測誤差値に変換する予測誤差変換手段と、
前記予測誤差値に変換されたサンプル列を可変長で符号化する可変長符号化手段と、
を有することを特徴とする時系列信号の符号化装置。
【請求項２】
請求項１において、
前記予測誤差に変換されたサンプル値の絶対値に対して、全体を１ビット上位にずらし、正負符号を最下位１ビットに挿入する極性処理手段を、前記可変長符号化手段の前段に有することを特徴とする時系列信号の符号化装置。
【請求項３】
請求項１において、
前記サンプル列が同一時刻に複数の値をもつチャンネルｃｈ１とチャンネルｃｈ２の２チャンネルで構成されている場合、前記チャンネルｃｈ２の各サンプルの値を、前記チャンネルｃｈ１のサンプル値ｘＬとチャンネルｃｈ２のサンプル値ｘＲの差分値ｘｃｈ２に変換し、前記チャンネルｃｈ１の各サンプルの値を、前記差分値ｘｃｈ２を用いてｘｃｈ１＝ｘＲ＋ｘｃｈ２／２で算出される値に変換するチャンネル間演算手段をさらに有することを特徴とする時系列信号の符号化装置。
【請求項４】
請求項１において、
前記ブロック分割手段と前記予測誤差変換手段の間に、前記ブロックを構成するサンプル列に対して、録音信号をサンプリングすることにより得られた主サンプル列と、主サンプル列を補間処理することにより得られた副サンプル列を分離すると共に、前記副サンプル列中の各副サンプルの値を、近傍の主サンプルの平均値と当該副サンプルの値との差分値、もしくは直前の主サンプルの値と当該副サンプルの値との差分値に変換するサンプル列再配置手段をさらに有することを特徴とする時系列信号の符号化装置。
【請求項５】
請求項４において、
前記サンプル列再配置手段は、前記サンプル列の偶数番目に位置するサンプルの値が前後の奇数番目に位置するサンプルの平均値に近い場合、または直前の奇数番目に位置するサンプルの値に近い場合に、奇数番目に位置するサンプルを主サンプル列、偶数番目に位置するサンプルを副サンプル列として分離すると共に、
前記サンプル列の奇数番目に位置するサンプルの値が前後の偶数番目に位置するサンプルの平均値に近い場合、または直前の偶数番目に位置するサンプルの値に近い場合に、偶数番目に位置するサンプルを主サンプル列、奇数番目に位置するサンプルを副サンプル列として分離するものであることを特徴とする時系列信号の符号化装置。
【請求項６】
請求項１において、
前記ブロック分割手段と前記予測誤差変換手段の間に、前記ブロックを構成するサンプル列に対して、各サンプルの下位の所定数のビット成分を削除する下位固定ビット削除手段をさらに有することを特徴とする時系列信号の符号化装置。
【請求項７】
請求項１において、
前記サンプル列の中で、サンプルの値が連続して同一値になっているサンプルを抽出し、前記サンプル列から削除すると共に、削除したサンプルの先頭時間位置と、サンプル個数と、サンプル値の３つの値を符号化する信号平坦部処理手段を、前記ブロック分割手段と前記予測誤差変換手段の間に有することを特徴とする時系列信号の符号化装置。
【請求項８】
請求項１において、
前記サンプル列の中から所定の個数のサンプル列で構成されるフレームと同一内容のフレームが時間的に過去に存在する場合に、未来に位置するフレームを削除し、両フレームの先頭時間位置と、フレームを構成するサンプル個数を符号化する相関フレーム検出手段を、前記ブロック分割手段と前記予測誤差変換手段の間に有することを特徴とする時系列信号の符号化装置。
【請求項９】
請求項１において、
前記予測誤差変換手段は、前記サンプル列に対して、時間的に過去のサンプル列から、複数の予測計算式に基づいて、複数の予測誤差値の候補を算出し、その中から符号化対象の予測誤差値を選別するものであることを特徴とする時系列信号の符号化装置。
【請求項１０】
請求項９において、
前記複数の予測計算式の線形係数を、前記ブロックを構成するサンプル列に対して予測誤差値の二乗平均値が最小となる条件で設定することを特徴とする時系列信号の符号化装置。
【請求項１１】
請求項９において、
前記複数の予測計算式の線形係数を、所定のサンプル数ごとに、過去のサンプル列を基に更新することを特徴とする時系列信号の符号化装置。
【請求項１２】
請求項１において、
前記可変長符号化手段は、前記予測誤差値に変換された各サンプルのビット成分のうち、下位のビット成分をそのままのビット成分で符号化し、残りの上位ビット成分に対してビット成分を変更して符号化を行うものであることを特徴とする時系列信号の符号化装置。
【請求項１３】
与えられた時系列信号に対して、請求項１から請求項１２のいずれかの時系列信号の符号化装置により出力された符号データを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、音楽制作、音響データの素材保管、ロケ素材の中継など音楽制作分野、ＣＤ・ＤＶＤ等のデジタル記録媒体を用いたオーディオ記録再生、遠隔医療における生体信号の解析・診断等の分野において好適なデータの圧縮符号化技術に関する。
【０００２】
【従来の技術】
従来より、音響信号の圧縮には様々な手法が用いられている。音響信号を圧縮して符号化する手法として、ＭＰ３（ＭＰＥＧ−１／Ｌａｙｅｒ３）、ＡＡＣ（ＭＰＥＧ−２／Ｌａｙｅｒ３）などが実用化されている。このような圧縮符号化方式により、音響信号を小さいデータとして扱うことが可能となり、データの記録・伝送の効率化に貢献している。
【０００３】
最近では、上述のようなＭＰ３、ＡＡＣ等のロッシー符号化方式だけでなく、完全に復元することが可能なロスレス符号化方式も開発されており、音響素材の管理に用いられている（例えば、特許文献１参照）。
【０００４】
【特許文献１】
特表２０００−８２１１９９号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、上述のような従来のロスレス符号化方式では、途中で条件パラメータの変更が行われず、全体に渡って同一の条件パラメータで符号化が行われている。そのため、区間に応じた条件パラメータを設定することができないという問題がある。また、従来の方式では、符号化対象とする音響信号を一度に読み込まなければならないため、大容量の音響データの符号化が困難である。
【０００６】
上記のような点に鑑み、本発明は、符号化条件パラメータを所定の区間ごとに変更可能であると共に、大容量のデータであっても符号化することが可能な時系列信号の符号化装置を提供することを課題とする。
【０００７】
【課題を解決するための手段】
上記課題を解決するため、本発明では、時系列のサンプル列で構成される時系列信号に対して、前記サンプル列を再現できるように情報量を圧縮する符号化装置として、前記サンプル列を所定のサンプル数単位のブロックに分割し、分割した各ブロックを順次ワークメモリに読み込むブロック分割手段と、前記ワークメモリに読み込まれたブロックを構成するサンプル列に対して、線形予測誤差を算出し、前記サンプル列の各サンプルの値を予測誤差値に変換する予測誤差変換手段と、前記予測誤差値に変換されたサンプル列を可変長で符号化する可変長符号化手段を有する構成としたことを特徴とする。
【０００８】
本発明によれば、時系列信号を構成するサンプル列を、所定サンプル数単位のブロックとして分割して読み込み、各ブロックを構成するサンプル列ごとに、予測誤差変換、可変長符号化を行うようにしたので、符号化条件パラメータを所定の区間ごとに変更可能であると共に、大容量のデータであっても符号化することが可能となる。
【０００９】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照して詳細に説明する。
（装置構成）
図１は、本発明に係る時系列信号の符号化装置の一実施形態を示す構成図である。図１において、１０はブロック分割手段、２０は下位固定ビット削除手段、３０はチャンネル間演算手段、４０はサンプル列再配置手段、５０は信号平坦部処理手段、６０は相関フレーム検出手段、７０は予測誤差変換手段、８０は極性処理手段、９０は可変長符号化手段、１００は符号出力手段である。
【００１０】
図１において、ブロック分割手段１０はサンプリングにより得られたサンプル列であるデジタル音響信号を、所定のサンプル数に分割してワークメモリに読み込む機能を有している。下位固定ビット削除手段２０は、複数の音響信号を合成する際に、ビット数を合わせるために加えられたとみなされる下位の所定数のビットを削除する機能を有している。チャンネル間演算手段３０は、複数のチャンネルからなるサンプル列の各チャンネル間の相関演算を行う機能を有する。サンプル列再配置手段４０は、ブロックを構成するサンプル列を録音を基に得られたサンプル列である主サンプル列と主サンプル列を補間することにより得られた副サンプル列とに分離する機能を有している。信号平坦部処理手段５０は、各チャンネルごとのサンプル列に対して、信号の値が一定である平坦部を検出し、効率的に符号化する機能を有する。
【００１１】
相関フレーム検出手段６０は、各サンプル列に対して、所定の区間をフレームとして設定した後、フレーム間で対応する全てのサンプル値が同一になっている相関フレームを検出し、時間的に後方（未来）に位置する相関フレームを削除する機能を有する。予測誤差変換手段７０は、線形予測誤差の手法を用いて、各サンプルの値を予測誤差値に変換する機能を有する。極性処理手段８０は、正負の値を補数表現により表した各サンプルのビット列を、正負の極性を表す１ビットと他のビット列に分ける処理を行う機能を有する。可変長符号化手段９０は、各サンプルの値を可変ビット長で符号化する機能を有している。符号出力手段１００は、各ブロック単位で符号化されたデータおよび上記各手段により得られるデータを、分割されたブロック形態を維持しながら単一の符号化ファイルに出力する機能を有している。図１に示した装置は、実際には、コンピュータおよびコンピュータにインストールされた専用のソフトウェアプログラムにより実現される。
【００１２】
（処理の流れ）
次に、図１に示した時系列信号の符号化装置の処理動作について説明する。まず、ブロック分割手段１０が、時系列信号を構成するサンプル列の先頭から所定のサンプル数単位でブロック化し、１ブロックごとにワークメモリに読み込む。１ブロックとするサンプル数は、あらかじめ設定しておくことができる。１ブロックとするサンプル数は、音楽の１章節より若干長い程度、すなわち５秒〜１０秒程度が好ましい。時間的には同じ長さであっても、サンプリング周波数によりサンプル数が異なるため、設定者が５秒〜１０秒程度となるサンプル数をあらかじめ本システムに設定しておく。例えば、符号化対象とする音響信号のサンプリング周波数が４８ｋＨｚであった場合、１ブロックを１０秒とするには、４８００００サンプルを１ブロックとして設定してやれば良い。ブロック分割手段１０は、設定されたサンプル数を１ブロックとして順次ワークメモリに読み込んでいくことになる。
【００１３】
次に、下位固定ビット削除手段２０が、１ブロックとして読み込まれたサンプル列の各サンプルの下位の所定数のビットを分離する。これは、量子化ビット数が１６ビットのデータを高精細の音響信号と合わせるために２４ビットに変換している場合に、冗長な下位ビット成分を削除するために行う。この処理を行わないと、符号化された情報量は３／２倍に増大することになる。また、基になった素材の音響信号が高精細の２４ビットで量子化されている場合においても、Ａ／Ｄ変換器の性能や編集処理により、冗長な下位ビット成分が特定のブロックのみに発生する場合があり、下位固定ビット削除手段２０によりブロック単位で冗長な下位固定ビットの検出と削除を行う処理が有効になることがある。下位ビットが固定でなく有意なデータである場合、下位固定ビットを削除するのではなく分離し、分離された下位ビットデータ配列を出力符号データの一部として別途記録することも可能であり、この場合、後段の予測誤差変換手段７０以降の処理負荷が軽減される。この下位固定ビット削除手段２０については、動作させるかどうかをあらかじめ設定しておくことができる。
【００１４】
続いて、チャンネル間演算手段３０がチャンネル間の相関演算処理を行う。具体的には、まず、同一時刻におけるチャンネルｃｈ１のサンプルとチャンネルｃｈ２のサンプルの差分演算を行い、差分値をチャンネルｃｈ２の新たなサンプル値として記録する。すなわち、元のチャンネルｃｈ１のサンプル値をｘＬ、元のチャンネルｃｈ２のサンプル値をｘＲとすると、ｘｃｈ２＝ｘＬ−ｘＲで算出されたｘｃｈ２がチャンネルｃｈ２のサンプルの新たな値となる。ただし、１ブロックに渡ってｘｃｈ２の絶対値の総和を算出し、それが、元のチャンネルｃｈ２のサンプル値の絶対値の総和よりも大きくなった場合は、チャンネルｃｈ２のサンプル値の変更は行わない。これは、本発明がデータの圧縮を目的としているため、データ量が大きくなってしまうと意味がないからである。チャンネルｃｈ２の更新が行われたら、チャンネルｃｈ１のサンプルの新たな値を算出する。具体的には、算出されたチャンネルｃｈ２の新たなサンプル値であるｘｃｈ２を用いて、ｘｃｈ１＝ｘＲ＋ｘｃｈ２／２で算出する。算出されたｘｃｈ１がチャンネルｃｈ１の新たなサンプル値として記録される。新たなサンプル値ｘｃｈ１は、数学的には、（ｘＬ＋ｘＲ）／２となるが、このようにするとコンピュータによる演算で誤差が生じてしまうため、一旦ｘｃｈ２を算出した後、ｘｃｈ１の算出を行う。
【００１５】
このようにして得られた各チャンネルのサンプル列からは、復号時には、以下のようにすることにより復元することができる。まず、ｘＲ＝ｘｃｈ１−ｘｃｈ２／２として元のチャンネルｃｈ２のサンプル値を復元する。続いて、復元したチャンネルｃｈ２のサンプル値ｘＲを用いて、ｘＬ＝ｘＲ＋ｘｃｈ２により元のチャンネルｃｈ１のサンプル値を復元する。
【００１６】
チャンネル間演算手段３０による処理が終わったら、サンプル列再配置手段４０がサンプル列の再配置処理を行う。サンプル列再配置手段４０による処理は、音響信号として複数の音響信号をミックスしたワークデータを扱う場合に有効である。具体的には、サンプリング周波数４８ｋＨｚ、量子化ビット数１６ビットの通常の音響信号や、サンプリング周波数９６ｋＨｚ、量子化ビット数２４ビットの高精細の音響信号が混在したものである。このようにサンプリング周波数の異なる音響信号を混在させることにより得られる音響信号は、高精細の音響信号にサンプリング周波数を統一させて扱うことになる。この場合、サンプリング周波数４８ｋＨｚの音響信号は、サンプリング周波数９６ｋＨｚの音響信号にサンプル数を合わせるべく隣接するサンプルの平均値などで間を補間していく。
【００１７】
このような音響信号を模式的に示すと図２（ａ）のようになる。図２（ａ）において括弧内の数字は、１から昇順に付されたサンプル番号であり、ｘは、そのサンプルの値を示している。このようなサンプル列に対して、サンプル列再配置手段４０は、４通りの処理を行う。１つ目は、奇数番目のサンプルについて、その両隣の偶数番目のサンプルの平均値との差分を演算する。２つ目は、偶数番目のサンプルについて、その両隣の奇数番目のサンプルの平均値との差分を演算する。３つ目は、奇数番目のサンプルについて、直前の偶数番目のサンプルとの差分を演算する。４つ目は、偶数番目のサンプルについて、直前の奇数番目のサンプルとの差分を演算する。各演算後のサンプル列を模式的に示すと、それぞれ図２（ｂ）〜（ｅ）に示すようになる。なお、図２（ｂ）（ｄ）の例では、演算を行わない偶数番目のサンプルを、図２（ｃ）（ｅ）の例では、奇数番目のサンプルを、それぞれ時間的に過去に移動させた状態で示している。
【００１８】
この差分演算の結果、差分値が小さいものが最多となるものを副サンプル列とし、その場合に演算を行わないものを主サンプル列とする。図２の例では、図２（ｂ）〜図２（ｅ）の配列の後半分の各値を比較することになる。例えば、奇数番目のサンプルが両隣接サンプルを利用した補間によって得られたものである場合、図２（ｂ）に示した配列の後半の値が０になる。また、偶数番目のサンプルが両隣接サンプルを利用した補間によって得られたものである場合、図２（ｃ）に示した配列の後半の値が０に近くなる。また、奇数番目のサンプルが直前のサンプルと同一の値で補間されたものである場合、図２（ｄ）に示した配列の後半の値が０になる。また、偶数番目のサンプルが直前のサンプルと同一の値で補間されたものである場合、図２（ｅ）に示した配列の後半の値が０になる。例えば、図２（ｂ）に示す配列の後半に０近辺の値が多い場合、偶数番目のサンプルの集合を主サンプル列、奇数番目のサンプルの集合を副サンプル列として分離する。
【００１９】
また、サンプル列再配置手段４０の処理においては、図２（ｂ）〜（ｅ）に示したように主サンプルを時間的に過去に移動し、副サンプルを時間的に未来に移動させるようにしても良いが、主サンプルと副サンプルを分離して扱うようにしても良い。例えば、奇数番目が副サンプルの場合には、図２（ｆ）に示すように主サンプルと副サンプルを分離する。本実施形態では、本来のサンプルを利用して補間することにより得られたサンプルを含んだサンプル列に対して線形予測を行うことにより、逆にデータ量が増えてしまうことを防ぐために、主サンプル列と副サンプル列を区別している。そのため、主サンプル列と副サンプル列に対して、別々に線形予測を行うことができれば、図２（ｂ）〜（ｅ）に示したような１つのサンプル列であっても、図２（ｆ）に示したような２つのサンプル列であっても良い。
【００２０】
次に、信号平坦部処理手段５０が、サンプル列に対して、信号平坦部の処理を行う。信号平坦部とは、同一の信号レベルが連続する部分のことをいう。特に信号レベルが「０」の無音部、および信号レベルの絶対値が最大の飽和部に現れることが多い。無音部は実際に無音であるか、音が非常に小さく記録されなかった場合に生じるが、飽和部は、信号の録音およびＡ／Ｄ変換の過程において生じる。無音部、飽和部またはそれ以外の同一信号レベルが連続する場合のいずれであっても、信号平坦部は、同一の信号レベルが所定の時間（所定のサンプル数）連続して記録される。このため、この部分は圧縮し易いデータになっている。具体的には、信号平坦部の先頭時刻位置と、同一信号レベルが続くサンプルの個数と、信号レベル（サンプル値）の３つの値を信号平坦部データとして各チャンネルのサンプル列と分離して記録する。各チャンネルのサンプル列からは、信号平坦部が削除される。これを模式的に示すと図３（ａ）（ｂ）に示すようになる。図１２（ａ）は、信号平坦部処理前のサンプル列である。図３（ａ）において、網掛けで示した部分は信号平坦部を示す。信号平坦部処理手段５０の処理により、信号平坦部は元のサンプル列からは分離され、図３（ｂ）に示すようになる。ただし、復号時に元通りに復元するために、分離された信号平坦部は、図３（ｃ）に示すような形式で記録しておく。
【００２１】
信号平坦部データは、上述のように、信号平坦部ごとに、その先頭時刻（サンプル番号）、サンプル数、サンプル値の３属性で記録する。ここで、先頭時刻とは、信号の開始位置からの時刻であり、図３（ｃ）の例では、先頭からのサンプル番号で記録している。上述のように、サンプル番号をサンプリング周波数で除算すれば、時刻に変換されることになる。サンプル数は、そのサンプル値がどの程度連続して続くかを示す情報である。なお、サンプル数の代わりに信号平坦部の終了時刻を記録するようにしても良い。サンプル値は、デジタル化された信号レベルを示している。ここでは、１６ビットで量子化しているので、最大値は「３２７６７」、最小値は「−３２７６８」となる。すなわち、「０」は無音部、「３２７６７」および「−３２７６８」は飽和部を示している。ただし、信号平坦部を無条件には処理しない。ここでは、データの圧縮を目的としているため、サンプル列の削減分よりも信号平坦部データが大きくなると意味がないからである。したがって、信号平坦部となるサンプルが所定数以上連続する場合に限り信号平坦部データを作成して各チャンネルのサンプル列から分離するのである。
【００２２】
続いて、各チャンネルのサンプル列に対して、相関フレーム検出手段６０が、所定の区間長をもつフレームを設定して、設定されたフレーム間の比較を行う。本実施形態では、フレーム長をサンプル列の開始時刻から終了時刻までの全区間に渡って固定長としている。具体的には、１フレームを５１２サンプルとしている。相関フレーム検出手段６０は、各チャンネルのサンプル列の先頭から５１２サンプルずつを１フレームとして設定し、フレーム間で全サンプルが一致する相関フレームを求めていくことになる。具体的な手順を図４のフローチャートに従って説明する。
【００２３】
まず、相関フレーム検出手段６０は、所定のサンプル数単位でフレーム化を行う（ステップＳ１）。本実施形態では、どのブロックにおいてもフレーム長を固定長５１２サンプルとしている。相関フレーム検出手段６０は、図５（ａ）に示すように、各ブロックにおいて、サンプル列の先頭から５１２サンプルずつを１フレームとして設定していくことになる。
【００２４】
次に、各フレームに対して構成するサンプル値が全て一致するフレームを探索する。具体的には、図５（ｂ）に示すように、まず、設定されたフレームのうち、ブロック内の時間的に最後尾のフレームを、相関フレームを探すための対象フレームとする。次に、所定の探索範囲内において、対象フレームの先頭サンプルの値と同一の値をもつサンプルを、時間的に遡りながら探索していく（ステップＳ２）。例えば、図６（ａ）に示すように、対象フレームがｍＴ〜ｍＴ＋５１１の５１２個のサンプルで構成されているとする。この場合、まず、対象フレームの先頭サンプルｍＴのサンプル値ｘ（ｍＴ）と同一となるサンプルを探索していく。さらに、サンプルｍＴ−１、サンプルｍＴ−２と順に探索していく。なお、図６において、ｍは先頭からｍ番目のフレームであることを示し、Ｔはフレーム長（本実施形態では５１２サンプル）を示している。
【００２５】
一致するサンプルｔが見つかったら（ステップＳ３）、次に、そのサンプルｔの次のサンプルｔ＋１と対象フレームの２番目のサンプルｍＴ＋１が一致するかどうかを比較する。このようにしてサンプルの値が一致する限り後続するサンプル同士の比較を行っていく（ステップＳ４）。ステップＳ４においては、ｘ（ｔ＋ｐ）とｘ（ｍＴ＋ｐ）の値が一致する限り、処理を繰り返していく。例えば、図６（ｂ）に示す例では、ｘ（ｔ）〜ｘ（ｔ＋８）がｘ（ｍＴ）〜ｘ（ｍＴ＋８）と一致しているので、さらにｐ＝９として、ステップＳ４の処理が続けられることになる。ｐ＝０〜ｐ＝５１１までの全てのｘ（ｔ＋ｐ）とｘ（ｍＴ＋ｐ）が一致した場合（ステップＳ５）、そのサンプル列を対象フレームに対する相関フレームとし、相関フレームの先頭のサンプル番号と対象フレームの先頭のサンプル番号とを対応付けてフレーム相関データとして記録し、対象フレームを元のサンプル列から削除する（ステップＳ６）。対象フレームの全サンプルと一致しなければ、さらに対象フレームの先頭サンプルと値が一致するサンプルが存在するかどうかを時間的に遡りながら探索していく。所定のサンプル数分遡っても一致する相関フレームが存在しない場合は、その対象フレームに関する相関フレームの探索を中止し、対象フレームの直前のフレームを新たな対象フレームとして相関フレームの探索を行う。１つの対象フレームに対しての処理が終わったら、ステップＳ２に戻って、１つ直前のフレームを新たな対象フレームとして処理を続けていく（ステップＳ７）。このようにして、ブロック内の先頭サンプル近辺に位置するフレームを除く全フレームを対象フレームとして相関フレームの検出処理を行う。
【００２６】
ブロック内のサンプル列全体でみると、図５（ｃ）に示すように対象フレームに対応する相関フレームが検出されたとすると、図５（ｄ）に示すように対象フレームが削除されることになる。このとき、復号時に完全に復元できるように図５（ｅ）に示すようなフレーム相関データが記録される。図５（ｅ）に示すように、フレーム相関データには対象フレームの先頭のサンプル番号と相関フレームの先頭のサンプル番号が対応づけて記録される。
【００２７】
続いて、サンプル列（サンプル列再配置手段４０による処理を行った場合は主サンプル列、副サンプル列）の各サンプルの値を、予測誤差変換手段７０が予測誤差値に変換する。あるサンプルにおける予測誤差値の算出は、時間的に過去に位置する直前の１つもしくは複数のサンプルの値を利用して行われる。本実施形態では、利用する直前のサンプル数を動的に変化させる手法を用いている。以下に、このような適応型線形予測符号化について説明する。予測誤差変換手段７０により行われる適応型線形予測符号化の処理概要を図７のフローチャートに示す。まず、あらかじめ準備された複数の予測計算式を用いて、各予測計算式に対応した線形予測誤差を算出する（ステップＳ１１）。具体的には、サンプル番号ｔの予測誤差を算出する予測計算式として、以下の〔数式１〕〜〔数式１１〕を用意している。
【００２８】
〔数式１〕
ｅ０（ｔ）＝ｘ（ｔ）−ｅ０（ｔ−１）／２
【００２９】
〔数式２〕
ｅ１（ｔ）＝ｘ（ｔ）−ａ１１・ｘ（ｔ−１）−ｅ１（ｔ−１）／２
【００３０】
〔数式３〕
ｅ２（ｔ）＝ｘ（ｔ）−ａ２１・ｘ（ｔ−１）−ａ２２・ｘ（ｔ−２）−ｅ２（ｔ−１）／２
【００３１】
〔数式４〕
ｅ３（ｔ）＝ｘ（ｔ）−ａ３１・ｘ（ｔ−１）−ａ３２・ｘ（ｔ−２）−ａ３３・ｘ（ｔ−３）−ｅ３（ｔ−１）／２
【００３２】
〔数式５〕
ｅ４（ｔ）＝ｘ（ｔ）−ａ４１・ｘ（ｔ−１）−ａ４２・ｘ（ｔ−２）−ａ４３・ｘ（ｔ−３）−ａ４４・ｘ（ｔ−４）−ｅ４（ｔ−１）／２
【００３３】
〔数式６〕
ｅ５（ｔ）＝ｘ（ｔ）−ａ５１・ｘ（ｔ−１）−ａ５２・ｘ（ｔ−２）−ａ５３・ｘ（ｔ−３）−ａ５４・ｘ（ｔ−４）−ａ５５・ｘ（ｔ−５）−ｅ５（ｔ−１）／２
【００３４】
〔数式７〕
ｅ６（ｔ）＝ｘ（ｔ）−ｂ１１・ｘ（ｔ−１）−ｅ６（ｔ−１）／２
【００３５】
〔数式８〕
ｅ７（ｔ）＝ｘ（ｔ）−ｂ２１・ｘ（ｔ−１）−ｂ２２・ｘ（ｔ−２）−ｅ７（ｔ−１）／２
【００３６】
〔数式９〕
ｅ８（ｔ）＝ｘ（ｔ）−ｂ３１・ｘ（ｔ−１）−ｂ３２・ｘ（ｔ−２）−ｂ３３・ｘ（ｔ−３）−ｅ８（ｔ−１）／２
【００３７】
〔数式１０〕
ｅ９（ｔ）＝ｘ（ｔ）−ｂ４１・ｘ（ｔ−１）−ｂ４２・ｘ（ｔ−２）−ｂ４３・ｘ（ｔ−３）−ｂ４４・ｘ（ｔ−４）−ｅ９（ｔ−１）／２
【００３８】
〔数式１１〕
ｅ１０（ｔ）＝ｘ（ｔ）−ｂ５１・ｘ（ｔ−１）−ｂ５２・ｘ（ｔ−２）−ｂ５３・ｘ（ｔ−３）−ｂ５４・ｘ（ｔ−４）−ｂ５５・ｘ（ｔ−５）−ｅ１０（ｔ−１）／２
【００３９】
上記〔数式１〕〜〔数式１１〕において、ｅ０（ｔ）〜ｅ１０（ｔ）は各予測計算式による時刻ｔのサンプルにおける予測誤差であり、ｘ（ｔ）〜ｘ（ｔ−５）は時刻ｔ〜ｔ−５におけるサンプル値である。
【００４０】
上記〔数式３〕における「ａ２１・ｘ（ｔ−１）＋ａ２２・ｘ（ｔ−２）」、上記〔数式４〕における「ａ３１・ｘ（ｔ−１）＋ａ３２・ｘ（ｔ−２）＋ａ３３・ｘ（ｔ−３）」、上記〔数式５〕における「ａ４１・ｘ（ｔ−１）＋ａ４２・ｘ（ｔ−２）＋ａ４３・ｘ（ｔ−３）＋ａ４４・ｘ（ｔ−４）」、上記〔数式６〕における「ａ５１・ｘ（ｔ−１）＋ａ５２・ｘ（ｔ−２）＋ａ５３・ｘ（ｔ−３）＋ａ５４・ｘ（ｔ−４）＋ａ５５・ｘ（ｔ−５）」、上記〔数式８〕における「ｂ２１・ｘ（ｔ−１）＋ｂ２２・ｘ（ｔ−２）」、上記〔数式９〕における「ｂ３１・ｘ（ｔ−１）＋ｂ３２・ｘ（ｔ−２）＋ｂ３３・ｘ（ｔ−３）」、上記〔数式１０〕における「ｂ４１・ｘ（ｔ−１）＋ｂ４２・ｘ（ｔ−２）＋ｂ４３・ｘ（ｔ−３）＋ｂ４４・ｘ（ｔ−４）」、上記〔数式１１〕における「ｂ５１・ｘ（ｔ−１）＋ｂ５２・ｘ（ｔ−２）＋ｂ５３・ｘ（ｔ−３）＋ｂ５４・ｘ（ｔ−４）＋ｂ５５・ｘ（ｔ−５）」は過去の２〜５個のサンプルに基づく線形予測成分である。この線形予測成分、および、直前のサンプルにおいて算出された予測誤差「ｅ１（ｔ−１）／２」〜「ｅ１０（ｔ−１）／２」（誤差フィードバック成分）を用いて時刻ｔにおける予測誤差ｅ０（ｔ）〜ｅ１０（ｔ）を算出する。
【００４１】
上記の係数ａ１１〜ａ５５には初期値として、ａ１１＝１、ａ２１＝２、ａ２２＝−１、ａ３１＝３、ａ３２＝−３、ａ３３＝１、ａ４１＝４、ａ４２＝−６、ａ４３＝４、ａ４４＝−１、ａ５１＝５、ａ５２＝−１０、ａ５３＝１０、ａ５４＝−５、ａ５５＝１という値が各々設定されており、上記の係数ｂ１１〜ｂ５５には初期値として、ｂ１１＝１、ｂ２１＝２、ｂ２２＝−１、ｂ３１＝３、ｂ３２＝−３、ｂ３３＝１、ｂ４１＝４、ｂ４２＝−６、ｂ４３＝４、ｂ４４＝−１、ｂ５１＝５、ｂ５２＝−１０、ｂ５３＝１０、ｂ５４＝−５、ｂ５５＝１という値が各々設定されている。本実施形態では、これらの係数を設定されたモードに応じて動的に変化させる。図８に本システムで設定可能な線形係数の設定モードを示す。図８において、「初期固定値」とはブロック内の全サンプルについて上記初期値をそのまま用いることを示している。「初期最適値算出」とは、ブロック内のサンプル列全体を通して最適な値を算出し、算出した値をブロック内の全サンプルについて用いることを示している。「ユーザ設定初期固定値」とは、ユーザが独自に設定した値をブロック内の全サンプルについて用いることを示している。「逐次最適値算出」とは、上記初期値を利用して所定のサンプル数単位で係数を更新していくことを示している。本実施形態では、モード２を利用してａｉｊ系列の係数を「初期固定値」とし、ｂｉｊ系列の係数を「逐次最適値算出」とする。ここで、「逐次最適値算出」について説明する。「逐次最適値算出」は、具体的には、Ｌｅｖｉｎｓｏｎ−Ｄｕｒｖｉｎのアルゴリズムを利用した以下の〔数式１２〕を用いて係数ｂ１１〜ｂ５５を決定する。
【００４２】
〔数式１２〕
φ（ｋ）＝１／（Ｎ−Ｋ）・Σｊ＝１，Ｎ−Ｋｘ（ｊ）・ｘ（ｊ＋ｋ）
ｋｉ＝−｛φ（ｉ）＋Σｊ＝１，ｉ−１ｂｊ（ｉ−１）・φ（ｉ−ｊ）｝／Ｅ（ｉ−１）
ｂｉ（ｉ）＝ｋｉ
ｂｊ（ｉ）＝ｂｊ（ｉ−１）＋ｋｉ・ｂｉ−ｊ（ｉ−１）  ただし、１≦ｊ≦ｉ−１
Ｅ（ｉ）＝（１−ｋｉ２）Ｅ（ｉ−１）
【００４３】
上記〔数式１２〕において、φ（ｋ）は、Ｎ個のサンプルｘ（ｊ）（ｊ＝１，…，Ｎ）において、最大値Ｋ（上記例では５）の範囲でｋサンプルシフトさせたサンプル列との自己相関値である。なお、ＮはＫに対して十分大きな数値をとっている（例えばＫ＝５の場合、Ｎ＝３２７６８）。〔数式１２〕は、ｉ＝１からｉ＝Ｋまで再帰的に繰り返し、最終的に得られたｂｊ（Ｋ）が過去Ｋ個のサンプルに対応する係数になるとともに、各フェーズにおいて得られた中間結果であるｂｊ（ｉ）が係数ｂｉｊとなる。ステップＳ１においては、上記〔数式１２〕により決定した係数を用いて、〔数式７〕〜〔数式１１〕の各計算式で計算を行うことになる。〔数式１２〕による計算は、実際には後述するステップＳ１７において行われるものである。また、係数を決定するには、過去の数サンプル分の値を必要とするので、初めのＮ−１サンプルについては、上記の初期係数で〔数式７〕〜〔数式１１〕の計算を行うことになる。
【００４４】
図７のフローチャートに戻って、上記各予測計算式別の予測誤差値の絶対値の累積である累積誤差が最小となる線形予測誤差をそのサンプルの予測誤差として選出する（ステップＳ１２）。ここでは、累積誤差という考え方を用いている。具体的には、各予測計算式〔数式１〕〜〔数式１１〕により算出された予測誤差の過去のサンプルについての累積値をＡ０〜Ａ１０として設定する。そして、この累積誤差Ａ０〜Ａ１０のうち、最小となるものに対応する予測誤差を選出する。例えば、Ａ０〜Ａ１０のうち、Ａ２が最小であったとする。この場合、〔数式３〕で算出された予測誤差ｅ２（ｔ）を符号化対象とする予測誤差ｅ（ｔ）として選出することになる。選出された予測誤差ｅ（ｔ）はサンプルの元の値ｘ（ｔ）と置き換えられて以降処理が行われることになる。
【００４５】
続いて、累積誤差Ａ０〜Ａ１０に各予測誤差ｅ０（ｔ）〜ｅ１０（ｔ）の絶対値を加算する（ステップＳ１３）。具体的には、以下の〔数式１３〕に示すように、累積誤差値となる変数Ａ０〜Ａ１０を更新していく。同時に、各サンプルの処理を行う度に、カウンタＣ１、Ｃ２を１つづつ加算していく処理を行う。
【００４６】
〔数式１３〕
Ａ０←Ａ０＋｜ｅ０（ｔ）｜
Ａ１←Ａ１＋｜ｅ１（ｔ）｜
Ａ２←Ａ２＋｜ｅ２（ｔ）｜
Ａ３←Ａ３＋｜ｅ３（ｔ）｜
Ａ４←Ａ４＋｜ｅ４（ｔ）｜
Ａ５←Ａ５＋｜ｅ５（ｔ）｜
Ａ６←Ａ６＋｜ｅ６（ｔ）｜
Ａ７←Ａ７＋｜ｅ７（ｔ）｜
Ａ８←Ａ８＋｜ｅ８（ｔ）｜
Ａ９←Ａ９＋｜ｅ９（ｔ）｜
Ａ１０←Ａ１０＋｜ｅ１０（ｔ）｜
【００４７】
続いて、カウンタＣ１が所定回数を超えたかどうかの判定を行う（ステップＳ１４）。本実施形態では、この所定回数を１００回として設定している。すなわち、カウンタＣ１が１００を超えたかどうかの判定を行う。
【００４８】
この結果、カウンタが１００を超えていたら、累積誤差を半分にする（ステップＳ１５）。具体的には、以下の〔数式１４〕に示すように、累積誤差となる変数Ａ０〜Ａ１０を２で除算する。同時に、カウンタＣ１を０にリセットする。すなわち、ここでのＡ０〜Ａ１０は純粋な意味での累積誤差ではなく、累積誤差の移動平均となっている。本実施形態では、直前の最大１００サンプルまでは累積されるが、それ以前のものは半分になるように処理する。これにより、時間的に離れたサンプルの影響が小さくなるようにしている。
【００４９】
〔数式１４〕
Ａ０←（Ａ０）／２
Ａ１←（Ａ１）／２
Ａ２←（Ａ２）／２
Ａ３←（Ａ３）／２
Ａ４←（Ａ４）／２
Ａ５←（Ａ５）／２
Ａ６←（Ａ６）／２
Ａ７←（Ａ７）／２
Ａ８←（Ａ８）／２
Ａ９←（Ａ９）／２
Ａ１０←（Ａ１０）／２
【００５０】
続いて、カウンタＣ２が所定回数を超えたかどうかの判定を行う（ステップＳ１６）。本実施形態では、この所定回数を３２７６８回として設定している。すなわち、カウンタＣ２が３２７６８を超えたかどうかの判定を行う。
【００５１】
この結果、カウンタＣ２が３２７６８を超えていたら、係数ｂ１１〜ｂ５５の再計算を行う（ステップＳ１７）。具体的には、上記〔数式１２〕を用いて、係数ｂ１１〜ｂ５５を計算し直すことになる。同時に、カウンタＣ２を０にリセットする。
【００５２】
上記ステップＳ１１〜ステップＳ１７の処理をブロック内のサンプル列の全サンプルに渡って実行することにより、全サンプルの値が元の振幅値ｘ（ｔ）から対象誤差ｅ（ｔ）に置き換えられることになる。本実施形態では、特に、複数の予測式の係数を動的に変化させることにより、より精度の高い予測誤差を算出することが可能になる。
【００５３】
続いて、極性処理手段８０が、ブロック内の各サンプルの正負極性処理を行う。上記予測誤差変換手段７０により各サンプルの値は、振幅値から予測誤差に置き換えられたが、各サンプルのビット形式は、当初のままである。通常、コンピュータ等の計算機で演算される場合は、各データは３２ビット単位で処理され、２の補数表現を用いて表現されている。これを、正負の符号付き絶対値表現に変換し、なおかつ、その絶対値部分を上位に１ビット移動させ、正負の符号ビットをＬＳＢ（最下位ビット）に移動させる。極性処理手段８０によるビット構成の変換の様子を模式的に示すと図９のようになる。図９（ａ）は処理前のビット構成であり、図９（ｂ）は処理後のビット構成である。このように正負の符号ビットをＬＳＢに移動させるのは、後の可変長符号化手段９０の処理で、各サンプルのビット長を検出し易くするためである。
【００５４】
次に、可変長符号化手段９０が、各サンプルを可変長に変換する処理を行っていく。本実施形態における可変長符号化は、一般にゴロム符号化と呼ばれる方式を採用している。具体的には、１サンプルを構成するビット成分を上位ビット成分と下位ビット成分に分け、下位ビット成分は変更を加えずそのままとし、上位ビット成分は、上位ビットだけを十進数変換した数値分のビット「０」を並べ、最後にセパレータビット「１」を加えた配列とする。例えば、８ビットのビット成分「００１０１０００」を考えてみる。このとき、下位ビット成分を４ビットとすると、下位ビット成分は「１０００」となる。上位ビットは「００１０」であるため、これを十進数変換した「２」個分の「０」を配列して最後に「１」を加えた「００１」に変換される。この結果、８ビットのビット列「００１０１０００」は、７ビットのビット列「００１１０００」に変換されることになる。本実施形態では、変換の前後でビット成分を不変とする下位ビット成分のビット長を各サンプルで可変とするようにしている。
【００５５】
以下、可変長符号化手段９０が行う処理を具体的に説明していく。図１０は可変長符号化の概要を示すフローチャートである。まず、過去のサンプルのビット長の移動平均である平均ビット長Ｂｆを算出する（ステップＳ２１）。平均ビット長Ｂｆは、過去のビット長の累積値である累積ビット長ＲＢを、過去のサンプル数を基にしたカウンタＣ３で除算することにより求められる。すなわち、Ｂｆ＝ＲＢ／Ｃ３で算出される。累積ビット長ＲＢは、初期状態では０であるので、ｔ＝１のサンプルを処理する場合には、ｔ＝１のサンプルのビット長Ｂｄ（ｔ）を初期値として設定しておく。また、初期のカウンタＣ３＝１と設定する。
【００５６】
続いて、時刻ｔにおけるサンプルのビット長Ｂｄ（ｔ）を算出する（ステップＳ２２）。ｔ＝２以降のサンプルについては、平均ビット長Ｂｆの算出後、サンプルのビット長Ｂｄ（ｔ）を算出する。このビット長Ｂｄ（ｔ）は、上記極性処理手段８０によりビット構成の変換を行ったことにより算出し易くなっている。図９（ｂ）に示したようなビット構成に変換したことにより、各サンプルのビット構成において先頭にビット「１」が出現したところからがビット長となる。次に、変更部のビット長Ｂｖを算出する（ステップＳ２３）。これは、上記サンプルのビット長Ｂｄ（ｔ）から平均ビット長Ｂｆを減じることにより算出される。続いて、データの符号出力を行う（ステップＳ２４）。具体的には、上位Ｂｖビットを十進数変換した数値分だけ「０」を出力した後、セパレータビット「１」を出力し、下位Ｂｆビットを不変部として出力する。符号出力は、ハードディスク、ＣＤ−Ｒ等の外部記憶装置への記録として行われることになる。次に、累積ビット長ＲＢにビット長Ｂｄ（ｔ）を加算する（ステップＳ２５）。同時に、各サンプルの処理を行う度に、カウンタＣ３を１つずつ加算していく処理を行う。続いて、カウンタＣ３が所定の数を超えたかどうかを判定する（ステップＳ２６）。所定の数としては、ここでも１００程度を設定している。そのため、カウンタ４が１００を超えたかどうかを判断することになる。この結果、カウンタが１００を超えていたら、累積ビット長ＲＢを半分にする（ステップＳ２７）。具体的には、累積ビット長となる変数ＲＢを２で除算する。同時に、カウンタＣ３を１／２にする。上記のようにして、各サンプルについて可変ビット長での符号化が行われて行く。
【００５７】
続いて、符号出力手段１００が、可変長符号化手段９０から出力された各ブロックの可変長符号化データを、分割されたブロック形態を維持しながら、上記各手段により得られた各データと共に、１つの符号化ファイルに順次収録していく。
【００５８】
以上のようにして得られた符号化データは、コンピュータに接続されたハードディスク等の記憶装置等に随時記憶され、その後、必要な記憶媒体に対応するフォーマットで記憶される。ここで、最終的に得られた符号化データの全体構成の概略を図１１に示す。図１１（ａ）は全体の概略構成、図１１（ｂ）はブロック単位の符号化データの概略構成、図１１（ｃ）は各ブロックにおけるチャンネル単位の符号化データの概略構成となっている。図１１（ａ）に示すように、全体の符号化データとしては、高速モード識別データ、ブロック数、ブロック長、各ブロック単位の符号化データが記録されている。高速モード識別データとは、高速モードか通常モードかを示す１ビットのデータであり、高速モードである場合は、ブロック分割を行わずに、単一サンプルごとにワークメモリを用いずに符号化処理を行う。本発明による処理は、通常モードである場合に行われる。ブロック数は、符号化データの全ブロック数を示す２バイトのデータである。ブロック長は、１ブロック内のサンプル数を示す４バイトのデータである。符号化データ１〜ｎは各ブロックの符号化データである。
【００５９】
図１１（ｂ）に示すように、各ブロックの符号化データとしては、符号化条件パラメータ、各チャンネルデータが記録されている。符号化条件パラメータは、各ブロックごとの符号化条件パラメータを記録した最大７３ビットのデータである。符号化条件パラメータとしては、下位固定ビット削除手段２０による下位固定ビットの削除・分離を行ったか、行った場合は削除・分離のどちらを行ったか、サンプル列再配置手段４０によるサンプル列の再配置を行ったかどうか、信号平坦部処理手段５０による処理を行ったか、相関フレーム検出手段６０による処理を行ったか、予測誤差変換手段７０における線形係数の更新間隔はどの程度か等がある。各チャンネルデータは、各チャンネルごとの符号化データであり、本実施形態のように、ステレオ音響信号を符号化した場合は、図１１（ｂ）に示すように、２チャンネル分記録される。
【００６０】
図１１（ｃ）に示すように、各チャンネルの符号化データとしては、下位固定ビットデータ、サンプル再配置状態、信号平坦部データ、フレーム相関データ、予測誤差可変長符号化データが記録されている。下位固定ビットデータは、下位固定ビット削除手段２０により削除せずに分離した場合に記録されるものである。サンプル再配置状態は、図２（ｂ）〜図２（ｅ）に示した４つの状態のうちいずれの状態であるかを示す２ビットのデータである。信号平坦部データは、信号平坦部処理手段５０により得られた図３（ｃ）に示すようなデータである。フレーム相関データは、相関フレーム検出手段６０により得られた図５（ｅ）に示すようなデータである。予測誤差可変長符号化データは、可変長符号化手段９０により得られた可変長の符号化データである。
【００６１】
【発明の効果】
以上、説明したように本発明によれば、時系列のサンプル列で構成される時系列信号に対して、前記サンプル列を再現できるように情報量を圧縮する符号化装置として、前記サンプル列を所定のサンプル数単位のブロックに分割し、分割した各ブロックを順次ワークメモリに読み込むブロック分割手段と、前記ワークメモリに読み込まれたブロックを構成するサンプル列に対して、線形予測誤差を算出し、前記サンプル列の各サンプルの値を予測誤差値に変換する予測誤差変換手段と、前記予測誤差値に変換されたサンプル列を可変長で符号化する可変長符号化手段を有する構成としたので、符号化条件パラメータを所定の区間ごとに変更可能であると共に、大容量のデータであっても符号化することが可能となるという効果を奏する。
【図面の簡単な説明】
【図１】本発明第１の実施形態に係る時系列信号の符号化装置を示す機能ブロック図である。
【図２】サンプル列再配置手段４０によるサンプルの再配置の様子を示す図である。
【図３】信号平坦部処理手段５０による処理の様子を示す図である。
【図４】相関フレーム検出手段６０による処理を示すフローチャートである。
【図５】相関フレーム検出手段６０の処理によるサンプル列の様子を示す図である。
【図６】相関フレーム検出手段６０の処理により比較されるサンプルの様子を示す図である。
【図７】予測誤差変換手段７０による処理を示すフローチャートである。
【図８】設定可能な線形係数の設定モードを示す図である。
【図９】極性処理手段６０によるビット構成の変換の様子を示す図である。
【図１０】可変長符号化手段９０による処理を示すフローチャートである。
【図１１】符号化の結果得られる符号化データの全体構成を示す図である。
【符号の説明】
１０・・・ブロック分割手段
２０・・・下位固定ビット削除手段
３０・・・チャンネル間演算手段
４０・・・サンプル列再配置手段
５０・・・信号平坦部処理手段
６０・・・相関フレーム検出手段
７０・・・予測誤差変換手段
８０・・・極性処理手段
９０・・・可変長符号化手段
１００・・・符号出力手段
【図１】
2004343299.tif 000003
【図２】
2004343299.tif 000004
【図３】
2004343299.tif 000005
【図４】
2004343299.tif 000006
【図５】
2004343299.tif 000007
【図６】
2004343299.tif 000008
【図７】
2004343299.tif 000009
【図８】
2004343299.tif 000010
【図９】
2004343299.tif 000011
【図１０】
2004343299.tif 000012
【図１１】
2004343299.tif 000013