(57)【要約】【課題】  少ないワークメモリを用いて、大量の音楽データを符号化することができるとともに、符号化処理に負荷をかけずに信号平坦部圧縮を行うことが可能な時系列信号の符号化装置を提供する。【解決手段】  サンプルを読み込んだ(S10)後、符号化モードを判定し(S20)、ランレングスモードであればS100に進み、線形予測符号化モードであればS30に進む。読み込んだサンプルが信号平坦部である場合は、S10,S20,S100,S110,S80のランレングスモードのループで処理し、読み込んだサンプルが信号平坦部でない場合は、S10〜S80の線形予測符号化モードのループで処理する。【選択図】  図２
2005151223.tif 000002
【特許請求の範囲】
【請求項１】
時系列のサンプル列で構成される時系列信号に対して、前記サンプル列を再現できるように情報量を圧縮する符号化装置であって、
前記サンプル列よりサンプルを順次読み込むサンプル入力手段と、
前記サンプルを時系列に所定の個数だけ格納するバッファメモリである直前バッファと、
前記直前バッファに格納されているサンプルを用いて、ランレングス符号化を行うか、線形予測符号化を行うかの符号化モードを判定する符号化モード判定手段と、
前記符号化モード判定手段により符号化モードとしてランレングス符号化が選択された場合、前記サンプル入力手段で取り込まれたサンプルと前記直前バッファに格納されている最新のサンプルとを比較することによりランレングスデータを算出するランレングス算出手段と、
前記符号化モード判定手段により符号化モードとして線形予測符号化が選択された場合、前記直前バッファに格納されている複数のサンプルを用いて線形予測誤差を算出する予測誤差算出手段と、
前記サンプル入力手段で取り込まれたサンプルを前記直前バッファに書き込み、最も過去に位置するサンプルを前記直前バッファより削除する直前バッファ更新手段と、
前記ランレングスデータおよび前記線形予測誤差に対して可変長で符号化を行う可変長符号化手段と、
前記符号化されたデータを出力する符号出力手段と、
前記各手段を制御して前記サンプル列のサンプルを符号出力する符号化処理制御手段と、
を有することを特徴とする時系列信号の符号化装置。
【請求項２】
請求項１において、
前記時系列のサンプル列が複数のチャンネルで構成されている場合、前記サンプル入力手段は、各チャンネルについて１つずつサンプルの入力を行うものであり、前記直前バッファ、前記符号化モード判定手段、前記ランレングス算出手段、前記線形予測誤差算出手段、前記直前バッファ更新手段、前記第１の可変長符号化手段、前記第２の可変長符号化手段は前記チャンネル数と同数のサンプル単位で処理を行うものであることを特徴とする時系列信号の符号化装置。
【請求項３】
請求項２において、
前記線形予測誤差算出手段の前段にチャンネル間演算手段を設け、前記チャンネル間のサンプル同士で所定の演算を施したデータを前記線形予測誤差算出手段に渡すようにしていることを特徴とする時系列信号の符号化装置。
【請求項４】
請求項１において、
前記符号化モード判定手段は、符号化モードがランレングス符号化に設定されている場合は何もせず、線形予測符号化に設定されている場合に、前記直前バッファに格納されているサンプルのうち最新の２サンプルが同一の値である場合、符号化モードをランレングス符号化に切り換え、前記ランレングスデータを０に初期化するものであることを特徴とする時系列信号の符号化装置。
【請求項５】
請求項１において、
前記ランレングス算出手段は、前記サンプル入力手段で取り込まれたサンプルと、前記直前バッファに格納されている最新のサンプルが同一の場合に、ランレングスデータに１を増加させるようにし、そうでない場合は、ランレングスデータを前記第１の可変長符号化手段に渡すとともに、前記サンプル入力手段で取り込まれたサンプルと、前記直前バッファに格納されている最新のサンプルとの差分値を予測誤差値として前記第２の可変長符号化手段に渡し、符号化モードを線形予測符号化に切り換えるものであることを特徴とする時系列信号の符号化装置。
【請求項６】
請求項１において、
前記線形予測誤差算出手段の後段に、予測誤差補正手段を設け、当該前予測誤差補正手段は、記予測誤差データに対して１以上の値である係数で除算し、前記予測誤差データの絶対値を小さくする補正を行うともに、前記サンプル入力手段で取り込まれたサンプルに対して、前記補正された予測誤差データに前記係数を乗算した値に、前記予測誤差データとの差分を加算するする補正を行い、前記直前バッファに対して、前記補正されたサンプルを格納するものであることを特徴とする時系列信号の符号化装置。
【請求項７】
請求項１において、
前記符号化モード判定手段は、符号化モードがランレングス符号化に設定されている場合は何もせず、線形予測符号化に設定されている場合に、前記直前バッファに格納されているサンプルのうち最新の２サンプルの差が所定値内である場合、符号化モードをランレングス符号化に切り換え、前記ランレングスデータを０に初期化するものであることを特徴とする時系列信号の符号化装置。
【請求項８】
請求項１において、
前記ランレングス算出手段は、前記サンプル入力手段で取り込まれたサンプルと、前記直前バッファに格納されている最新のサンプルの差が所定値内である場合に、ランレングスデータに１を増加させるとともに、前記サンプル入力手段で取り込まれたサンプルに対して、直前バッファに格納されている最新のサンプルと同一になるように補正して、当該補正されたサンプルを前記直前バッファに格納し、そうでない場合は、ランレングスデータを前記可変長符号化手段に渡すとともに、前記サンプル入力手段で取り込まれたサンプルと、前記直前バッファに格納されている最新のサンプルとの差分値を予測誤差値として前記可変長符号化手段に渡し、符号化モードを線形予測符号化に切り換えるものであることを特徴とする時系列信号の符号化装置。
【請求項９】
請求項１、請求項２、請求項５、または請求項８において、
前記可変長符号化手段は、ランレングスデータと予測誤差値に対して互いに異なる可変長符号化手段を備え、ランレングスデータに対する第１の可変長符号化手段は、メルコード方式で可変長符号化を行うものであり、予測誤差値に対する前記第２の可変長符号化手段は、ゴロムライス方式で可変長符号化を行うものであることを特徴とする時系列信号の符号化装置。
【請求項１０】
与えられた時系列信号に対して、請求項１から請求項９のいずれかに記載の符号化装置により出力された符号データを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音楽制作、音響データの素材保管、ロケ素材の中継など音楽制作分野、特にＣＤよりも品質の高い高精細オーディオ制作を行う分野、ＣＤ、ＤＶＤ等のデジタル記録媒体を用いたオーディオ記録再生分野、遠隔医療における生体信号の伝送等、データの改変が嫌われる分野等において好適なデータの圧縮符号化技術に関する。
【背景技術】
【０００２】
従来より、音響信号の圧縮には様々な手法が用いられている。音響信号を圧縮して符号化する手法として、ＭＰ３（ＭＰＥＧ−１／Ｌａｙｅｒ３）、ＡＡＣ（ＭＰＥＧ−２／Ｌａｙｅｒ３）などが実用化されている。このような圧縮符号化方式により、音響信号を小さいデータとして扱うことが可能となり、データの記録・伝送の効率化に貢献している。
【０００３】
上述のようなＭＰ３、ＡＡＣ等はいずれもロッシー符号化方式といわれるものであり、効率的な圧縮が可能であるが、復号化にあたって、少なからず品質の劣化を伴い、原信号を完全に再現することはできない。
【０００４】
このような問題を解決するため、ロスレス型（可逆型）圧縮を実現する手法（例えば、特許文献１参照）が提案されている。
【特許文献１】特表２０００−８２１１９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１に記載の発明では、７０％程度の圧縮率しか得られず、また、処理のために大量のワークメモリを必要とするという問題がある。
【０００６】
上記のような点に鑑み、本発明は、少ないワークメモリを用いて、大量の音楽データを符号化することができるとともに、符号化処理に負荷をかけずに信号平坦部圧縮を行うことが可能な時系列信号の符号化装置を提供することを課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明の符号化装置は、時系列のサンプル列で構成される時系列信号に対して、サンプル列よりサンプルを順次読み込むサンプル入力手段と、サンプルを時系列に所定の個数だけ格納するバッファメモリである直前バッファと、直前バッファに格納されているサンプルを用いて、ランレングス符号化を行うか、線形予測符号化を行うかの符号化モードを判定する符号化モード判定手段と、符号化モード判定手段により符号化モードとしてランレングス符号化が選択された場合、サンプル入力手段で取り込まれたサンプルと直前バッファに格納されている最新のサンプルとを比較することによりランレングスデータを算出するランレングス算出手段と、符号化モード判定手段により符号化モードとして線形予測符号化が選択された場合、直前バッファに格納されている複数のサンプルを用いて線形予測誤差を算出する予測誤差算出手段と、サンプル入力手段で取り込まれたサンプルを直前バッファに書き込み、最も過去に位置するサンプルを直前バッファより削除する直前バッファ更新手段と、前記ランレングスデータにおよび前記線形予測誤差に対して可変長で符号化を行う可変長符号化手段と、符号化されたデータを出力する符号出力手段と、各手段を制御して前記サンプル列のサンプルを符号出力する符号化処理制御手段を有する構成としたことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、時系列信号の各サンプルを１サンプルずつ読み込んで順次符号化を行う場合に、基本的には線形予測符号化モードとし、状況に応じて、ランレングスモードとして符号化を行うようにしたので、時系列信号を、ワークメモリの制限にとらわれず、リアルタイムで符号化を行うことが可能となる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施形態について図面を参照して詳細に説明する。
（１．時系列信号の構成）
まず、本発明で符号化対象とする時系列信号について説明する。ここでは、時系列信号として２つのチャンネルを有するステレオ音響信号の場合を例にとって説明する。まず、時系列信号であるアナログの音響信号をデジタル化する。これは、従来の一般的なＰＣＭの手法を用い、所定のサンプリング周波数でこのアナログ音響信号をサンプリングし、振幅を所定の量子化ビット数を用いてデジタルデータに変換する処理を行えば良い。本実施形態では、サンプリング周波数４４．１ＫＨｚ、量子化ビット数１６ビットで正負の符号を記録した場合を想定して以降説明する。サンプリング周波数４４．１ＫＨｚでサンプリングすると、１秒あたり４４１００個のサンプルにより構成されるサンプル列ができることになる。図１に、先頭からの所定数のサンプルを模式的に示す。図１において横軸は時刻ｔ、縦軸は振幅ｘ（ｔ）を示す。図１において、ｔ−４〜ｔ＋５の数字は各サンプルのサンプル番号を示しており、上述のように４４．１ＫＨｚでサンプリングすると、この１０サンプルは、１／４４１０秒に相当する。なお、ここでは、サンプル番号と時刻を同義で用いている。これは、サンプル番号が時刻の変化に伴って昇順に付与されており、時刻にサンプリング周波数を乗じた値がサンプル番号となるためである。また、図１において各サンプル番号から延びる線分は振幅値を示しているが、この振幅値は、上述のように量子化ビット数１６ビットで正負の符号を記録した場合、−３２７６８〜３２７６７の値をとることになる。
【００１０】
（２．１．符号化装置の構成）
本発明に係る符号化装置は、符号化処理を行う専用のプログラムを、コンピュータに搭載することにより実現される。この専用プログラムを実行することにより、コンピュータに所定の処理を行わせ、コンピュータを符号化装置として機能させるのである。
【００１１】
（２．２．処理概要）
続いて、本発明に係る符号化装置の処理動作について説明していく。図２は、本発明に係る符号化方法の処理概要を示すフローチャートである。まず、音響信号を先頭から各チャンネルにつき１サンプルずつ読み込む（ステップＳ１０）。本実施形態のように、２チャンネルで構成されるステレオ音響信号の場合には、各チャンネル交互に１サンプルずつ読み込まれることになる。読み込まれたサンプルは、直前の数サンプルを一時的に保存しておくためのバッファメモリである直前バッファに格納される。直前バッファには、各チャンネルごとに５サンプルまで記録するようになっているので、サンプル番号０〜４までは、読み込んだサンプルを順番に記録していく。
【００１２】
直前バッファに５サンプルが保存されたら、他の処理が開始される。まず、本装置の符号化モードがどのような状態であるかどうかを判断する（ステップＳ２０）。具体的には、符号化モードが線形予測符号化モードであるか、ランレングスモードであるかを判断する。本装置には、符号化モードとして線形予測符号化モードとランレングスモードの２つが用意されているが、初期状態では、線形予測符号化モードに設定されている。このため、最初は、ステップＳ３０に進むことになる。線形予測符号化モードの場合は、直前バッファ内に格納された５サンプルのうち最新の２サンプル（すなわち初期状態では先頭から４サンプル目と５サンプル目）の値が同一であるかどうかを判断する。同一である場合には、ランレングスモードに移行する。一方、同一でない場合には、線形予測符号化モードの処理を行う。
【００１３】
（２．２．１．線形予測符号化モード）
線形予測符号化モードでは、チャンネル間相関処理（ステップＳ４０）、線形予測誤差算出処理（ステップＳ５０）、極性処理（ステップＳ６０）、可変長符号化処理（ステップＳ７０）が行われる。可変長符号化されて得られた可変長ビット列は、記録のために順次出力される。その後、ステップＳ１０で読み込んだ現サンプルを直前バッファに保存する（ステップＳ８０）。直前バッファに記録されるサンプルは、本実施形態では５サンプルと固定しているので、現サンプルを格納する代わりに、最も過去のサンプルを削除する。例えば、サンプル０〜４が記録されていた場合、現サンプル５を格納してサンプル０を削除する。この結果、直前バッファには、サンプル１〜５が格納された状態となる。現サンプルを直前バッファに保存したら、ステップＳ１０に戻って次のサンプルを読み込む。なお、チャンネル間相関処理、線形予測誤差算出処理、極性処理、可変長符号化処理の詳細については、後述する。符号化モードが線形予測符号化モードである間は、読み込まれたサンプルは、ステップＳ１０〜ステップＳ８０のループにおいて処理されることになる。
【００１４】
（２．２．２．線形予測符号化モードからランレングスモードへの移行）
線形予測符号化モード（ステップＳ１０〜ステップＳ８０のループ）の状態で、ステップＳ３０において、直前バッファ内で最新の２サンプルの値が一致した場合には、符号化モードが線形予測符号化モードから、ランレングスモードに切り換えられる（ステップＳ９０）。これにより、符号化処理が線形予測符号化モードからランレングスモードに移行して行われることになる。
【００１５】
（２．２．３．ランレングスモード）
ランレングスモードでは、まず、ランが継続しているかどうかを判定する（ステップＳ１００）。具体的には、読み込んだ後、まだ直前バッファに格納されていない現サンプルの値と、直前バッファに格納された５サンプルのうち最新のサンプルの値が同一であるかどうかを比較する。同一である場合は、ランが継続していると判断して、ランレングスをカウントアップする（ステップＳ１１０）。具体的には、現在のランレングスを「１」だけ増加することになる。続いて、読み込んだ現サンプルを直前バッファに保存する（ステップＳ８０）。そして、ステップＳ１０に戻ってサンプル入力手段が次のサンプルを読み込むことになる。この状態では、符号化モードはランレングスモードとなっているので、ステップＳ２０においては、ランレングスモードであると判定されてステップＳ１００に進むことになる。符号化モードがランレングスモードである間は、読み込まれたサンプルは、ステップＳ１０、Ｓ２０、Ｓ１００、Ｓ１１０、Ｓ８０のループにおいて処理されることになる。
【００１６】
（２．２．４．ランレングスモードから線形予測符号化モードへの移行）
ランレングスモード（ステップＳ１０、Ｓ２０、Ｓ１００、Ｓ１１０、Ｓ８０のループ）の状態で、ステップＳ１００において、直前バッファに格納されていない現サンプルと、直前バッファに格納された５サンプルのうち最新のサンプルの値が同一でない場合には、ランが途切れたものと判断して、ここまでのランレングス情報を可変長符号化する（ステップＳ１２０）。ここでの可変長符号化の手法としては、種々のものを採用できるが、公知のメルコード（ＭＥＬＣＯＤＥ）方式を用いるのが望ましい。続いて、符号化モードをランレングスモードから、線形予測符号化モードに切り換える（ステップＳ１３０）。これにより、符号化処理がランレングスモードから線形予測符号化モードに移行して行われることになる。続いて、直前バッファに格納されていない現サンプルと、直前バッファに格納された５サンプルのうち最新のサンプルの値の差分を算出する（ステップＳ１４０）。本来はランが連続する信号平坦部以外のサンプルについては、過去の複数サンプルを利用して線形予測誤差を算出するのが望ましいが、この時点では、過去の複数サンプルが信号平坦部であるため、効果のある予測誤差の算出が行えない。そのため、線形予測誤差算出の代わりの簡易的な手法として差分処理を行うのである。この後は、ステップＳ６０から線形予測符号化モードのループに入ることになる。
【００１７】
通常の音響信号であれば、連続するサンプルの値が全く同じであることは比較的少ないので、線形予測符号化モードで処理が行われる場合が最も多いが、同じ値のサンプルが連続する信号平坦部については、ランレングスモードで処理が行われることになる。音響信号のサンプルの状態が、信号平坦部以外から信号平坦部になった場合には、線形予測符号化モードからランレングスモードに移行し、音響信号のサンプルの状態が、信号平坦部から信号平坦部以外になった場合には、ランレングスモードから線形予測符号化モードに移行することになる。このように、信号平坦部では、ランレングスモードに移行して符号化が行われるため、特に、信号平坦部を有する時系列信号の符号化を効率的に行うことが可能となる。
【００１８】
（２．２．５．チャンネル間相関処理）
続いて、上記ステップＳ４０からステップＳ７０における各処理の詳細について説明する。ステップＳ４０においては、各チャンネルのサンプルに対して、チャンネル間の差分演算を行う。このチャンネル間差分演算の処理概要を図３のフローチャートに示す。まず、現サンプルを読み込む（ステップＳ４１）。ここでの、読み込みとは、ステップＳ４０の処理を行うチャンネル間演算処理のためのモジュールがサンプルを読み込むことを意味する。読み込んだサンプルがＬチャンネルのものであれば、サンプルの値を基準チャンネルメモリに格納すると共に、ステップＳ５０の線形予測誤差算出処理に出力する（ステップＳ４２）。一方、読み込んだサンプルがＲチャンネルのものであれば、ステップＳ４３以降の処理を行う。なお、サンプルは、各チャンネルのものが交互に読み込まれるので、そのチャンネルがＬチャンネルのものかＲチャンネルのものかの判断を行う必要はない。例えば、サンプル番号ｔ＝１のＬチャンネルのサンプルを読み込んだら、次はサンプル番号ｔ＝１のＲチャンネルのサンプル、その次は、サンプル番号ｔ＝２のＬチャンネルのサンプルというように順番が決まっているので、交互にステップＳ４２の処理とステップＳ４３以降の処理とを切替えるようにすれば良い。
【００１９】
Ｒチャンネルのサンプルの場合は、変数ＡｏとＡｄの比較を行う（ステップＳ４３）。ここで、ＡｏはＲチャンネルのサンプル値の絶対値の累積であり、ＡｄはＲチャンネルとＬチャンネルのサンプル値の差分の絶対値の累積である。変数Ａｏ、Ａｄ共に初期値は０である。ステップＳ４３において、Ａｄ≧Ａｏであれば、Ｒチャンネルのサンプルをそのままの値で、ステップＳ５０の線形予測誤差算出処理に出力する（ステップＳ４４）。さらに、累積値Ａｏを以下の〔数式１〕の第１式に示すように更新する。具体的には、Ｒチャンネルのサンプル値ｅRの絶対値を累積値Ａｏに加えることになる。
【００２０】
ステップＳ４３において、Ａｄ＜Ａｏであれば、基準チャンネルメモリに格納されているＬチャンネルのサンプルとの差分を算出し、差分値をステップＳ５０の線形予測誤差算出処理に出力する（ステップＳ４５）。さらに、累積値Ａｄを以下の〔数式１〕の第２式に示すように更新する。具体的には、ＲチャンネルとＬチャンネルのサンプルの差分値ｅR-ｅLの絶対値を累積値Ａｄに加えることになる。
【００２１】
〔数式１〕
Ａｏ←Ａｏ＋｜ｅR｜
Ａｄ←Ａｄ＋｜ｅR-ｅL｜
【００２２】
続いて、Ｌ、Ｒの１対のサンプルを処理したことを示すカウンタＣを１つ加算する（ステップＳ４６）。なお、上述のように、カウンタ変数Ｃはチャンネル間演算処理モジュール内で用いられるローカル変数である。
【００２３】
続いて、カウンタが所定回数を超えたかどうかの判定を行う（ステップＳ４７）。本実施形態では、この所定回数を１００回として設定している。すなわち、カウンタＣが１００を超えたかどうかの判定を行う。
【００２４】
この結果、カウンタが１００を超えていたら、累積値Ａｏ、Ａｄを半分にする（ステップＳ４８）。具体的には、以下の〔数式２〕に示すように、累積値となる変数Ａｏ、Ａｄを２で除算する。同時に、カウンタＣも半分にリセットする。すなわち、ここでのＡｏ、Ａｄは純粋な意味での累積誤差ではなく、累積誤差の移動平均となっている。本実施形態では、直前の最大１００サンプルまでは累積されるが、それ以前のものは半分になるように処理する。これにより、時間的に離れたサンプルの影響が小さくなるようにしている。
【００２５】
〔数式２〕
Ａｏ←Ａｏ／２
Ａｄ←Ａｄ／２
Ｃ←Ｃ／２
【００２６】
上記ステップＳ４１〜ステップＳ４８の処理を時系列信号中の全時刻全サンプルに渡って実行することにより、Ｒチャンネルの全サンプルの値が、Ｌチャンネルとの差分値に置き換えられることになる。ただし、上述の処理から明らかなように、累積値Ａｏ、Ａｄの大小関係によっては、Ｒチャンネルのサンプル値がそのまま記録されるサンプルも存在する。なお、ステップＳ４０のチャンネル間演算処理では、Ｌチャンネルのサンプルは、全てそのままの値で出力されることになる。
【００２７】
（２．２．６．線形予測誤差算出処理）
続いて、図２に示すステップＳ５０において、チャンネル間演算後のサンプルの値を予測誤差値に変換する。本実施形態では、適応型の線形予測符号化方式を用いる。本実施形態においては、あるサンプルの予測誤差値を求めるために同一チャンネルの最大４サンプルを必要とする。ステップＳ５０の予測誤差算出処理の概要を図４のフローチャートに示す。予測誤差算出処理は、各チャンネル独立で行われるので、図４においては１つのチャンネルのサンプルに対して処理を行う場合について説明する。複数のチャンネルについて処理する場合も、各チャンネルについて同様に行われる。まず、あらかじめ準備された複数の予測計算式を用いて、各予測計算式に対応した線形予測誤差を算出する（ステップＳ５１）。具体的には、サンプル番号ｔの予測誤差を算出する予測計算式として、以下の〔数式３〕〜〔数式６〕を用意している。
【００２８】
〔数式３〕
ｅ１（ｔ）＝ｘ（ｔ）−ｘ（ｔ−１）−ｅ１（ｔ−１）／２
【００２９】
〔数式４〕
ｅ２（ｔ）＝ｘ（ｔ）−２×ｘ（ｔ−１）＋ｘ（ｔ−２）−ｅ２（ｔ−１）／２
【００３０】
〔数式５〕
ｅ３（ｔ）＝ｘ（ｔ）−３×ｘ（ｔ−１）＋３×ｘ（ｔ−２）−ｘ（ｔ−３）−ｅ３（ｔ−１）／２
【００３１】
〔数式６〕
ｅ４（ｔ）＝ｘ（ｔ）−４×ｘ（ｔ−１）＋６×ｘ（ｔ−２）−４×ｘ（ｔ−３）＋ｘ（ｔ−４）−ｅ４（ｔ−１）／２
【００３２】
上記〔数式３〕〜〔数式６〕において、ｅ１（ｔ）〜ｅ４（ｔ）は各予測計算式による時刻ｔのサンプルにおける予測誤差であり、ｘ（ｔ）〜ｘ（ｔ−４）は時刻ｔ〜ｔ−４における振幅値である。
【００３３】
上記〔数式４〕における「２×ｘ（ｔ−１）−ｘ（ｔ−２）」、上記〔数式５〕における「３×ｘ（ｔ−１）−３×ｘ（ｔ−２）＋ｘ（ｔ−３）」、上記〔数式６〕における「４×ｘ（ｔ−１）−６×ｘ（ｔ−２）＋４×ｘ（ｔ−３）−ｘ（ｔ−４）」は過去の２〜４個のサンプルに基づく線形予測成分である。この線形予測成分、および、直前のサンプルにおいて算出された予測誤差「ｅ１（ｔ−１）／２」〜「ｅ４（ｔ−１）／２」（誤差フィードバック成分）を用いて時刻ｔにおける予測誤差ｅ１（ｔ）〜ｅ４（ｔ）を算出する。
【００３４】
続いて、上記各予測計算式別の予測誤差値の絶対値の累積である累積誤差が最小となる線形予測誤差をそのサンプルの予測誤差として選出する（ステップＳ５２）。ここでは、累積誤差という考え方を用いている。具体的には、各予測計算式〔数式３〕〜〔数式６〕により算出された予測誤差の過去のサンプルについての累積値をＡ１〜Ａ４として設定する。そして、この累積誤差Ａ１〜Ａ４のうち、最小となるものに対応する予測誤差を選出する。例えば、Ａ１〜Ａ４のうち、Ａ２が最小であったとする。この場合、〔数式４〕で算出された予測誤差ｅ２（ｔ）を符号化対象とする予測誤差ｅ（ｔ）として選出することになる。選出された予測誤差ｅ（ｔ）はサンプルの元の値ｘ（ｔ）と置き換えられて以降処理が行われることになる。元のサンプルと区別するために予測誤差ｅ（ｔ）を記録したサンプルを誤差サンプルと呼ぶことにする。
【００３５】
続いて、累積誤差Ａ１〜Ａ４に各予測誤差ｅ１（ｔ）〜ｅ４（ｔ）の絶対値を加算する（ステップＳ５３）。具体的には、以下の〔数式７〕に示すように、累積誤差値となる変数Ａ１〜Ａ４を更新していく。同時に、各サンプルの処理を行う度に、カウンタＣを１つずつ加算していく処理を行う。なお、カウンタ変数Ｃは、線形予測誤差算出処理モジュール内で用いられるローカル変数であり、後述する他の処理においても用いられるが、これらは各々、各モジュール内で独立した変数である。
【００３６】
〔数式７〕
Ａ１←Ａ１＋｜ｅ１（ｔ）｜
Ａ２←Ａ２＋｜ｅ２（ｔ）｜
Ａ３←Ａ３＋｜ｅ３（ｔ）｜
Ａ４←Ａ４＋｜ｅ４（ｔ）｜
Ｃ←Ｃ＋１
【００３７】
続いて、カウンタが所定回数を超えたかどうかの判定を行う（ステップＳ５４）。本実施形態では、この所定回数を１００回として設定している。すなわち、カウンタＣが１００を超えたかどうかの判定を行う。
【００３８】
この結果、カウンタが１００を超えていたら、累積誤差を半分にする（ステップＳ５５）。具体的には、以下の〔数式８〕に示すように、累積誤差となる変数Ａ１〜Ａ４を２で除算する。同時に、カウンタを０にリセットする。すなわち、ここでの変数Ａ１〜Ａ４も上記〔数式１〕、〔数式２〕におけるＡｏ、Ａｄと同様、純粋な意味での累積値ではなく、累積値の移動平均となっている。本実施形態では、直前の最大１００サンプルまでは累積されるが、それ以前のものは半分になるように処理する。これにより、時間的に離れたサンプルの影響が小さくなるようにしている。
【００３９】
〔数式８〕
Ａ１←（Ａ１）／２
Ａ２←（Ａ２）／２
Ａ３←（Ａ３）／２
Ａ４←（Ａ４）／２
Ｃ←０
【００４０】
上記ステップＳ５１〜ステップＳ５５の処理を時系列信号中の全時刻全サンプルに渡って実行することにより、全サンプルの値が元の振幅値ｘ（ｔ）から対象誤差ｅ（ｔ）に置き換えられることになる。
【００４１】
（２．２．７．極性処理）
続いて、図２のステップＳ６０において、各誤差サンプルの正負極性処理を行う。上記ステップＳ４０およびステップＳ５０の処理により各サンプルの値は、Ｒチャンネルの値は、Ｌチャンネルとの差分に置き換えられるとともに、振幅値から予測誤差に置き換えられたが、各サンプルのビット形式は、当初のままである。通常、コンピュータ等の計算機で演算される場合は、各データは３２ビット単位で処理され、２の補数表現を用いて表現されている。これを、正負の符号付き絶対値表現に変換し、なおかつ、その絶対値部分を上位に１ビット移動させ、正負の符号ビットをＬＳＢ（最下位ビット）に移動させる。ステップＳ６０の極性処理によるビット構成の変換の様子を模式的に示すと図５のようになる。図５（ａ）は処理前のビット構成であり、図５（ｂ）は処理後のビット構成である。このように正負の符号ビットをＬＳＢに移動させるのは、後のステップＳ７０における可変長符号化処理で、各誤差サンプルのビット長を検出し易くするためである。
【００４２】
（２．２．８．サンプルの可変長符号化）
次に、図２のステップＳ７０において、各誤差サンプルを可変長に変換する処理を行っていく。本実施形態における可変長符号化は、一般にゴロムライスと呼ばれる公知の方式を採用している。具体的には、１サンプルを構成するビット成分を上位ビット成分と下位ビット成分に分け、下位ビット成分は変更を加えずそのままとし、上位ビット成分は、上位ビットだけを十進数変換した数値分のビット「０」を並べ、最後にセパレータビット「１」を加えた配列とする。例えば、８ビットのビット成分「００１０１０００」を考えてみる。このとき、下位ビット成分を４ビットとすると、下位ビット成分は「１０００」となる。上位ビットは「００１０」であるため、これを十進数変換した「２」個分の「０」を配列して最後に「１」を加えた「００１」に変換される。この結果、８ビットのビット列「００１０１０００」は、７ビットのビット列「００１１０００」に変換されることになる。本実施形態では、変換の前後でビット成分を不変とする下位ビット成分のビット長を各サンプルで可変とするようにしている。
【００４３】
以下、ステップＳ７０における可変長符号化処理を具体的に説明していく。図６は可変長符号化の概要を示すフローチャートである。まず、過去のサンプルのビット長の移動平均である平均ビット長Ｂｆを算出する（ステップＳ７１）。平均ビット長Ｂｆは、過去のビット長の累積値である累積ビット長ＲＢを、過去のサンプル数を基にしたカウンタＣで除算することにより求められる。すなわち、Ｂｆ＝ＲＢ／Ｃで算出される。累積ビット長ＲＢは、初期状態では０であるので、ｔ＝１のサンプルを処理する場合には、ｔ＝１のサンプルのビット長Ｂｄ（ｔ）を初期値として設定しておく。また、初期のカウンタＣ＝１と設定する。
【００４４】
続いて、時刻ｔにおけるサンプルのビット長Ｂｄ（ｔ）を算出する（ステップＳ７２）。ｔ＝２以降のサンプルについては、平均ビット長Ｂｆの算出後、サンプルのビット長Ｂｄ（ｔ）を算出する。このビット長Ｂｄ（ｔ）は、上記ステップＳ６０における極性処理によりビット構成の変換を行ったことにより算出し易くなっている。図５（ｂ）に示したようなビット構成に変換したことにより、各サンプルのビット構成において先頭にビット「１」が出現したところからがビット長となる。次に、変更部のビット長Ｂｖを算出する（ステップＳ７３）。これは、上記誤差サンプルのビット長Ｂｄ（ｔ）から平均ビット長Ｂｆを減じることにより算出される。続いて、データの符号出力を行う（ステップＳ７４）。具体的には、上位Ｂｖビットを十進数変換した数値分だけ「０」を出力した後、セパレータビット「１」を出力し、下位Ｂｆビットを不変部として出力する。符号出力は、ハードディスク、ＣＤ−Ｒ等の外部記憶装置への記録として行われることになる。次に、累積ビット長ＲＢにビット長Ｂｄ（ｔ）を加算する（ステップＳ７５）。同時に、各誤差サンプルの処理を行う度に、カウンタＣを１つずつ加算していく処理を行う。続いて、カウンタＣが所定の数を超えたかどうかを判定する（ステップＳ７６）。所定の数としては、ここでも１００程度を設定している。そのため、カウンタが１００を超えたかどうかを判断することになる。この結果、カウンタが１００を超えていたら、累積ビット長ＲＢを半分にする（ステップＳ７７）。具体的には、累積ビット長となる変数ＲＢを２で除算する。同時に、カウンタＣを１／２にする。
【００４５】
上記のようにして、各サンプルについて可変ビット長での符号化が行われて行く。符号化により得られた可変長誤差サンプルは、可変長ビット列として記録媒体等に出力・記録される。
【００４６】
（３．１．復号装置の構成）
本発明に係る復号装置は、復号処理を行う専用のプログラムを、コンピュータに搭載することにより実現される。この専用プログラムを実行することにより、コンピュータに所定の処理を行わせ、コンピュータを復号装置として機能させるのである。
【００４７】
（３．２．復号処理概要）
続いて、本発明に係る復号装置の処理概要について説明していく。図７は、本発明に係る復号装置の処理概要を示すフローチャートである。まず、符号データを所定のビット列単位で読み込む（ステップＳ２００）。この際、時系列信号が複数のチャンネルで構成される場合には、各チャンネルにつき所定のビット列ずつ読み込む。初期状態では、線形予測符号化モードとなっているため、読み込まれた可変長ビット列に対して、サンプルへの復号処理（ステップＳ２３０）、極性復元処理（ステップＳ２４０）、線形予測誤差復号処理（ステップＳ２５０）、チャンネル間復号処理（ステップＳ２６０）の各処理が行われて元のサンプルが復元され、サンプルが出力された（ステップＳ２７０）後、直前バッファに格納されていく（ステップＳ２８０）。直前バッファには、各チャンネルごとに５サンプルまで記録するようになっているので、サンプル番号０〜４までは、読み込んだサンプルを順番に記録していく。
【００４８】
直前バッファに５サンプルが保存されたら、他の処理が開始される。まず、本装置の符号化モードがどのような状態であるかどうかを判断する（ステップＳ２１０）。具体的には、復号モードが線形予測符号化モードであるか、ランレングスモードであるかを判断する。復号装置においても、復号モードとして線形予測符号化モードとランレングスモードの２つが用意されているが、上述のように、初期状態では、線形予測符号化モードに設定されている。このため、直前バッファ内に５サンプルが格納された状態となっても、最初はステップＳ５３に進むことになる。線形予測符号化モードの場合は、直前バッファ内に格納された５サンプルのうち最新の２サンプル（すなわち初期状態では先頭から４サンプル目と５サンプル目）の値が同一であるかどうかを判断する。同一でない場合には、ステップＳ５４に進んで引き続き線形予測符号化モードで処理を行うことになる。復号モードが線形予測符号化モードである間は、読み込まれた可変長ビット列は、ステップＳ２００〜ステップＳ２８０のループにおいて処理されることになる。
【００４９】
（３．２．１．線形予測符号化モードからランレングスモードへの移行）
線形予測符号化モード（ステップＳ２００〜ステップＳ２８０のループ）の状態で、ステップＳ２２０において、直前バッファ内で最新の２サンプルの値が一致した場合には、可変長ビット列からランレングスへの復号処理が行われる（ステップＳ２９０）。具体的には、メルコード方式で復号処理が行われる。続いて、復号モードが線形予測符号化モードから、ランレングスモードに切り換えられる（ステップＳ３００）。これにより、復号処理が線形予測符号化モードからランレングスモードに移行して行われることになる。
【００５０】
（３．２．２．ランレングスモード）
ランレングスモードでは、まず、ランレングスが０より大きいかどうかを判定する（ステップＳ３１０）。ランレングスが０より大きい場合は、ランレングスをカウントダウンする（ステップＳ３２０）。具体的には、現在のランレングスを「１」だけ減少させることになる。同時に、そのランレングスに与えられているサンプル値を有するサンプルを１サンプル出力する。このサンプルはオーディオサンプルとして出力され、原デジタル音響信号のサンプルが復元され、サンプルの出力が行われる（ステップＳ２７０）。出力されたサンプルは、アナログ変換された後、増幅してスピーカーから音声として出力される。また、そのサンプルを直前バッファへも保存する（ステップＳ２８０）。そして、ステップＳ２００に戻って可変長ビット列を読み込むことになる。この状態では、復号モードはランレングスモードとなっているので、ステップＳ２１０においては、ランレングスモードであると判定されてステップＳ３１０に進むことになる。復号モードがランレングスモードである間は、ランレングスが、ステップＳ２００、Ｓ２１０、Ｓ３１０、Ｓ３２０、Ｓ２７０、Ｓ２８０のループにおいて処理されることになる。
【００５１】
（３．２．３．ランレングスモードから線形予測符号化モードへの移行）
ランレングスモード（ステップＳ２００、Ｓ２１０、Ｓ３１０、Ｓ３２０、Ｓ２７０、Ｓ２８０のループ）の状態で、ステップＳ３１０において、ランレングスが０以下となって場合は、復号モードをランレングスモードから、線形予測符号化モードに切り換える（ステップＳ３３０）。これにより、復号処理がランレングスモードから線形予測符号化モードに移行して行われることになる。続いて、可変長ビット列をサンプルに復号する（ステップＳ３４０）。具体的には、ゴロム符号化に対する復号処理が行われる。続いて、極性復元処理が行われる（ステップＳ３５０）。さらに、直前サンプルとの加算処理が行われる（ステップＳ３６０）。加算処理後のサンプルを復号されたサンプルとして出力する（ステップＳ２７０）。また、そのサンプルを直前バッファへも保存する（ステップＳ２８０）。
【００５２】
（３．２．４．可変長ビット列の復号）
続いて、上記ステップＳ２３０からステップＳ２６０における各処理の詳細について説明する。ステップＳ２３０においては、読み込んだビット列のどの部分が変更部であるか、およびどの部分が不変部であるかを判断して、固定ビット長のサンプルを復元する。
【００５３】
ステップＳ２３０における固定ビット長のサンプルへの復号処理の概要を図８のフローチャートに示す。まず、入力された符号データのビット列から変更部に相当するビット列を抽出し、固定長に復号する（ステップＳ２３１）。入力されたビット列は、先頭から０が続き、１が出現する。これは、上記符号化のときに、そのような規則で可変長符号化したためである。そのため、「１」が出現したときのビット列を、符号化時と逆の規則で復号する。例えば「００１１０００…」というビット列が来た場合に、最初に「１」が出現した「００１」までを変更部と判断し、「０」が２個続いているので、「２」の二進数表現「００１０」（４ビットの場合）に復号する。
【００５４】
次に、過去のサンプルのビット長の移動平均である平均ビット長Ｂｆを算出する（ステップＳ２３２）。これは、上記可変長符号化のステップＳ７１の処理と全く同じ処理である。続いて、不変部のビット列を抽出する（ステップＳ２３３）。これは、算出された平均ビット長Ｂｆ分のビット列を抽出することにより行う。例えば、上記のような「００１１０００…」というビット列で、「００１」までが変更部であったとし、Ｂｆ＝４であったとすると、続く「１０００」が不変部として抽出される。
【００５５】
続いて、ステップＳ２３１で復号された変更部のビット列とステップＳ２３３で抽出された不変部のビット列を連結して固定長のサンプルを出力する（ステップＳ２３４）。固定長に復元されたサンプルは、図７に示したステップＳ２４０の極性復元処理に出力される。次に、累積ビット長ＲＢにビット長Ｂｄ（ｔ）を加算する（ステップＳ２３５）。同時に、各サンプルの処理を行う度に、カウンタＣを１つづつ加算していく処理を行う。続いて、カウンタＣが所定の数を超えたかどうかを判定する（ステップＳ２３６）。所定の数としては、ここでも１００程度を設定している。そのため、カウンタが１００を超えたかどうかを判断することになる。この結果、カウンタが１００を超えていたら、累積ビット長ＲＢを半分にする（ステップＳ２３７）。具体的には、累積ビット長となる変数ＲＢを２で除算する。同時に、カウンタＣを１／２にする。ステップＳ２３５〜ステップＳ２３７の処理は、上記図６の可変長符号化におけるステップＳ７５〜ステップＳ７７の処理と全く同じである。
【００５６】
ステップＳ２３０により固定長のサンプルが出力されたら、次に、ステップＳ２４０において、各誤差サンプルの正負極性を復元する。これは、上記符号化装置のステップＳ６０において行った処理の逆を行うことになる。具体的には、正負の符号ビットをＭＳＢ（最下位ビット）に移動させ、絶対値部分を下位に１ビット移動させた後、正負の符号付き絶対値で表現されているサンプル値を２の補数を用いた表現に変換する。ステップＳ２４０によるビット構成の変換の様子を模式的に示すと図５（ｂ）に示したビット構成から図５（ａ）に示したビット構成に変換することになる。ステップＳ２４０の処理によりコンピュータによる算術演算を行い易いビット構成となる。
【００５７】
続いて、ステップＳ２５０において、予測誤差値が記録されている誤差サンプルの値を過去のサンプル値に依存しない独立した値に復元する。この独立したサンプルの復元処理の概要を図９のフローチャートに示す。まず、あらかじめ準備された複数の予測計算式のうち、どの予測計算式を適用するかを決定する（ステップＳ２５１）。予測計算式は、符号化時に利用された上記〔数式３〕〜〔数式６〕のいずれかを用いることになる。〔数式３〕〜〔数式６〕のいずれを選択するかについては、各予測式に対応した累積誤差値に基づいて行う。累積誤差Ａ１〜Ａ４は、符号化時に用いたものと同じであり、初期状態では全て０となる。
【００５８】
上記〔数式３〕〜〔数式６〕において、ｅ１（ｔ）〜ｅ４（ｔ）は各予測計算式による時刻ｔのサンプルにおける予測誤差であり、ｘ（ｔ）〜ｘ（ｔ−４）は時刻ｔ〜ｔ−４における振幅値である。
【００５９】
上述のように、上記〔数式４〕における「２×ｘ（ｔ−１）−ｘ（ｔ−２）」、上記〔数式５〕における「３×ｘ（ｔ−１）−３×ｘ（ｔ−２）＋ｘ（ｔ−３）」、上記〔数式６〕における「４×ｘ（ｔ−１）−６×ｘ（ｔ−２）＋４×ｘ（ｔ−３）−ｘ（ｔ−４）」は過去の２〜４個のサンプルに基づく線形予測成分である。この線形予測成分、および、直前のサンプルにおいて算出された予測誤差「ｅ１（ｔ−１）／２」〜「ｅ４（ｔ−１）／２」（誤差フィードバック成分）を用いて時刻ｔにおけるサンプルｅ（ｔ）の値を、上記ステップＳ２５１で決定したいずれかの予測式にｅ１（ｔ）〜ｅ４（ｔ）のいずれかとして代入し、ｘ（ｔ）を算出する（ステップＳ２５２）。
【００６０】
続いて、累積誤差Ａ１〜Ａ４に各予測誤差ｅ１（ｔ）〜ｅ４（ｔ）の絶対値を加算する（ステップＳ２５３）。具体的には、符号化装置においても用いた上記〔数式７〕に示したように、累積誤差値となる変数Ａ１〜Ａ４を更新していく。同時に、各サンプルの処理を行う度に、カウンタを１つづつ加算していく処理を行う。
【００６１】
続いて、カウンタが所定回数を超えたかどうかの判定を行う（ステップＳ２５４）。本実施形態では、この所定回数を１００回として設定している。すなわち、カウンタが１００を超えたかどうかの判定を行う。
【００６２】
この結果、カウンタが１００を超えていたら、累積誤差を半分にする（ステップＳ２５５）。具体的には、符号化装置においても用いた上記〔数式８〕に示したように、累積誤差となる変数Ａ１〜Ａ４を２で除算する。同時に、カウンタを０にリセットする。すなわち、ここでのＡ１〜Ａ４は純粋な意味での累積誤差ではなく、累積誤差の移動平均となっている。本実施形態では、直前の最大１００サンプルまでは累積されるが、それ以前のものは半分になるように処理する。これにより、時間的に離れたサンプルの影響が小さくなるようにしている。
【００６３】
上記ステップＳ２５１〜ステップＳ２５５の処理を読み込んだ全誤差サンプルに対して実行することにより、全サンプルの値が元の予測誤差ｅ（ｔ）から振幅値ｘ（ｔ）に復元されることになる。
【００６４】
次にステップＳ２６０において、Ｒチャンネルのサンプルの値をＬチャンネルのサンプルとの差分値から元に戻す処理を行う。このチャンネル間復号処理の概要を図１０のフローチャートに示す。まず、ステップＳ２５０による予測誤差から復元後のサンプルを読み込む（ステップＳ２６１）。読み込んだサンプルがＬチャンネルのものであれば、サンプルの値を基準チャンネルメモリに格納すると共に、次のステップＳ２７０に出力する（ステップＳ２６２）。一方、読み込んだサンプルがＲチャンネルのものであれば、ステップＳ２６３以降の処理を行う。なお、サンプルは、上記符号化装置のチャンネル間演算処理の場合と同様、各チャンネルのものが交互に読み込まれるので、判断を行う必要はない。例えば、サンプル番号ｔ＝１のＬチャンネルのサンプルを読み込んだら、次はサンプル番号ｔ＝１のＲチャンネルのサンプル、その次は、サンプル番号ｔ＝２のＬチャンネルのサンプルというように順番が決まっているので、交互にステップＳ２６２の処理とステップＳ２６３以降の処理とを切替えるようにすれば良い。
【００６５】
Ｒチャンネルのサンプルの場合は、変数ＡｏとＡｄの比較を行う（ステップＳ２６３）。ここで、ＡｏはＲチャンネルのサンプル値の絶対値の累積であり、ＡｄはＲチャンネルとＬチャンネルのサンプル値の差分の絶対値の累積である。変数Ａｏ、Ａｄ共に初期値は０である。ステップＳ２６３において、Ａｄ≧Ａｏであれば、Ｒチャンネルのサンプルをそのままの値で、次のステップＳ２７０に出力する（ステップＳ２６４）。さらに、以下の〔数式９〕の第１式（Ａｏ←Ａｏ＋｜ｅR｜）の処理を行う。ステップＳ２６３において、Ｓｄ＜Ｓｏであれば、Ａｄ←Ａｄ＋｜ｅR｜の処理を行った後、基準チャンネルメモリに格納されているＬチャンネルのサンプルとの和を算出し、和を次のステップＳ２７０に出力する（ステップＳ２６５）。なお、変数ＡｏとＡｄは、上記符号化装置のチャンネル間演算処理において用いられているものと同様の働きをするため、同一名の変数としている。特に、〔数式９〕の第２式においては、〔数式１〕の第２式と異なり、変数Ａｄに、両チャンネルのサンプル値の差分ではなく、Ｒチャンネルのサンプル値の絶対値を加えている。これは、復号装置は、符号化装置により差分演算処理されたＲチャンネルのサンプルを処理するためである。すなわち、符号データのＲチャンネルのサンプルの値は、ＲチャンネルとＬチャンネルの差分値が記録されているために〔数式９〕の第２式の処理を行っているが、〔数式１〕の第２式と同様の処理を行っていることになる。
【００６６】
続いて、Ｌ、Ｒの１対のサンプルを処理したことを示すカウンタＣを１つ加算する（ステップＳ２６６）。
【００６７】
〔数式９〕
Ａｏ←Ａｏ＋｜ｅR｜
Ａｄ←Ａｄ＋｜ｅR｜
【００６８】
続いて、カウンタが所定回数を超えたかどうかの判定を行う（ステップＳ２６７）。本実施形態では、この所定回数を１００回として設定している。すなわち、カウンタが１００を超えたかどうかの判定を行う。
【００６９】
この結果、カウンタが１００を超えていたら、累積値Ａｏ、Ａｄを半分にする（ステップＳ２６８）。具体的には、上記符号化装置において用いた〔数式２〕に示したように、絶対値の累積となる変数Ａｏ、Ａｄを２で除算する。同時に、カウンタＣも半分にリセットする。すなわち、ここでの変数Ａｏ、Ａｄも上記Ａ１〜Ａ４と同様、純粋な意味での累積値ではなく、累積値の移動平均となっている。本実施形態では、直前の最大１００サンプルまでは累積されるが、それ以前のものは半分になるように処理する。これにより、時間的に離れたサンプルの影響が小さくなるようにしている。
【００７０】
上記ステップＳ２６１〜ステップＳ２６８の処理を時系列信号中の全時刻全サンプルに渡って実行することにより、Ｒチャンネルの全サンプルの値が、Ｌチャンネルとの差分値からＲチャンネル独自の値に復元されることになる。Ｌチャンネルのサンプルは、符号化時のチャンネル間演算処理においても変更されないので、復号時のチャンネル復元の際には、そのままの値で出力されることになる。
【００７１】
上記のようにして、原デジタル音響信号のサンプルが復元され、ステップＳ２７０においてサンプルの出力が行われる。出力されたサンプルは、アナログ変換された後、増幅してスピーカーから音声として出力される。
【００７２】
（４．ニアロスレス型の符号化）
以上、ロスレス型の符号化および復号について説明したが、一部の処理を変更することによりニアロスレス型とすることもできる。以下に、ニアロスレス型について説明する。図１１は、本発明に係る符号化方法のニアロスレス型の場合の処理概要を示すフローチャートである。図１１のフローチャートは、大部分が図２のフローチャートと同じであり、違いは、ステップＳ１５０とステップＳ１６０が追加されている点である。また、ステップＳ３０およびステップＳ１００における処理も若干異なっている。そのため、ここでは、ステップＳ３０、Ｓ１００、Ｓ１５０、Ｓ１６０の処理についてのみ説明する。
【００７３】
ステップＳ３０では、図２に示したロスレス型の場合、直前バッファ内に格納された５サンプルのうち最新の２サンプルが完全に同じ値の場合に一致するものとしたが、図１１に示すニアロスレス型の場合、直前バッファ内に格納された５サンプルのうち最新の２サンプルの差が許容値内であれば、一致するものと判断する。例えば、差が±１程度の場合は、一致するものと設定しておく。
【００７４】
ステップＳ１００でも、図２に示したロスレス型の場合、まだ直前バッファに格納されていない現サンプルの値と、直前バッファに格納された５サンプルのうち最新のサンプルの値が同一である場合に、ランが継続すると判断したが、図１１に示すニアロスレス型の場合、まだ直前バッファに格納されていない現サンプルの値と、直前バッファに格納された５サンプルのうち最新のサンプルの値の差が許容値内であれば、ランが継続するものと判断する。ここでも、例えば、差が±１程度の場合は、一致するものと設定しておく。
【００７５】
ステップＳ１５０においては、上記ステップＳ５０において算出された予測誤差値ｅ（ｔ）を利用して、誤差を補正する。具体的には、以下の〔数式１０〕を用いて誤差を縮小する補正を行う。
【００７６】
〔数式１０〕
ｅ´（ｔ）＝［（ｅ（ｔ）＋Ｖｎ）/Ｋ］
なお、Ｋ＝（２Ｖｎ＋１）
【００７７】
なお、〔数式１０〕において、Ｖｎは、１以上の整数値を示している。実際には、量子化ビット数でとり得る最大値の２％程度が好ましい。そのため、本実施形態では、量子化ビット数１６ビットでとり得る最大値３２７６７の２％程度、すなわち、Ｖｎを６５０程度するのが好ましい。また、〔数式１０〕において、［］は、括弧内の値を超えない最大の整数を意味し、したがってｅ´（ｔ）は整数値であることを示している。このようにして、予測誤差値ｅ（ｔ）を縮小した縮小誤差値ｅ´（ｔ）が得られる。
【００７８】
ここで、図１１の流れで符号化を行うと、各サンプルごとに、現サンプルが復号化される値は、最大Ｖｎの範囲でオリジナル値と相違が生じる。もし、後続するステップＳ８０において、図２のように、現サンプルのオリジナル値をそのまま直前バッファに格納すると、次のサンプルが復号化される値のオリジナル値との誤差は２Ｖｎの範囲に拡大し、以後各サンプルの復号化処理を繰り返すごとに誤差が拡大することになる。そこで、ステップＳ８０の直前に、ステップＳ１６０の現サンプルの補正処理を挿入し、本ステップＳ１６０では、現サンプルの値が、後続するステップＳ８０において直前バッファに格納される際に、現サンプルのオリジナル値ではなく、後述する手法で復号化された際に、現サンプルが復号化される値になるように補正を行う。具体的には、線形予測符号化モードの場合、現サンプルのオリジナル値ｘ（ｔ）に対して、〔数式１１〕のｘ´（ｔ）に変換するような補正を行う。
【００７９】
〔数式１１〕
ｘ´（ｔ）＝ｘ（ｔ）＋ｅ´（ｔ）・Ｋ−ｅ（ｔ）
なお、Ｋ＝（２Ｖｎ＋１）
【００８０】
また、ランレングスモードの場合、直前と同一の値に補正して、補正された値で現サンプルを直前バッファに格納する。
【００８１】
（５．ニアロスレス型の復号）
次に、上記ニアロスレス型の符号化により得られた符号データを復号するためのニアロスレス型の復号について説明する。図１２は、本発明に係る復号方法のニアロスレス型の場合の処理概要を示すフローチャートである。図１２のフローチャートは、大部分が図７のフローチャートと同じであり、違いは、ステップＳ３７０が追加されている点である。そのため、ここでは、ステップ３７０の処理についてのみ説明する。
【００８２】
ステップＳ３７０においては、ステップＳ２４０において、復元された縮小誤差値ｅ´（ｔ）に対して、下記〔数式１２〕を用いて予測誤差値ｅ（ｔ）を復元する。
【００８３】
〔数式１２〕
ｅ（ｔ）＝ｅ´（ｔ）・Ｋ
なお、Ｋ＝（２Ｖｎ＋１）
【００８４】
（６．符号化装置および復号装置による符号化復号システム）
以上、本発明に係る符号化装置および復号装置について説明したが、上記符号化装置および復号装置間をデータ通信可能に接続し、符号化復号システムを構成することができる。具体的には、符号化装置に、符号データを復号装置に送信する機能を持たせ、復号装置に、符号化装置から送信された符号データを受信する機能を持たせる。これらは、各符号化装置、復号装置を構成する各コンピュータに、データ通信用の機器およびソフトウェアを搭載することにより実現される。
【００８５】
符号化復号システムにおける符号化装置と復号装置の間を一般の通信回線で結ぶことにより、符号化装置で圧縮符号化した符号データを、復号装置でほぼリアルタイムに復号して再生することができる。これにより、音声データのストリーミング配信を行う場合に、通信回線の容量を考慮せずに、大容量のデータを送信することが可能となる。
【図面の簡単な説明】
【００８６】
【図１】本発明において処理対象とするデジタル時系列信号のサンプル列を模式的に示した図である。
【図２】本発明に係る時系列信号の符号化装置の処理概要を示すフローチャートである。
【図３】チャンネル間相関処理（Ｓ４０）の概要を示すフローチャートである。
【図４】線形予測誤差算出処理（Ｓ５０）の概要を示すフローチャートである。
【図５】極性処理の様子を示す図である。
【図６】可変長符号化処理（Ｓ７０）の概要を示すフローチャートである。
【図７】本発明の符号化装置により得られた符号データの復号処理の概要を示すフローチャートである。
【図８】固定長サンプルへの復号処理（Ｓ２３０）の概要を示すフローチャートである。
【図９】予測誤差からの復号処理（Ｓ２５０）の概要を示すフローチャートである。
【図１０】チャンネル間の復号処理（Ｓ２６０）の概要を示すフローチャートである。
【図１１】本発明の符号化装置によるニアロスレス符号化の処理概要を示すフローチャートである。
【図１２】ニアロスレス符号化された符号データの復号処理の概要を示すフローチャートである。
【図１】
2005151223.tif 000003
【図２】
2005151223.tif 000004
【図３】
2005151223.tif 000005
【図４】
2005151223.tif 000006
【図５】
2005151223.tif 000007
【図６】
2005151223.tif 000008
【図７】
2005151223.tif 000009
【図８】
2005151223.tif 000010
【図９】
2005151223.tif 000011
【図１０】
2005151223.tif 000012
【図１１】
2005151223.tif 000013
【図１２】
2005151223.tif 000014