(57)【特許請求の範囲】
【請求項１】
外部から供給された入力値と、所定の予測値の差分を求める差分検出手段と、
該差分検出手段により求めた差分を量子化する量子化手段と、
該量子化手段により量子化された差分（量子化差分）を符号化して出力する符号化手段と、
所定の係数に基づいて前記量子化差分から次のサンプルの予測値を求める予測値算出手段と、
所定数のサンプルからなるフレーム中のサンプルを量子化する際の量子化誤差に応じて、前記予測値算出手段の係数を設定する係数設定手段と
を備えることを特徴とする符号化装置。
【請求項２】
前記係数設定手段は、前記フレーム中のサンプルを量子化する際の量子化誤差の累積値が最小となるとように前記予測値算出手段の係数を設定することを特徴とする請求項１記載の符号化装置。
【請求項３】
前記係数設定手段は、前記フレーム中のサンプルを量子化する際の量子化誤差の絶対値の最大値が最小となるとように前記予測値算出手段の係数を設定することを特徴とする請求項１記載の符号化装置。
【請求項４】
外部から供給された入力値と、所定の予測値の差分を求める差分検出手段と、
該差分検出手段により求めた差分を、所定のステップ関数に基づいて量子化する量子化手段と、
該量子化手段により量子化された差分（量子化差分）を符号化して出力する符号化手段と、
前記量子化差分から次のサンプルの予測値を求める予測値算出手段と、
所定数のサンプルからなるフレーム中のサンプルを量子化する際の誤差に応じて、前記量子化手段が量子化に用いる量子化ステップ関数を設定する量子化ステップ関数設定手段と
を備えることを特徴とする符号化装置。
【請求項５】
前記ステップ関数設定手段は、前記フレーム中のサンプルを量子化する際の量子化誤差の累積値が最小となるとように前記ステップ関数を設定することを特徴とする請求項４記載の符号化装置。
【請求項６】
前記ステップ関数設定手段は、前記フレーム中のサンプルを量子化する際の量子化誤差の絶対値の最大値が最小となるとように前記ステップ関数を設定することを特徴とする請求項４記載の符号化装置。
【請求項７】
フレーム処理毎にカウントアップするカウンタと、
複数の量子化ステップ関数を保持する量子化ステップ関数記憶部と、
前記差分検出手段から出力される前記予測値の差分と前記量子化差分とに応じて、前記複数の量子化ステップ関数の内のいずれの量子化ステップ関数を選択するかを決定する最大量子化誤差算出部とを有し、
前記量子化ステップ関数設定手段は、前記カウンタあるいは前記最大量子化誤差算出部の出力に基づいて前記量子化ステップ関数記憶部に格納された複数の前記量子化ステップ関数の内のいずれかの量子化ステップ関数を、前記量子化手段が量子化に用いる量子化ステップ関数として選択する
ことを特徴とする請求項４乃至６のいずれか１項に記載の符号化装置。
【請求項８】
外部から供給された入力値と、所定の予測値の差分を求める差分検出手段と、
該差分検出手段により求めた差分を量子化する量子化手段と、
該量子化手段により量子化された差分（量子化差分）を符号化して出力する符号化手段と、
所定の係数に基づいて前記量子化差分から次のサンプルの予測値を求める予測値算出手段と、
前記符号化手段によって求められた符号の絶対値が所定の値より大きいときに、当該サンプルに対して再度符号化を行うように前記差分検出手段、量子化手段、符号化手段、予測値算出手段の制御を行う再符号化制御手段と
を備えることを特徴とする符号化装置。
【請求項９】
前記予測値を出力するセレクタと、
前記量子化差分と前記予測値とを加算する加算器と、
前記加算器からの出力を調整し、出力する残差調整部と、
前記加算器からの出力を保持し、出力するレジスタとを有し、
前記セレクタは、前記残差調整部又は前記レジスタのいずれかの出力を前記予測値として出力する
ことを特徴とする請求項８に記載の符号化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、符号化装置に関し、特に、予測符号化により音声データ等を効率よく圧縮することができる符号化装置に関する。
【０００２】
【従来の技術】
ディジタル音声信号の圧縮には、ディジタル音声が近接するサンプル間で高い相関を持つという性質が利用されている。この性質を利用し、かつ比較的簡単な処理で音声圧縮を行う従来技術として、予測符号化技術が知られており、この予測符号化技術の応用として、例えば、ＤＰＣＭ（Differential Pulse Code Modulation：差分パルス符号化）符号化やＡＤＰＣＭ（Adaptive Differential Pulse Code Modulation：適応差分パルス符号化）符号化等がよく知られている。
【０００３】
これらの符号化方法では、実際の音声と予測値との差分値を量子化することで音声圧縮を図っている。音声信号は時間によってレベルが変動するので、量子化するときに一定の量子化単位で量子化するよりも、音声レベルの大小に応じてステップの大きさ（ステップサイズ）を変えながら量子化する方がデータ量を低減させることができる。もし、一定のステップサイズで量子化するならば大きな音声信号に対してはビット数が不足するために過負荷により音質にひずみを生ずることになる。一方、小さな信号では粗い量子化になるため耳障りな雑音（量子化雑音）となって知覚される。人間の聴覚は、大きな音に対する量子化雑音には鈍感であるが、小さな音に対しては敏感になるという性質がある。このため、大きな信号に対しては大きなステップサイズで量子化し、小さな信号に対しては細かく量子化すれば、知覚される雑音を低減させることができる。
【０００４】
このような適応量子化方法を用いたのがＡＤＰＣＭ符号化である。現在、ＡＤＰＣＭ符号化は、ＰＨＳ（Personal Handy-phone System）の音声信号のディジタル化方法として採用されている他に、ポータブルＣＤ（Compact Disk）プレイヤの音飛び防止用圧縮技術として用いられている。
【０００５】
上述の音声のように相関の強い信号については隣接するサンプル値の差をとって符号化する方が、サンプル値をそのまま符号化するＰＣＭ（Pulse Code Modulation）符号化等の方法より圧縮率が高いことが期待される。このため、ＡＤＰＣＭ符号化では、適応フィルタによる予測値と入力値との差分を、そのレベルに応じて適応的に変化する量子化ステップ幅で量子化する。
【０００６】
図２は従来のＡＤＰＣＭ符号化及び復号化処理を実現する符号化復号化装置を示すブロック図である。この符号化復号化装置は、同図中に示すように、入力された音声信号を符号化する符号化部１１９と、伝走路あるいは記憶媒体１１８を介して供給された符号化データから音声信号を再生する復号化部１２０とからなる。符号化部１１９は、入力された音声信号のサンプルＸ（ｎ）と予測値ＸＰ（ｎ）との予測差分Ｄ（ｎ）を求める減算器１１０と、この減算部１１０によって求められた予測差分Ｄ（ｎ）を量子化する量子化部１０５と、量子化部１０５の量子化出力（量子化予測差分）ＤＱ（ｎ）を符号化する符号化部１０８等を備えている。また、復号化部１２０は、符号化された音声データＬ（ｎ）を逆量子化する逆量子化部１１５と、レジスタ１１７に設定された予測値とを加算して音声データＸＤ（ｎ）を再生する加算器１１６等を備えている。
【０００７】
なお、符号化部１１９及び復号化部１２０は、一般的には、再生された音声信号を帯域制限する適応フィルタを備えているが、ここでは説明の簡略化のために、適応フィルタを用いず、前サンプルにおける量子化後の入力データ（予測値＋量子化後の予測差分）をそのまま次サンプルの予測値とする１ワードメモリ型のＡＤＰＣＭ符号化の説明を行う。
【０００８】
符号部１１９は減算器１１０により、次式に従って第ｎサンプル目の入力値Ｘ（ｎ）に対する予測値ＸＰ（ｎ）との差分（予測差分Ｄ（ｎ））を求める。
Ｄ（ｎ）＝Ｘ（ｎ）−ＸＰ（ｎ）                            ・・・（１）
【０００９】
量子化部１０５は、量子化ステップ幅Δ（ｎ）を基準とし、次式に従って予測差分Ｄ（ｎ）を量子化する。
DQ(n) =  15Δ(n)/8  ( 14Δ(n)/8 ≦ D(n) )
DQ(n) =  13Δ(n)/8  ( 12Δ(n)/8 ≦ D(n) ＜ 14Δ(n)/8)
DQ(n) =  11Δ(n)/8  ( 10Δ(n)/8 ≦ D(n) ＜ 12Δ(n)/8)
DQ(n) =   9Δ(n)/8  (  8Δ(n)/8 ≦ D(n) ＜ 10Δ(n)/8)
DQ(n) =   7Δ(n)/8  (  6Δ(n)/8 ≦ D(n) ＜ 8Δ(n)/8)
DQ(n) =   5Δ(n)/8  (  4Δ(n)/8 ≦ D(n) ＜ 6Δ(n)/8)
DQ(n) =   3Δ(n)/8  (  2Δ(n)/8 ≦ D(n) ＜ 4Δ(n)/8)
DQ(n) =    Δ(n)/8  (         0 ≦ D(n) ＜ 2Δ(n)/8)
DQ(n) =   -Δ(n)/8  ( -2Δ(n)/8 ≦ D(n) ＜ 0 )
DQ(n) =  -3Δ(n)/8  ( -4Δ(n)/8 ≦ D(n) ＜ -2Δ(n)/8)
DQ(n) =  -5Δ(n)/8  ( -6Δ(n)/8 ≦ D(n) ＜ -4Δ(n)/8)
DQ(n) =  -7Δ(n)/8  ( -8Δ(n)/8 ≦ D(n) ＜ -6Δ(n)/8)
DQ(n) =  -9Δ(n)/8  (-10Δ(n)/8 ≦ D(n) ＜ -8Δ(n)/8)
DQ(n) = -11Δ(n)/8  (-12Δ(n)/8 ≦ D(n) ＜ -10Δ(n)/8)
DQ(n) = -13Δ(n)/8  (-14Δ(n)/8 ≦ D(n) ＜ -12Δ(n)/8)
DQ(n) = -15Δ(n)/8  (              D(n) ＜ -14Δ(n)/8)・・・（２）
【００１０】
なお、この式（２）には、１サンプルを４ビットで符号化する場合の関係式が示されている。量子化後の予測差分ＤＱ（ｎ）は、符号化部１０８によって符号データＬ（ｎ）に変換され、伝送路１１８に送出される。この符号データへの変換は表１に示すように行われる。
【表１】
0003998330.tif 000002
【００１１】
また、ここでは伝送路としたが、音声蓄積再生装置に組み込む場合等ではＲＡＭ等の記憶媒体でも構わない。符号データＬ（ｎ）は復号化部１０９で再び量子化予測差分ＤＱ（ｎ）に変換され次サンプルの予測値算出のために用いられる。この復号化部１０９の出力ＤＱ（ｎ）と量子化部１０５の出力ＤＱ（ｎ）は同一データであるので、復号化部１０９を省いて、図２中に破線で示すように量子化部１０５の出力を直接加算器１０６に供給する構成としてもよい。量子化後の予測差分ＤＱ（ｎ）は、次式に従って、先に得られている予測値ＸＰ（ｎ）と加算器１０６で加算され、次サンプルの予測値としてレジスタ１０７に格納される。
ＸＰ（ｎ＋１）＝ＸＰ（ｎ）＋ＤＱ（ｎ）                    ・・・（３）
【００１２】
図３は、上述のような従来のＡＤＰＣＭ符号化における演算プロセスを概念的に示す図である。
【００１３】
ところで、次サンプルにおける量子化ステップ幅Δ（ｎ＋１）は、現サンプルの量子化ステップ幅Δ（ｎ）に、符号データＬ（ｎ）に対応した値を乗じて求める。図４からわかるように量子化出力ＤＱ（ｎ）の絶対値は、量子化ステップ幅Δ（ｎ）の１／８〜１５／８の範囲に限られている。このため、予測差分Ｄ（ｎ）の絶対値が増加する傾向にあるときは量子化ステップ幅Δ（ｎ）もそれに応じて増加させ、予測差分Ｄ（ｎ）の絶対値が減少する傾向にあるときは量子化ステップ幅Δ（ｎ）も減少させるのが望ましい。具体的には、現サンプルの量子化値（ＤＱ（ｎ））に応じて、現サンプルの量子化ステップ幅Δ（ｎ）にある数（乗数Ｍ（Ｌ（ｎ）））を乗じ、次サンプルの量子化ステップ幅Δ（ｎ＋１）とする。符号化部１０８において決定された符号データＬ（ｎ）はＲＯＭ読み出し部１０２において乗数ＲＯＭ１０１のアドレス・ポインタとして用いられる。
【００１４】
符号データＬ（ｎ）と乗数Ｍ（Ｌ（ｎ））の関係は、上述の表１に示されている。この表１に示すように、乗数Ｍ（Ｌ（ｎ））は、量子化後の予測差分ＤＱ（ｎ）（あるいは予測差分Ｄ（ｎ））の絶対値が量子化ステップ幅Δ（ｎ）の絶対値を超える場合、次サンプルの量子化ステップ幅Δ（ｎ＋１）の絶対値を増大させる方向に働き、そうでない場合には縮小させる方向に働くように設定されている。このため、予測差分Ｄ（ｎ）の時間的変化に追従して量子化ステップ幅Δ（ｎ）が変化する。なお、乗数Ｍ（Ｌ（ｎ））の値は、音声の統計的な性質に基づいて経験的に定められたものであり、例えば「N.S.Jayant、 "Adaptive Quantization with a One-word Memory"、 The Bell system Technical Journal Vol.52、 NO.7、 Sep. 1973、 pp. 1119-1144」に示された値に基づいている。乗数ＲＯＭ１０１から読み出された乗数データＭ（Ｌ（ｎ））は、乗算器１０３により、レジスタ１０４に格納されている現サンプルの量子化ステップ幅Δ（ｎ）と乗算され、再びレジスタ１０４に格納される。そして、このレジスタ１０４に格納された値が次サンプルの量子化ステップ幅Δ（ｎ＋１）になる。以上のような演算が入力サンプルごとに逐次ディジタル的に行われる。
【００１５】
一方、復号部１２０は逆量子化部１１５により、伝送路１１８を介して供給された符号データＬ（ｎ）を逆量子化する。この時の量子化ステップ幅は前サンプルで求められたものを用いる。逆量子化処理が終了すると、現サンプルの符号データＬ（ｎ）を用いて次サンプルの量子化ステップが決定される。
【００１６】
この量子化ステップの決定方法及びその構成は符号化部１１９と全く同一であり、符号部１１９の乗数ＲＯＭ１０１と復号部１２０の乗数ＲＯＭ１１１の内容は同一である。復号された差分データＤＱ（ｎ）は、加算器１１６において前サンプルにおいて求められた復号後の出力データであるレジスタ１１７の出力と加算され、音声データ系列ＸＤ（ｎ）として出力される。
【００１７】
以上が従来のＡＤＰＣＭ符号化及び復号化処理の流れである。なお、５ビット符号化の場合は、図４における量子化出力値が３２通りに増加することになる。表２に５ビット符号化における、量子化値ＤＱ（ｎ）と符号データＬ（ｎ）と乗数（Ｍ（Ｌ（ｎ）））の関係を示す。
【００１８】
【表２】
0003998330.tif 000003
【００１９】
ここで量子化誤差について考えてみる。第ｎサンプル目における量子化誤差ε（ｎ）は、入力サンプルデータＸ（ｎ）と復号化データＸＤ（ｎ）との差であるから、
ε（ｎ）＝Ｘ（ｎ）−ＸＤ（ｎ）＝ＤＱ（ｎ）−Ｄ（ｎ）      ・・・（４）
となる。
【００２０】
量子化誤差は、予測差分Ｄ（ｎ）の量子化に伴う誤差であり、これは図４より明らかなように、４ビット符号化の場合、符号化データの絶対値が最大の場合を除くと、高々量子化ステップ幅Δ（ｎ）／８である。５ビット符号化の場合は、その半分のΔ（ｎ）／１６である。より忠実に波形を再生するためには、量子化誤差を少なくすることが必要である。従って、４ビット符号化よりも５ビット符号化の方がより高品質な再生音声が得られることになる。
【００２１】
【発明が解決しようとする課題】
しかしながら、上記の従来の符号化方法には以下のような問題点があった。
【００２２】
すなわち、入力サンプルが非圧縮時に１６ビットの精度であるとすると、１サンプルあたり４ビットの符号が生成されるわけであるから圧縮率は１／４となり、圧縮効率はあまり良くない。また、ＣＤ（コンパクト・ディスク（商標））並みの高品質な楽音（サンプリング周波数が４０ｋＨｚを超えるようなサンプル）を符号化すると、高周波成分を多く含む部分でどうしても量子化ノイズが耳についてしまう。
【００２３】
これを改善するために、従来では４ビット符号化ではなく５ビットあるいはそれ以上のビット数の符号化を行なって対応していた。これにより、量子化誤差を半減させることができるので量子化ノイズは低減できるが、ビットレート（データ量）が５／４に増大し、圧縮率が悪化してしまうといった問題があった。
【００２４】
本発明は、上述の問題点を解決するためになされたものであり、圧縮率を悪化させることなく音質を改善することができる符号化装置を提供することを目的とする。
【００２５】
【課題を解決するための手段】
本発明に係る符号化装置は、上述の課題を解決するために、外部から供給された入力値と、所定の予測値の差分を求める差分検出手段と、差分検出手段により求めた差分を量子化する量子化手段と、量子化手段により量子化された差分（量子化差分）を符号化して出力する符号化手段と、所定の係数に基づいて量子化差分から次のサンプルの予測値を求める予測値算出手段と、所定数のサンプルからなるフレーム中のサンプルを量子化する際の量子化誤差に応じて、予測値算出手段の係数を設定する係数設定手段とを備えることを特徴とする。
【００２６】
また、本発明に係る他の符号化装置は、外部から供給された入力値と、所定の予測値の差分を求める差分検出手段と、差分検出手段により求めた差分を、所定のステップ関数に基づいて量子化する量子化手段と、量子化手段により量子化された差分（量子化差分）を符号化して出力する符号化手段と、量子化差分から次のサンプルの予測値を求める予測値算出手段と、所定数のサンプルからなるフレーム中の誤差が最小となるように、量子化手段が量子化に用いる量子化ステップ関数を設定する量子化ステップ関数設定手段とを備えることを特徴とする。
【００２７】
また、本発明に係る他の符号化装置は、外部から供給された入力値と、所定の予測値の差分を求める差分検出手段と、差分検出手段により求めた差分を量子化する量子化手段と、量子化手段により量子化された差分（量子化差分）を符号化して出力する符号化手段と、所定の係数に基づいて量子化差分から次のサンプルの予測値を求める予測値算出手段と、符号化手段によって求められた符号の絶対値が所定の値より大きいときに、当該サンプルに対して再度符号化を行うように差分検出手段、量子化手段、符号化手段、予測値算出手段の制御を行う再符号化制御手段とを備えることを特徴とする。
【００２８】
【発明の実施の形態】
第１の実施形態
図１は、本発明の符号化装置を適用した第１の実施形態に係るＡＤＰＣＭ符号化復号化装置を示すブロック図である。
【００２９】
従来の符号化復号化装置では、音声データを各サンプル毎に扱っていたが、この図１に示す符号化復号化装置では、１０サンプルを１フレームという単位で扱い、予測値を補正することにより該フレーム内における累計量子化誤差を最小とし、その最小となった補正値Ｆ（ｍ）を符号化して入力サンプルに対する符号データに付加して伝送するようにしている。
【００３０】
以下順にその構成を第ｍフレームにおける第ｎサンプル目に注目して説明する。なお、後述の実施形態は４ビット符号化の場合の処理である。
【００３１】
この符号化復号化装置は、入力された音声信号を符号化する符号化処理部３０１と、伝送路あるいは記憶媒体３２０を介して供給された符号化データから音声信号を再生する復号化処理部３２１とからなる。
【００３２】
符号化処理部３０１は、入力された音声信号のサンプルＸ（ｍ、ｎ）と予測値ＸＰ２（ｍ、ｎ）との予測差分Ｄ（ｍ、ｎ）を求める加算器３０２と、この加算器３０２によって求められた予測差分Ｄ（ｍ、ｎ）を量子化する量子化部３０３と、量子化部３０３の量子化出力（量子化予測差分）ＤＱ（ｍ、ｎ）を符号化する符号化部３０４と、復号化部３０５、加算器３０６、レジスタＣ３０７、レジスタＤ３０８、係数決定部３１０等を有し、予測値ＸＰ２（ｍ、ｎ）を求める予測系と、ＲＯＭ読み出し部３１４、乗数ＲＯＭ３１５等を有し、量子化ステップΔ(ｍ、ｎ)を決定する量子化ステップ決定系等を備えている。
【００３３】
加算器３０２によって求められた予測差分Ｄ（ｍ、ｎ）は、量子化部３０３と量子化誤差累計算出部３１３に供給される。量子化部３０３は、後述のレジスタＡ３１７の出力である量子化ステップ幅Δ（ｍ、ｎ）を用いて予測差分Ｄ（ｍ、ｎ）を量子化し、その出力結果である量子化後の予測差分ＤＱ（ｍ、ｎ）を符号化部３０４と量子化誤差累計算出部３１３に供給する。量子化誤差累計算出部３１３は、予測差分Ｄ（ｍ、ｎ）と量子化予測差分ＤＱ（ｍ、ｎ）から、後述のように、フレーム単位の累計量子化誤差を算出する。符号化部３０４は、供給された量子化予測差分ＤＱ（ｍ、ｎ）を伝送又は蓄積するための符号データＬ（ｍ、ｎ）に変換し、その結果をマルチプレクサ３１９とＲＯＭ読み出し部３１４と復号化部３０５に供給する。復号化部３０５は、供給された符号データＬ（ｍ、ｎ）を復号化し、復号結果ＤＱ（ｍ、ｎ）を加算器３０６に供給する。なお、復号化部３０５の出力と量子化部３０３の出力は同一のデータであるので、復号化部３０５を省略し、図１中に破線で示すように量子化部３０３の出力を直接加算器３０６に供給する構成としてもよい。
【００３４】
加算器３０６は、先に予測差分Ｄ（ｍ、ｎ）を求める際に用いた予測値ＸＰ２（ｍ、ｎ）と量子化予測差分ＤＱ（ｍ、ｎ）を加算し、この結果ＸＰ１（ｍ、ｎ）をレジスタＣ３０７に格納する。レジスタＣ３０７に格納されたＸＰ１（ｍ、ｎ）は次サンプルの処理において用いられるデータであり、予測値ＸＰ１（ｍ、ｎ＋１）として乗算器３０９に供給される。乗算器３０９は、後述のレジスタＣ３０７の出力値に、所定の係数を乗じ、これを次のサンプルの予測ＸＰ２（ｍ、ｎ＋１）として、加算器３０２と加算器３０６に供給する。
【００３５】
係数ＲＯＭ３１１には表３に示す１６種類の係数がデータとして格納されている。カウンタ３１２は、例えば１６値カウンタであり、１フレーム（１０サンプル）毎にカウント値を１増加させ、このカウント値を係数決定部３１０に供給する。このカウント値は、係数ＲＯＭ３１１のアドレス・ポインタとなっている。係数ＲＯＭ３１１に格納されたデータの内のどのデータを乗算器３０９の係数として選択するかはカウンタ３１２、量子化誤差累計算出部３１３の出力に基づいて係数決定部３１０が決定する。
【００３６】
【表３】
0003998330.tif 000004
【００３７】
一方、ＲＯＭ読み出し部３１４は、供給された符号データＬ（ｍ、ｎ）に基づいて次サンプルの量子化ステップ幅を更新する。ＲＯＭ読み出し部３１４は、符号データＬ（ｍ、ｎ）をアドレス・ポインタとして乗数ＲＯＭ３１５からのデータ読み出しを行い、読み出した結果すなわち乗数Ｍ（Ｌ（ｍ、ｎ））は乗算器３１６の第１の入力に供給される。乗数ＲＯＭ３１５の内容は、表４に示すように、上述の表１に示す従来例と同様である。
【００３８】
【表４】
0003998330.tif 000005
【００３９】
乗算器３１６の第２の入力にはレジスタＡ３１７の出力すなわち現サンプルにおける量子化ステップ幅Δ（ｍ、ｎ）が供給され、乗算器３１６の乗算結果は、再びレジスタＡ３１７に格納される。レジスタＡ３１７に格納されたデータは次サンプルの処理において用いられ、量子化ステップ幅Δ（ｍ、ｎ＋１）として量子化部３０３に供給される。
【００４０】
入力された音声信号のサンプル毎に上述のような処理が繰り返される。
【００４１】
上述のように係数決定部３１０が決定する乗算器３０９の係数は、例えば係数を順次変更して各フレームの符号化処理を１６回繰り返して実行し、フレーム単位で最小の量子化誤差（累計）となる係数を選択することによって決定する。従って、１フレーム（１０サンプル）のデータに対して、１６０回の符号化処理を施して最適な係数を算出することになる。カウンタ３１２は、この１６回のフレーム処理を制御するためのものであり、同時に乗算器３０９の係数の選択制御を行っている。
【００４２】
係数決定部３１０は、１回目のフレーム処理ではカウンタ３１２のカウント値すなわち表３中のデータ０（００００）に対応する係数データを乗算器３０９の係数に設定し、２回目のフレーム処理ではカウンタ３１２の値すなわちデータ１（０００１）に対応する係数データを乗算器３０９の係数に設定し、以後同様に係数データを変化させて、合計１６回のフレーム処理を順次実行する。量子化誤差累計算出部３１３は、各々のフレーム処理を行った際の累計量子化誤差を算出しており、１６回のフレーム処理の中で累計量子化誤差が最小となった係数データを係数決定部３１０に供給する。乗算器３０９は、この係数データの係数を用いて再度フレーム処理を行い、ここで初めて符号データＬ（ｍ、ｎ）と係数データＦ（ｍ）がマルチプレクサ３１９に供給される。マルチプレクサ３１９は、供給された符号データＬ（ｍ、ｎ）と係数データＦ（ｍ）を多重化して伝送路３２０に送出する。
【００４３】
なお、レジスタＡ３１７に接続されたレジスタＢ３１８と、レジスタＣ３０７に接続されたレジスタＤ３０８はそれぞれの退避用レジスタであり、上述の１６回のフレーム処理中の各々のフレーム処理を行う前に初期値を設定するために用いられる。
【００４４】
また、復号化処理部３２１は、符号化された音声データＬ（ｍ、ｎ）を逆量子化する逆量子化部３２３と、逆量子化出力に予測値ＸＰ２（ｍ、ｎ）を加算して音声データＸＤ（ｍ、ｎ）を再生する加算器３２４と、レジスタＦ３２５、乗算器３２６、係数決定部３２７等を有し、予測値ＸＰ２（ｍ、ｎ）を求める予測系と、乗数ＲＯＭ３３０、ＲＯＭ読み出し部３２９等を有し、量子化ステップΔ(ｍ、ｎ)を決定する量子化ステップ決定系等を備えている。
【００４５】
伝送路３２０を介して供給されたデータは、デマルチプレクサ３２２に供給され、符号データＬ（ｍ、ｎ）と係数データＦ（ｍ）に分離される。符号データＬ（ｍ、ｎ）はＲＯＭ読み出し部３２９と逆量子化部３２３に供給され、係数データＦ（ｍ）は係数決定部３２７に供給される。
【００４６】
逆量子化部３２３に入力された符号データＬ（ｍ、ｎ）は、レジスタＥ３３２の出力である量子化ステップ幅Δ（ｍ、ｎ）で逆量子化され、予測差分ＤＱ（ｍ、ｎ）として加算器３２４に供給される。加算器３２４は、逆量子化部３２３からの予測差分ＤＱ（ｍ、ｎ）と、後述する乗算器３２６の出力値とを加算し、その結果を復号データＸＤ（ｍ、ｎ）として出力する。この復号データＸＤ（ｍ、ｎ）は、レジスタＦ３２５にも供給され、格納される。レジスタＦ３２５に格納されたデータは次サンプルの復号時に用いるためのものであり、この読み出し出力は乗算器３２６の入力に供給されている。乗算器３２６はレジスタＦ３２５からの入力にある値（係数決定部３２７からの係数）を乗じて加算器３２４に供給する。
【００４７】
一方、係数決定部３２７に入力された係数データＦ（ｍ）は、係数決定部３２７に供給された係数ＲＯＭ３２８のアドレス・ポインタとして用いられ、これに対応した係数データが読み出され、乗算器３２６の係数として設定される。係数ＲＯＭ３２８の内容は符号化時に用いた係数ＲＯＭ３１１と同一のものである。
【００４８】
また、ＲＯＭ読み出し部３２９に入力された符号データＬ（ｍ、ｎ）は、ＲＯＭ読み出し部３２９に接続された乗数ＲＯＭ３３０のアドレス・ポインタとして用いられ、それに対応した乗数データＭ（Ｌ（ｍ、ｎ））が読み出される。乗算器３３１の入力には、ＲＯＭ読み出し部３２９で読み出された乗数データＭ（Ｌ（ｍ、ｎ））とレジスタＥ３３２の出力が供給され、乗算結果を再びレジスタＥ３３２に格納する構成となっている。レジスタＥ３３２に格納されたデータは次サンプルの量子化ステップ幅Δ（ｍ、ｎ＋１）として用いられる。乗数ＲＯＭ３３０及び係数ＲＯＭ３２８の内容は符号化ブロックにおける乗数ＲＯＭ３１５及び係数ＲＯＭ３１１と同一のものである。
【００４９】
以下、上述のように構成されたＡＤＰＣＭ符号化復号化装置の動作を説明する。
【００５０】
符号化処理部３０１は、例えば図５に示すフローチャートに従って動作し、１フレームすなわち入力データの１０サンプル毎に、最適な係数を決定し、この係数を用いて符号化したデータに、係数を示す情報を付加して送信あるいは記録する。
【００５１】
具体的には、図５中のステップＳ１００〜Ｓ１０２においてフレームをカウントするカウンタｍ、レジスタＢ３１８、レジスタＤ３０８の初期設定を行い、ステップＳ１０３において累計量子化誤差の最小値を保持する変数（εｍｉｎ）の初期設定を行う。変数εｍｉｎの値としては、例えば通常の符号化ではありえない大きい値（この場合では、１×１０５０）を設定する。
【００５２】
そして、ステップＳ１０４で１０個のサンプルを入力し、続くステップＳ１０５において入力が終了したか否かを判定し、入力が終了していれば終了し、入力が終了していなければステップＳ１０６に進む。ステップＳ１０６では、係数を変化させる回数をカウントするカウンタ３１２をリセットし、続くステップＳ１０７において、係数決定部３１０は係数ＲＯＭ３１１からカウンタ３１２のカウント値Ｆ（ｍ）に対応するアドレスから係数を読み出し、続くステップＳ１０８でフレーム処理（１フレーム分のサンプルを符号化し、フレーム単位の累積量子化誤差εｓｕｍ（ｍ、Ｆ（ｍ））［フローチャート中では単にε（ｍ）として示す。］を求める処理）を実行し、ステップＳ１０９に進む。
【００５３】
ステップＳ１０９では、直前のフレーム処理によって求められた累積量子化誤差εｓｕｍ（ｍ、Ｆ（ｍ））が誤差の最小値εｍｉｎより小さいか否かを判定し、該当しなければそのままステップＳ１１２に進み、該当すればステップＳ１１０において、累積量子化誤差εｓｕｍ（ｍ、Ｆ（ｍ））を誤差の最小値εｍｉｎとし、ステップＳ１１１で最適カウント値をこのときのカウンタ３１２のカウント値Ｆ（ｍ）とした後、ステップＳ１１２に進む。ステップＳ１１２では、カウント値を１増加させ、ステップＳ１１３に進む。
【００５４】
ステップＳ１１３では、カウント値が１６以上であるか否か、すなわち、変数を順次変化させてフレーム処理を１６回実行したか否かを検出し、該当すればステップＳ１１４に進み、該当しなければステップＳ１０７に戻り、ステップＳ１０７〜Ｓ１１２までの処理を繰り返す。
【００５５】
これにより、カウント値が１ずつ増加されながらステップＳ１０７〜Ｓ１１３までの処理が繰り返され、カウント値Ｆ（ｍ）が０〜１５の場合について合計で１６回のフレーム処理が実行され、１６通りの係数ａ（Ｆ（ｍ））を用いた際の累計量子化誤差εｓｕｍ（ｍ、Ｆ（ｍ））が算出され、この累計量子化誤差の最小値とそのときのカウント値がそれぞれ最小値εｍｉｎ、最適カウント値として求められる。
【００５６】
上述のように１６回のフレーム処理が終了し、ステップＳ１１４に進むと、量子化誤差累計算出部３１３は、最小値εｍｉｎに基づいて、累計量子化誤差εｓｕｍ（ｍ、Ｆ（ｍ））が最小となるカウント値Ｆ（ｍ）を決定し、これを係数決定部３１０に供給する。係数決定部３１０は、ステップＳ１１５において、係数ＲＯＭ３１１を参照し、供給されたカウント値Ｆ（ｍ）に対応する係数ａ（Ｆ（ｍ））を読み出して乗算器３０９の係数として設定する。そして、ステップＳ１１６において、この係数ａ（Ｆ（ｍ））を用いて再びフレーム処理を行う。この後、ステップＳ１１７においてレジスタＡ３１７の値をレジスタＢ３１８に転送し、ステップＳ１１８においてレジスタＣ３０７の値をレジスタＤ３０８に転送した後、ステップＳ１１９において、このフレーム処理において符号化部３０４から出力される符号データＬ（ｍ、ｎ）と係数決定部３１０により選択された係数を示すカウント値Ｆ（ｍ）が、マルチプレクサ３１９で多重化されて伝送路３２０に送信される。そして、ステップＳ１２０においてフレームをカウントするカウンタｍの値に１が加算され、次のフレームに対して上述と同様のステップＳ１０３以降の処理が開始される。
【００５７】
このような符号化によって、符号化処理部３０１から送信されるデータは、１サンプル当たり４ビットの符号化の場合、１フレーム分の１０サンプル（４０ビット）に係数を示すデータＦ（ｍ）の４ビットが加わるため、１フレーム当たり４４ビット、すなわち１サンプル当たり４．４ビットの情報量となる。
【００５８】
上述のステップＳ１０８、Ｓ１１６に対応するフレーム処理は、図６に示すフローチャートに従って実行される。
【００５９】
フレーム処理が開始されると、符号処理部３０１は、まず、ステップＳ１３０、Ｓ１３１においてサンプル数をカウントするカウンタｎ、累計量子化誤差εｓｕｍ（ｍ、Ｆ（ｍ））［フローチャート中ではε（ｍ）として示す。］をリセットする。
【００６０】
次に、ステップＳ１３２、Ｓ１３３において、量子化ステップ幅退避用レジスタであるレジスタＢ３１８の内容をレジスタＡ３１７に転送し、補正前の予測値退避用レジスタであるレジスタＤ３０８の内容をレジスタＣ３０７に転送する。レジスタＢ３１８、レジスタＤ３０８には、それぞれ前フレームの最終サンプルを符号化した結果、すなわち第ｍ−１フレームの１０サンプル目（ｎ＝９）を符号化した結果、算出された量子化ステップ幅Δ（ｍ−１、９）と補正前の予測値ＸＰ１（ｍ−１、９）が格納されているので、これらの値により各レジスタを初期化する。すなわち、
Δ（ｍ、０）＝Δ（ｍ−１、９）                            ・・・（５）
ＸＰ１（ｍ、０）＝ＸＰ１（ｍ−１、９）                    ・・・（６）
という処理を行う。
【００６１】
この後、ステップＳ１３４において、乗算器３０９がｎサンプル目の予測値ＸＰ２（ｍ、ｎ）を求め、ステップＳ１３５において、加算器３０２が第ｎ＋１サンプル目の予測差分Ｄ（ｍ、ｎ）を求める。これらの値は、以下の式によって求められる。
ＸＰ２（ｍ、ｎ）＝ａ（Ｆ（ｍ））×ＸＰ１（ｍ、ｎ）        ・・・（７）
Ｄ（ｍ、ｎ）＝Ｘ（ｍ、ｎ）−ＸＰ２（ｍ、ｎ）              ・・・（８）
このように算出された予測差分Ｄ（ｍ、ｎ）は、ステップＳ１３６において量子化部３０３により量子化される。この量子化は上述の式（２）と同様に行われる。
【００６２】
量子化された予測差分ＤＱ（ｍ、ｎ）は、ステップＳ１３７において、符号化部３０４により上述の表４に従って符号化される。符号化されたデータＬ（ｍ、ｎ）は、次の第ｎ＋１サンプル目の量子化ステップ幅Δ（ｍ、ｎ＋１）を算出するためにＲＯＭ読み出し部３１４に供給され、同時に、第ｎ＋１サンプル目の予測値ＸＰ１（ｍ、ｎ＋１）を算出するために復号化部３０５に供給される。
【００６３】
以下の量子化ステップ幅の更新アルゴリズムは従来と同様である。
【００６４】
すなわち、復号化部３０５に供給された符号データＬ（ｍ、ｎ）は、上述の表４に従って復号され、ＤＱ（ｍ、ｎ）が得られる。なお、復号化部３０５の出力と量子化部３０３の出力は同一データであるので、復号化部３０５を省略し、図１中に破線で示すように、量子化部３０３の出力を直接加算器３０６に供給するように構成することもできる。
【００６５】
そして、ステップＳ１３８において、加算器３０６は、次式に従い、供給された量子化後の予測差分ＤＱ（ｍ、ｎ）に基づいて、次サンプルの予測値を算出し、レジスタＣ３０７に格納する。
ＸＰ１（ｍ、ｎ）＝ＤＱ（ｍ、ｎ）＋ＸＰ２（ｍ、ｎ）        ・・・（９）
【００６６】
一方、ＲＯＭ読み出し部３１４に供給された符号データＬ（ｍ、ｎ）は、乗数ＲＯＭ３１５のアドレス・ポインタとして用いられ、これに応じてステップＳ１３９で乗数Ｍ（Ｌ（ｍ、ｎ））が読み出される。この乗数ＲＯＭ３１５の内容は上述の表４に示されている。
【００６７】
ステップＳ１４０において、乗算器３１６は、次式に従って乗数ＲＯＭ３１５から読み出された乗数Ｍ（Ｌ（ｍ、ｎ））を第ｎサンプルの量子化で用いた量子化ステップ幅Δ（ｍ、ｎ）に乗じ、この結果を第ｎ＋１サンプル目の量子化ステップ幅として再びレジスタＡ３１７に格納する。
Δ（ｍ、ｎ＋１）＝Δ（ｍ、ｎ）×Ｍ（Ｌ（ｍ、ｎ））      ・・・（１０）
【００６８】
上述の表４から明らかなように、量子化予測差分ＤＱ（ｍ、ｎ）の絶対値が量子化ステップ幅Δ（ｍ、ｎ）の絶対値よりも大きい場合には、量子化ステップ幅を大きくする方向に働き、逆に量子化予測差分ＤＱ（ｍ、ｎ）の絶対値が量子化ステップ幅Δ（ｍ、ｎ）の絶対値よりも小さい時には量子化ステップ幅を小さくする方向に働く。すなわち、量子化ステップ幅は、入力データの変動値に追従して更新されていることになる。図７は、このような符号化における演算プロセスを概念的に示す図である。
【００６９】
この後、ステップＳ１４１において、量子化誤差累計算出部３１３は、次式に従って、上述の量子化の結果により量子化誤差を算出し、これを累算する。
【数１】
0003998330.tif 000006
【００７０】
ステップＳ１４２では、カウンタｎの値に１を加え、ステップＳ１４３に進む。ステップＳ１４３では、カウンタｎの値が１０以上であるか否か、すなわち１フレームの１０サンプル分の符号化が終了したか否かを判定し、該当すればフレーム処理を終了し、該当しなければ、ステップＳ１３４に戻る。これにより、１フレーム分の１０サンプルに対して上述のステップＳ１３４〜Ｓ１４２の処理が繰り返される。これらの処理が終了した後、εｓｕｍ（ｍ、Ｆ（ｍ））には、次式に示すフレーム単位の累計量子化誤差が保持された状態となる。
【数２】
0003998330.tif 000007
【００７１】
図６に示すフレーム処理は、図５中のステップＳ１０８に相当する処理として実行される場合には、ステップＳ１４３において１０サンプル分の入力データの符号化処理が終了したことを検出すると終了し、図５中のステップＳ１０９に戻り、ステップＳ１１１でカウンタ３１２の値を１増加させ、ステップＳ１０７において係数決定部３１０により新たな係数を選択した後、再度、ステップＳ１３０から実行され、図５中のステップ１１３でカウント値が１６以上であることが検出されるまで、合計で１６回繰り返して実行される。
【００７２】
復号化処理部３２１では、伝送路３２０を通して受信した、あるいは記録媒体から再生した１フレーム分のデータを受け取ると、デマルチプレクサ３２２が、符号データＬ（ｍ、ｎ）と係数データＦ（ｍ）を分離し、符号データＬ（ｍ、ｎ）をＲＯＭ読み出し部３２９と逆量子化部３２３に供給し、係数データＦ（ｍ）を係数決定部３２７に供給して、第ｍフレーム第１サンプル目の復号を開始する。
【００７３】
係数決定部３２７は、供給された係数データＦ（ｍ）を係数ＲＯＭ３２８のアドレス・ポインタとして係数データａ（Ｆ（ｍ））を読み出し、これを乗算器３２６の係数として設定する。
【００７４】
逆量子化部３２３は、前フレーム（第ｍ−１フレーム）の最終サンプル復号後に算出された量子化ステップ幅Δ（ｍ−１、９）を現フレームの最初のサンプルのステップ幅Δ（ｍ、０）とし、これに基づいて符号データＬ（ｍ、０）を逆量子化して予測差分ＤＱ（ｍ、０）を求め、これを加算器３２４に供給する。なお、この逆量子化は上述の表４に従って行われる。
【００７５】
また、加算器３２４は、前フレームの最終サンプル復号時に算出された予測値ＸＤ（ｍ−１、９）を現フレームの最初のサンプルにおける予測値ＸＤ（ｍ、０）として出力する。
【００７６】
一方、乗算器３２６は、上述のように係数が設定されると、次式に従ってレジスタＦ３２５に格納されている前フレームの最終サンプルの復号データＸＤ（ｍ−１、９）に係数を乗じたデータＸＰ２（ｍ、０）を求め、これを加算器３２４に供給する。
ＸＰ２（ｍ、０）＝ＸＤ（ｍ−１、９）×ａ（Ｆ（ｍ））    ・・・（１２）
【００７７】
加算器３２４は、このデータＸＰ２に上述のように求められた予測差分ＤＱ（ｍ、０）を加え、復号データＸＤ（ｍ、０）として出力する。
ＸＤ（ｍ、０）＝ＤＱ（ｍ、０）＋ＸＰ２（ｍ、０）        ・・・（１３）
【００７８】
また、ＲＯＭ読み出し部３２９は、デマルチプレクサ３２２から供給された符号データＬ（ｍ、０）に基づいて次のサンプルの量子化ステップ幅Δ（ｍ、１）を算出する。具体的には、ＲＯＭ読み出し部３２９は、供給された符号データＬ（ｍ、０）をアドレス・ポインタとして乗数ＲＯＭ３３０から乗数データＭ（Ｌ（ｍ、０））を読み出し、乗算器３３１に供給する。乗算器３３１は、ＲＯＭ読み出し部３２９から供給された乗数データＭ（Ｌ（ｍ、０））にレジスタＥ３３２に保持されている現サンプルの量子化ステップ幅Δ（ｍ、０）に乗じ、この結果を再びレジスタＥ３３２に格納する。この値は、次サンプルの量子化ステップ幅Δ（ｍ、１）となる。以下同様に、２番目以降のサンプルに対して復号化が行われる。
【００７９】
以上のように、この第１の実施形態では、予測符号化を行うための予測値に所定の乗数を乗じて補正を行い、複数のサンプルからなるフレ一ム単位で量子化誤差が最小となるように乗数を決定し、各フレームのデータに乗数を示す数ビット程度の情報を付加して符号化を行うため、圧縮率をそれほど低下させずに、量子化誤差を低減させて音質を向上させることができる。
【００８０】
以下、音質を客観的に計る指標として、例えば、平均セグメンタルＳＮ比ｓｅｇＳＮＲを用いて、この実施形態の符号化装置と従来の符号化装置で符号化を行った場合の音質を評価した結果について説明する。
【００８１】
平均セグメンタルＳＮ比ｓｅｇＳＮＲは、２５６サンプルを１ブロックとしてＳＮ比を算出し、ＳＢブロックに亙って平均を求めた値である。第ｉブロックにおけるＳＮ比ＳＮＲ（ｉ）は次式から求められる。
ＳＮＲ（ｉ）＝１０ｌｏｇ10（signal_power／noise_power ）・・・（１４）
【００８２】
また、signal_powerとnoise_powerは次式から求める。
【数３】
0003998330.tif 000008
【数４】
0003998330.tif 000009
【００８３】
さらに、次式より、ブロック内の平均を求めて平均セグメンタルＳＮ比とする。
【数５】
0003998330.tif 000010
【００８４】
サンプル波形としてスイープ正弦波（２０Ｈｚ〜２０ＫＨｚまで掃引した正弦波）を用いて評価を行った結果、以下の結果が得られた。なお、括弧内は１サンプルあたりのビット数である。
符号化装置                        平均セグメンタルＳＮ比ｓｅｇＳＮＲ
従来のＡＤＰＣＭ符号化（４ビット）                ４２．０ｄＢ
従来のＡＤＰＣＭ符号化（５ビット）                ４６．９ｄＢ
この実施形態のＡＤＰＣＭ符号化（４．４ビット）    ４５．７ｄＢ
この実施形態のＡＤＰＣＭ符号化（４．３ビット）    ４５．１ｄＢ
【００８５】
この実施形態のＡＤＰＣＭ符号化では、１０サンプルからなるフレーム当たり４ビットの情報、すなわち１サンプル当たり０．４ビットの情報を付加しただけで、従来の４ビットのＡＤＰＣＭ符号化に比較してＳＮ比を３．７ｄＢ改善することができる。また、他の楽音サンプルで試聴した場合、従来の４ビットのＡＤＰＣＭ符号化では気になっていた高周波部分の量子化雑音が極めて小さくなったように感じられ、従来の５ビットのＡＤＰＣＭ符号化と比較しても、ほぼ同等の音質が得られている。また、この実施形態のＡＤＰＣＭ符号化では、従来の５ビット符号化と比較して圧縮率が高くなっている。
【００８６】
ところで、上述の説明では係数データを１６通りに変化させていたため、１フレームにつき４ビットの情報を付加していたが、係数データを８通りに変化させるようにすれば、１フレーム当たり３ビット、すなわち１サンプル当たり０．３ビットの情報を付加するだけでよく、この場合でも従来の４ビットのＡＤＰＣＭに対してＳＮ比を３．１ｄＢ改善することができる。
【００８７】
なお、上述の説明では、１０サンプルで１フレームを構成したが、１フレームを構成するサンプル数はこれに限定されず、任意の数のサンプルで１フレームを構成しても、上述と同様な効果を得ることができる。また、予測値に乗じる係数の組み合わせは、上述の表４に限定されず、他の任意の値の組み合わせとすることができる。
【００８８】
また、上述の説明では、予測差分ＤＱ（ｍ、ｎ）、符号データＬ（ｍ、ｎ）、乗数データＭ（Ｌ（ｍ、ｎ））の関係を表４に示しているが、乗数データの値は音声の統計的な性質に基づいて経験的に定めたものであり、あくまで設定例である。従って、適宜変更することができ、例えば予測差分ＤＱ（ｎ）と符号データＬ（ｎ）の関係も１対１に対応するものであればこの表４に示すものに限定されない。
【００８９】
また、上述の説明では、乗算器の係数の設定例を表３に示しているが、実験で好ましい結果が得られ値を設定しただけであり、適宜変更することができる。
【００９０】
また、この実施形態では、フレーム長を１０サンプル、係数を１６種類とした場合について説明しているが、これらに限定されるものではなく、伝送路のビットレート、記憶媒体の容量等に応じて適宜変更することも可能である。ただし、実験の結果、以下の値が最適であると思われる。
ビットレート          最適設定
４．４ビット／サンプル      フレーム長１０サンプル、係数１６種類
４．３ビット／サンプル      フレーム長１４サンプル、係数１６種類
４．２ビット／サンプル      フレーム長１５サンプル、係数８種類
４．１ビット／サンプル      フレーム長３０サンプル、係数８種類
【００９１】
また、上述の図１では、予測値の補正を行うために設けた乗算器３０９は、ハードウェア規模を小さくするために、ビットシフト及び加算をするための構成とすることもできる。このような構成とした場合、上述のように係数を２の累乗分の１（例えば１／２６＝１／６４）とすることが望ましい。例えば予測値Ａに６３／６４（０．１１１１１１［２進］）を乗じて補正を行う場合、乗算を行わないで、(A>>6)+(A>>5)+(A>>4)+(A>>3)+(A>>2)+(A>>1)、（A>>nはＡをｎビット右にシフト、すなわちＡに２ｎ分の１を乗じたものとする。）を求めればよい。
【００９２】
また、上述の説明では、予測値補正のための乗算器の係数を、フレーム内の累計量子化誤差が最小となる係数を選択することにより決定しているが、フレーム内のサンプル毎に量子化誤差を求め、フレーム内で最大の量子化誤差が最小となる係数を選択することによって決定しても良い結果が得られている。
【００９３】
また、上述の説明では、累計量子化誤差が最小となる乗算器の係数の選択のために、係数を変えてフレーム処理を繰り返し実行しているが、このフレーム処理を繰り返す際に、それ以前のフレームまでの累計量子化誤差の最小値を超えたとき、すなわち、上述の図６中のステップＳ１４１において、累積量子化誤差εｓｕｍがεｍｉｎ（図５中で用いられる最小値を保持するための変数等）を超えたときに、図６のフレーム処理を終了させる処理を行ってもよい。このような処理により、無駄な演算を省略することができ、処理速度の向上に寄与することができる。
【００９４】
また、上述の説明では、図５中で、レジスタＢの初期値を８、レジスタＤの初期値を０としているが、これらに限定されるものではなく、適宜変更することができる。ただし、一般的に、符号化開始直後の入力サンプルのレベルは小さいと考えられるので、これらの初期値が適していると思われる。
【００９５】
第２の実施形態
図８は、本発明の符号化装置を適用した第２の実施形態に係るＡＤＰＣＭ符号化復号化装置を示すブロック図である。
【００９６】
上述の第１の実施形態では、フレーム単位で予測値の補正を行うパラメータ（乗数）を順次変化させて符号化処理を試行し、フレーム内で累計量子化誤差が最小となるパラメータを選択し、このパラメータを示す情報を符号化されたデータと多重化して伝送することによって、圧縮率の低下防止と量子化誤差の低減の両立を図ったが、この第２の実施形態では、予測値の補正を行う代わりにフレーム内で量子化ノイズが聴感上少なくなるように量子化ステップ関数を最適化している。
【００９７】
この符号化復号化装置は、入力された音声信号を符号化する符号化処理部５０１と、伝送路あるいは記憶媒体５１９を介して供給された符号化データから音声信号を再生する復号化処理部５２０とからなる。
【００９８】
符号化処理部５０１は、入力された音声信号のサンプルＸ（ｍ、ｎ）と予測値ＸＰ（ｍ、ｎ）との予測差分Ｄ（ｍ、ｎ）を求める加算器５０２と、この加算器５０２によって求められた予測差分Ｄ（ｍ、ｎ）を量子化する量子化部５０３と、量子化部５０３の量子化出力（量子化予測差分）ＤＱ（ｍ、ｎ）を符号化する符号化部５０４と、復号化部５０５、加算器５０６、レジスタ５０７、５０８等を有し、予測値ＸＰ（ｍ、ｎ）を求める予測系と、カウンタ５０９、ステップ関数ＲＯＭ５１０、最大量子化誤差算出部５１１、ステップ関数決定部５１２等を有し、量子化部５０３が量子化に用いるステップ関数を決定するステップ関数決定系と、ＲＯＭ読み出し部５１３、乗数ＲＯＭ５１４等を有し、量子化ステップΔ(ｍ、ｎ)を決定する量子化ステップ決定系等を備えている。
【００９９】
加算器５０２によって求められた予測差分Ｄ（ｍ、ｎ）は、量子化部５０３と最大量子化誤差算出部５１１に供給される。量子化部５０３は、後述のレジスタＡ５１６の出力である量子化ステップ幅Δ（ｍ、ｎ）を用いて予測差分Ｄ（ｍ、ｎ）を量子化し、その出力結果である量子化後の予測差分ＤＱ（ｍ、ｎ）を符号化部５０４と最大量子化誤差算出部５１１に供給する。量子化は後述のように、ステップ関数ＲＯＭ５１０に数種類用意されている量子化ステップ関数の中から１つを選択し、これに従って行われる。最大量子化誤差算出部５１１は、予測差分Ｄ（ｍ、ｎ）と量子化予測差分ＤＱ（ｍ、ｎ）から、所定数のサンプルからなるフレーム毎に量子化誤差の絶対値が最大となるサンプルを検出し、後述する数種類のステップ関数の内のいずれを選択すると最大量子化誤差が最小となるかを判定する。この最大量子化誤差算出部５１１の動作については後述する。
【０１００】
符号化部５０４は、供給された量子化予測差分ＤＱ（ｍ、ｎ）を伝送又は蓄積するための符号データＬ（ｍ、ｎ）に変換し、その結果をマルチプレクサ５１８とＲＯＭ読み出し部５１３と復号化部５０５に供給する。復号化部５０５は、供給された符号データＬ（ｍ、ｎ）を復号化し、復号結果ＤＱ（ｍ、ｎ）を加算器５０６に供給する。なお、復号化部５０５の出力と量子化部５０３の出力は同一のデータであるので、復号化部５０５を省略し、図８中に破線で示すように量子化部５０３の出力を直接加算器５０６に供給する構成としてもよい。
【０１０１】
加算器５０６は、先に予測差分Ｄ（ｍ、ｎ）を求める際に用いた予測値ＸＰ（ｍ、ｎ）と量子化予測差分ＤＱ（ｍ、ｎ）を加算し、この結果をレジスタＣ５０７に格納する。レジスタＣ５０７に格納されたデータは、次サンプルの処理において用いられるデータであり、予測値ＸＰ（ｍ、ｎ＋１）として加算器５０２と加算器５０６に供給される。
【０１０２】
カウンタ５０９は、１フレーム（１０サンプル）毎にカウント値を１増加させ、このカウント値をステップ関数決定部５１２に供給する。このカウント値は、量子化ステップ関数ＲＯＭ５１０のアドレス・ポインタとなっている。量子化ステップ関数ＲＯＭ５１０には、例えば図９に示すような１６種類の量子化ステップ関数が格納されている。量子化部５０３には、これらのステップ関数の中からいずれかが選択されて供給され、これに従って量子化が行われる。
【０１０３】
この図９では、図中の矢印が量子化対象となる差分Ｄ（ｍ、ｎ）の範囲を示しており、差分Ｄ（ｍ、ｎ）が矢印の範囲内にあるとき、量子化差分ＤＱ（ｍ、ｎ）は、丸印で示した位置の値となる。また、丸印内に示す数値は、量子化差分ＤＱ（ｍ、ｎ）を符号化したデータＬ（ｍ、ｎ）を１０進数で示したものである。なお、この図９は、簡略化のために差分Ｄ（ｍ、ｎ）が正の値である場合のみ示してあるが、実際の量子化ステップ関数は、上述の式（２）と同様に、差分Ｄ（ｍ、ｎ）が負の値である場合に対しても定義されている。例えばＳ（ｍ）が０（００００）である場合に対応する量子化ステップ関数は上述の式（２）と同様であり、等間隔で量子化範囲が定められている。これに対し、Ｓ（ｍ）が０以外である場合に対応する量子化ステップ関数では、量子化範囲を非等間隔に設定している。
【０１０４】
例えばＳ（ｍ）が２（００１０）である場合に対応する量子化ステップ関数は次式で示される。
DQ(m、n) =  13Δ(m、n)/8  ( 12Δ(m、n)/8 ≦ D(m、n) )
DQ(m、n) =  11Δ(m、n)/8  ( 10Δ(m、n)/8 ≦ D(m、n) ＜ 12Δ(m、n)/8)
DQ(m、n) =   9Δ(m、n)/8  (  8Δ(m、n)/8 ≦ D(m、n) ＜ 10Δ(m、n)/8)
DQ(m、n) =   7Δ(m、n)/8  (  6Δ(m、n)/8 ≦ D(m、n) ＜ 8Δ(m、n)/8)
DQ(m、n) =   5Δ(m、n)/8  (  4Δ(m、n)/8 ≦ D(m、n) ＜ 6Δ(m、n)/8)
DQ(m、n) =   3Δ(m、n)/8  (  2Δ(m、n)/8 ≦ D(m、n) ＜ 4Δ(m、n)/8)
DQ(m、n) =   3Δ(m、n)/16 (   Δ(m、n)/8 ≦ D(m、n) ＜ 2Δ(m、n)/8)
DQ(m、n) =    Δ(m、n)/16 (            0 ≦ D(m、n) ＜  Δ(m、n)/8)
DQ(m、n) =   -Δ(m、n)/16 (  -Δ(m、n)/8 ≦ D(m、n) ＜ 0 )
DQ(m、n) =  -3Δ(m、n)/16 ( -2Δ(m、n)/8 ≦ D(m、n) ＜ -Δ(m、n)/8)
DQ(m、n) =  -3Δ(m、n)/8  ( -4Δ(m、n)/8 ≦ D(m、n) ＜ -2Δ(m、n)/8)
DQ(m、n) =  -5Δ(m、n)/8  ( -6Δ(m、n)/8 ≦ D(m、n) ＜ -4Δ(m、n)/8)
DQ(m、n) =  -7Δ(m、n)/8  ( -8Δ(m、n)/8 ≦ D(m、n) ＜ -6Δ(m、n)/8)
DQ(m、n) =  -9Δ(m、n)/8  (-10Δ(m、n)/8 ≦ D(m、n) ＜ -8Δ(m、n)/8)
DQ(m、n) = -11Δ(m、n)/8  (-12Δ(m、n)/8 ≦ D(m、n) ＜ -10Δ(m、n)/8)
DQ(m、n) = -13Δ(m、n)/8  (                 D(m、n) ＜ -12Δ(m、n)/8)
・・・（１８）
【０１０５】
量子化ステップ関数ＲＯＭ５１０に格納されたステップ関数の内のどのステップ関数を量子化ステップ関数として選択するかは１６値カウンタであるカウンタ５０９あるいは最大量子化誤差算出部５１１に基づいてステップ関数決定部５１２が決定する。また、選択されたステップ関数を示すデータはＳ（ｍ）としてＲＯＭ読み出し部５１３、マルチプレクサ５１８に供給される。
【０１０６】
乗数ＲＯＭ５１４には、第１の実施形態と異なり、表５に示すような乗数が格納されている。ＲＯＭ読み出し部５１３は、選択されたステップ関数を示すデータＳ（ｍ）と符号データＬ（ｍ、ｎ）をアドレス・ポインタとして乗数ＲＯＭ５１４から乗数を読み出し、これに基づいて次サンプル（ｎ＋１）の量子化ステップ幅を更新する。
【表５】
0003998330.tif 000011
【０１０７】
入力された音声信号のサンプル毎に上述のような処理が繰り返される。
【０１０８】
上述の量子化ステップ関数決定部５１２による量子化ステップ関数の決定は、例えば量子化ステップ関数を順次変更して各フレームの符号化処理を１６回繰り返して実行し、フレーム内で絶対値が最大の量子化誤差（最大量子化誤差）が最小となる量子化ステップ関数を選択することによって行う。すなわち、１フレーム（１０サンプル）のデータに対して、１６０回の符号化処理を施して最適な量子化ステップ関数を算出することになる。カウンタ５０９は、この１６回のフレーム処理を制御するためのものであり、同時に量子化ステップ関数の設定制御を行っている。
【０１０９】
ステップ関数決定部５１２は、１回目のフレーム処理ではカウンタ５０９のカウント値０すなわち図９中のデータＳ（ｍ）が０（００００）である場合に対応する量子化ステップ関数を量子化部５０３に設定し、２回目以降のフレーム処理では、順次カウントアップされるカウンタ５０９のカウント値１、２、３・・・すなわち図９中のデータＳ（ｍ）が１（０００１）、２（００１０）、３（００１１）、・・・である場合に対応する量子化ステップ関数を順次量子化部５０３に設定する。
【０１１０】
また、このような量子化ステップ関数の変更に伴い、最大量子化誤差算出部５１１は、１フレーム分の１０サンプルに対して符号化処理を行った際の最大量子化誤差を保持しており、１６回のフレーム処理の中で最大量子化誤差が最小となった量子化ステップ関数を量子化部５０３に供給する。量子化部５０３は、この最適な量子化ステップ関数を用いて、再度フレーム処理を実行し、ここで初めて符号データＬ（ｍ、ｎ）とステップ関数データＳ（ｍ）がマルチプレクサ５１８に供給される、マルチプレクサ５１８は、供給された符号データＬ（ｍ、ｎ）とステップ関数データＳ（ｍ）を多重化して伝送路５１９に送出する。
【０１１１】
なお、レジスタＡ５１６に接続されたレジスタＢ５１７とレジスタＣ５０７に接続されたレジスタＤ５０８はそれぞれの退避用レジスタであり、上述の１６回のフレーム処理を行う前に初期値を設定するために用いられる。
【０１１２】
また、復号化処理部５２０は、符号化された音声データＬ（ｍ、ｎ）を逆量子化する逆量子化部５２２と、逆量子化出力に予測値ＸＰ（ｍ、ｎ）を加算して音声データＸＤ（ｍ、ｎ）を再生する加算器５２３と、予測値ＸＰ（ｍ、ｎ）を保持するレジスタＦ５２４と、ステップ関数ＲＯＭ５２５、ステップ関数決定部５２６等を有し、逆量子化部５２２が逆量子化に用いるステップ関数を決定するステップ関数決定系と、乗数ＲＯＭ５２７、ＲＯＭ読み出し部５２８等を有し、量子化ステップΔ(ｍ、ｎ)を決定する量子化ステップ決定系等を備えている。
【０１１３】
伝送路５１９を介して供給されたデータは、デマルチプレクサ５２１に供給され、符号データＬ（ｍ、ｎ）とステップ関数データＳ（ｍ）に分離される。符号データＬ（ｍ、ｎ）はＲＯＭ読み出し部５２８と逆量子化部５２２に供給され、ステップ関数データＳ（ｍ）はステップ関数決定部５２６とＲＯＭ読み出し部５２８に供給される。
【０１１４】
ステップ関数決定部５２６は、供給されたステップ関数データＳ（ｍ）は、これをアドレス・ポインタとして用い、量子化ステップ関数ＲＯＭ５２５から対応するステップ関数を読み出し、逆量子化部５２２に設定する。なお、量子化ステップ関数ＲＯＭ５２５の内容は符号化時に用いた量子化ステップ関数ＲＯＭ５１０と同一のものである。
【０１１５】
逆量子化部５２２に供給された符号データＬ（ｍ、ｎ）は、レジスタＥ５３０の出力である量子化ステップ幅Δ（ｍ、ｎ）で逆量子化され、この結果が加算器５２３に供給される。逆量子化はステップ関数決定部５２６から供給された量子化ステップ関数に従って行われる。加算器５２３は、逆量子化部５２２から供給された予測差分ＤＱ（ｍ、ｎ）と、レジスタＦ５２４の出力を加算し、その結果を復号データＸＤ（ｍ、ｎ）として出力する。この復号データＸＤ（ｍ、ｎ）は、レジスタＦ５２４にも供給されて保持される。このレジスタＦ５２４に保持された復号データは次サンプルの復号時に、予測値ＸＰ（ｍ、ｎ＋１）として用いられる。
【０１１６】
一方、ＲＯＭ読み出し部５２８に供給された符号データＬ（ｍ、ｎ）とステップ関数データＳ（ｍ）は、次サンプルの量子化ステップ幅Δ（ｍ、ｎ＋１）を決定するために用いられる。この量子化ステップ幅Δ（ｍ、ｎ＋１）の決定は、符号化時と同様に、符号データＬ（ｍ、ｎ）とステップ関数データＳ（ｍ）に対応する乗数を読み出し、これを前サンプルの量子化ステップ幅Δ（ｍ、ｎ＋１）に乗じることによって行う。
【０１１７】
以下、上述のように構成されたＡＤＰＣＭ符号化復号化装置の動作を説明する。
【０１１８】
符号化処理部５０１は、図１０に示すフローチャートに従って動作し、１フレームすなわち入力データの１０サンプル毎に、最適な量子化ステップ関数を決定し、この量子化ステップ関数を用いて符号化したデータに、量子化ステップ関数を示す情報を付加して送信あるいは記録する。
【０１１９】
具体的には、図１０中のステップＳ１５０〜Ｓ１５２において、フレームをカウントするカウンタｍ、レジスタＢ５１７、レジスタＤ５０８の初期設定を行い、ステップＳ１５３で最大量子化誤差の最小値を保持する変数（εｍａｘｍｉｎ）の初期設定を行う。変数εｍａｘｍｉｎの値としては、例えば通常の符号化ではありえない大きい値（この場合では、１×１０５０）を設定する。
【０１２０】
そして、ステップＳ１５４で１０個のサンプルを入力し、続くステップＳ１５５において入力が終了したか否かを判定し、入力が終了していれば終了し、入力が終了していなければステップＳ１５６に進む。ステップＳ１５６では、量子化ステップ関数を変化させる回数をカウントするカウンタ５０９をリセットし、続くステップＳ１５７において、ステップ関数決定部５１２は係数ＲＯＭ５１０からカウンタ５０９のカウント値Ｓ（ｍ）に対応するアドレスから量子化ステップ関数を読み出し、続くステップＳ１５８でフレーム処理（１フレーム分のサンプルを符号化し、フレーム単位の最大量子化誤差εｍａｘ（ｍ、Ｓ（ｍ））［フローチャート中では単にεｍａｘとして示す。］を求める処理）を実行し、ステップＳ１５９に進む。
【０１２１】
ステップＳ１５９では、直前のフレーム処理によって求められた最大量子化誤差εｍａｘ（ｍ、Ｓ（ｍ））が誤差の最小値εｍａｘｍｉｎより小さいか否かを判定し、該当しなければそのままステップＳ１６２に進み、該当すればステップＳ１６０において、εｍａｘ（ｍ、Ｓ（ｍ））を誤差の最小値εｍａｘｍｉｎとし、ステップＳ１６１で最適カウント値をこのときのカウンタ５０９のカウント値Ｓ（ｍ）とした後、ステップＳ１６２に進む。ステップＳ１６２では、カウント値を１増加させ、ステップＳ１６３に進む。
【０１２２】
ステップＳ１６３では、カウント値が１６以上であるか否か、すなわち、量子化ステップ関数を順次変化させてフレーム処理を１６回実行したか否かを検出し、該当すればステップＳ１６４に進み、該当しなければステップＳ１５７に戻り、ステップＳ１５７〜Ｓ１６２までの処理を繰り返す。
【０１２３】
これにより、カウント値が１ずつ増加されながらステップＳ１５７〜Ｓ１６３までの処理が繰り返され、カウント値Ｓ（ｍ）が０〜１５の場合について合計で１６回のフレーム処理が実行され、１６通りの量子化ステップ関数を用いた際の最大量子化誤差εｍａｘ（ｍ、Ｓ（ｍ））が算出され、この誤差の最小値とそのときのカウント値がそれぞれ最小値εｍａｘｍｉｎ、最適カウント値として求められる。
【０１２４】
上述のように１６回のフレーム処理が終了し、ステップＳ１６４に進むと、最大量子化誤差算出部５１１は、最小値εｍａｘｍｉｎに基づいて、最大量子化誤差εｍａｘ（ｍ、Ｓ（ｍ））が最小となるカウント値Ｓ（ｍ）を決定し、これをステップ関数決定部５１２に供給する。ステップ関数決定部５１２は、ステップＳ１６５において、ステップ関数ＲＯＭ５１０を参照し、供給されたカウント値Ｓ（ｍ）に対応するステップ関数を読み出して量子化部５０３の係数として設定する。そして、ステップＳ１６６において、このステップ関数を用いて再びフレーム処理を行う。この後、ステップＳ１６７においてレジスタＡ５１６の値をレジスタＢ５１７に転送し、ステップＳ１６８においてレジスタＣ５０７の値をレジスタＤ５０８に転送した後、ステップＳ１６９において、このフレーム処理において符号化部５０４から出力される符号データＬ（ｍ、ｎ）とステップ関数決定部５１２により選択されたステップ関数を示すカウント値Ｓ（ｍ）が、マルチプレクサ５１８で多重化されて伝送路５１９に送信される。そして、ステップＳ１７０においてフレームをカウントするカウンタｍの値に１が加算され、次のフレームに対して上述と同様のステップＳ１５３以降の処理が開始される。
【０１２５】
このような符号化によって符号化処理部５０１から送信されるデータは、１サンプル当たり４ビットの符号化の場合、１フレーム分の１０サンプル（４０ビット）ステップ関数を示すデータＳ（ｍ）の４ビットが加わるため、１フレーム当たり４４ビット、すなわち１サンプル当たり４．４ビットの情報量となる。
【０１２６】
上述のステップＳ１５８、Ｓ１６６に対応するフレーム処理は、図１１に示すフローチャートに従って実行される。
【０１２７】
フレーム処理が開始されると、符号処理部５０１は、まず、ステップＳ１８０、Ｓ１８１においてサンプル数をカウントするカウンタｎ、最大量子化誤差εｍａｘ（ｍ、Ｓ（ｍ））［フローチャート中ではεｍａｘとして示す。］をリセットする。
【０１２８】
次に、ステップＳ１８２、Ｓ１８３において量子化ステップ幅退避用レジスタであるレジスタＢ５１７の内容をレジスタＡ５１６に転送し、予測値退避用レジスタであるレジスタＤ５０８の内容をレジスタＣ５０７に転送する。レジスタＢ５１７、レジスタＤ５０８には、それぞれ前フレームの最終サンプルを符号化した結果、すなわち、第ｍ−１フレームの１０サンプル目（ｎ＝９）を符号化した結果、算出された量子化ステップ幅Δ（ｍ−１、９）と予測値ＸＰ（ｍ−１、９）が格納されているので、これらの値により各レジスタを初期化する。すなわち、
ＸＰ（ｍ、０）＝ＸＰ（ｍ−１、９）                      ・・・（１９）
Δ（ｍ、０）＝Δ（ｍ−１、９）                          ・・・（２０）
という処理を行う。
【０１２９】
この後、ステップＳ１８４において、加算器５０２は、次式に従って第ｎサンプル目における予測差分Ｄ（ｍ、ｎ）を求める。
Ｄ（ｍ、ｎ）＝Ｘ（ｍ、ｎ）−ＸＰ（ｍ、ｎ）              ・・・（２１）
【０１３０】
このように算出された予測差分Ｄ（ｍ、ｎ）は、ステップＳ１８５において、量子化部５０３により量子化される。この量子化は上述のように図９に示されたいずれかの量子化ステップ関数に従って行われる。
【０１３１】
これらの量子化ステップ関数のうち、Ｓ（ｍ）が０以外の場合に対応するものは、量子化範囲を非等間隔に設定しており、間隔の狭い部分で量子化を行えば量子化誤差が小さくなることが期待できる。例えば上述の式（１８）に従って量子化が行われた場合、予測差分Ｄ（ｍ、ｎ）の絶対値が０〜２Δ（ｍ、ｎ）／８の範囲に多く発生すると、量子化誤差が低減されることが期待できる。従って、上述のように、量子化ステップ関数を変更して繰り返しフレーム処理を行うことにより、量子化誤差が小さくなる最適な量子化ステップ関数を判断することができる。
【０１３２】
さらに、ステップＳ１８６において、最大量子化誤差算出部５１１は、次式に従って量子化の結果から量子化誤差をεを求める。
ε（ｍ、Ｓ（ｍ））＝ａｂｓ（Ｄ（ｍ、ｎ）−ＤＱ（ｍ、ｎ））
・・・（２２）
【０１３３】
また、符号化部５０４は、ステップＳ１８７において、量子化された予測差分ＤＱ（ｍ、ｎ）を符号化する。この符号化は上述の図９中の量子化ステップ関数のうちの選択されているものに対応する規則に従って実行される。具体的には、図９中に丸の位置として示された予測差分に対応させて丸の中に記載された符号が割り当てられる。符号化されたデータＬ（ｍ、ｎ）は、次のサンプルの量子化ステップ幅Δ（ｍ、ｎ＋１）を算出するためにＲＯＭ読み出し部５１３に供給され、同時に、次のサンプルの予測値ＸＰ（ｍ、ｎ＋１）を算出するために復号化部５０５に供給される。
【０１３４】
復号化部５０５に供給された符号データＬ（ｍ、ｎ）は図９中の量子化ステップ関数のうちの選択されているものに対応する規則に従って復号が行われ、ＤＱ（ｍ、ｎ）が得られる。なお、復号化部５０５の出力と量子化部５０３の出力は同一のデータであるので、図８中に破線で示すように復号化部５０５を省略して量子化部５０３の出力を直接加算器５０６に供給してもよい。
【０１３５】
ステップＳ１８８において、加算器５０６は、次式に従って量子化後の予測差分ＤＱ（ｍ、ｎ）から次のサンプルの予測値を求め、これをレジスタＣ５０７に格納する。
ＸＰ（ｍ、ｎ）＝ＤＱ（ｍ、ｎ）＋ＸＰ（ｍ、ｎ）          ・・・（２３）
【０１３６】
一方、ＲＯＭ読み出し部５１３は、ステップＳ１８９において、符号化部５０４の符号データＬ（ｍ、ｎ）とステップ関数決定部５１２のステップ関数を示すデータＳ（ｍ）とをアドレス・ポインタとして乗数ＲＯＭ５１４から乗数データＭ（Ｌ（ｍ、ｎ））を読み出す。上述の表５に示すように、例えばＬ（ｍ、ｎ）が００１１、Ｓ（ｍ）が０（００００）である場合には乗数として０．９が読み出される。読み出された乗数データＭ（Ｌ（ｍ、ｎ））は乗算器５１５供給される。ステップＳ１９０において、乗算器５１５は、上述の式（１０）に従って、供給された乗数データＭ（Ｌ（ｍ、ｎ））を現在の量子化ステップΔ（ｍ、ｎ）に乗じて次のサンプルの量子化ステップΔ（ｍ、ｎ＋１）を求め、これをレジスタＡ５１６に保持する。
【０１３７】
さらに、ステップＳ１９１では、最大量子化誤差算出部５１１は、現在のサンプルの量子化誤差εがそれまでの最大量子化誤差εｍａｘより大きいか否かを検出し、該当しなければそのままステップＳ１９３に進み、該当する場合はステップＳ１９２においてεをεｍａｘとした後ステップＳ１９３に進む。
【０１３８】
ステップＳ１９３では、カウンタｎの値に１を加え、ステップＳ１９４に進む。ステップＳ１９４では、カウンタｎの値が１０以上であるか否か、すなわち１フレームの１０サンプル分の符号化が終了したか否かを判定し、該当すればフレーム処理を終了し、該当しなければ、ステップＳ１８４に戻る。これにより、１フレーム分の１０サンプルに対して上述のステップＳ１８４〜Ｓ１９３の処理が繰り返される。
【０１３９】
１０サンプルの処理が終了すると、ステップＳ１９４でカウント値ｎが１０以上になったことが検出され、フレーム処理が終了する。このフレーム処理が終了した際、εｍａｘは、当該フレーム中の各サンプル毎の量子化誤差εのうち最大のもの、すなわち次式で表される最大量子化誤差となっている。
εｍａｘ（ｍ、Ｓ（ｍ））＝ＭＡＸ（ａｂｓ（Ｄ（ｍ、ｎ）−ＤＱ（ｍ、ｎ）））                                                      ・・・（２４）
なお、ｎは０〜９までの値である。
【０１４０】
復号処理部５２０では、伝送路５１９を介して受信した、あるいは記録媒体から再生した１フレーム分のデータを受け取ると、デマルチプレクサ５２１が、符号データＬ（ｍ、ｎ）とステップ関数を示すデータＳ（ｍ）を分離し、符号データＬ（ｍ、ｎ）をＲＯＭ読み出し部５２８と逆量子化部５２２供給し、ステップ関数を示すデータＳ（ｍ）をステップ関数決定部５２６とＲＯＭ読み出し部５２８に供給する。
【０１４１】
ステップ関数決定部５２６は、供給されたステップ関数データＳ（ｍ）をアドレス・ポインタとし、量子化ステップ関数ＲＯＭ５２５からステップ関数を読み出し、これを逆量子化部５２２の量子化ステップ関数として設定する。
【０１４２】
まず、逆量子化部５２２は、前フレームの最終サンプル復号後に設定された量子化ステップ幅Δ（ｍ、ｎ）で符号データＬ（ｍ、ｎ）の逆量子化を行い、その出力結果ＤＱ（ｍ、ｎ）を加算器５２３に供給する。この逆量子化は、上述の図９に示された規則に従って行われる。
【０１４３】
加算器５２３は、次式に従って、前サンプル復号時に算出された予測値すなわちレジスタＦ５２４に保持されている値を逆量子化部５２２の出力に加え、復号データＸＤ（ｍ、ｎ）を生成して出力する。
ＸＤ（ｍ、ｎ）＝ＤＱ（ｍ、ｎ）＋ＸＰ（ｍ、ｎ）          ・・・（２５）
【０１４４】
また、ＲＯＭ読み出し部５２８は、供給された符号データＬ（ｍ、ｎ）とステップ関数を示すデータＳ（ｍ）を乗数ＲＯＭ５２７のアドレス・ポインタとして用いて乗数を読み出し、乗算器５２９に供給する。乗算器５２９は、供給された乗数を現サンプルの量子化ステップ幅Δ（ｍ、ｎ）に乗じ、次サンプルの量子化ステップ幅Δ（ｍ、ｎ＋１）を求め、これをレジスタ５３０に格納する。このように量子化ステップ幅の更新が行われる。以下同様に、１フレーム分のサンプルに対して復号化が行われる。
【０１４５】
以上のように、この第２の実施形態では、量子化ステップ関数を複数有し、数サンプルを１つの単位としたフレーム内での最大量子化誤差が最小となるように量子化ステップ関数を選択し、各フレームのデータに量子化ステップ関数を指定するための数ビットの情報を付加して符号化を行うため、圧縮率をそれほど低下させずに、量子化誤差を低減させて音質を向上させることができる。
【０１４６】
例えばフレーム内において予測差分Ｄ（ｍ、ｎ）の絶対値があまり変動しない場合には、量子化ステップ幅Δ（ｍ、ｎ）もあまり変動しないことになるが、予測差分Ｄ（ｍ、ｎ）付近の量子化ステップを細かく設定すれば量子化誤差が小さくなることは明らかである。従って、上述のように、複数の量子化ステップ関数から最適なものを選択して符合化することにより、量子化誤差を低減させ、音質を向上させることができる。
【０１４７】
以下、音質を客観的に計る指標として、例えば上述の平均セグメンタルＳＮ比ｓｅｇＳＮＲを用いて、この実施形態の符号化装置と従来の符号化装置で符号化を行った場合の音質を評価した結果について説明する。第１の実施形態と同様に、サンプル波形としてスイープ正弦波（２０Ｈｚ〜２０ＫＨｚまで掃引した正弦波）を用いて評価を行った結果、以下の結果が得られた。なお、括弧内は１サンプルあたりのビット数である。
符号化装置                        平均セグメンタルＳＮ比ｓｅｇＳＮＲ
従来のＡＤＰＣＭ符号化（４ビット）                ４２．０ｄＢ
従来のＡＤＰＣＭ符号化（５ビット）                ４６．９ｄＢ
この実施形態のＡＤＰＣＭ符号化（４．４ビット）    ４８．２ｄＢ
【０１４８】
この実施形態のＡＤＰＣＭ符号化では、１０サンプルからなるフレーム当たり４ビットの情報、すなわち１サンプル当たり０．４ビットの情報を付加しただけで従来の４ビットのＡＤＰＣＭ符号化に比較してＳＮ比を６．２ｄＢ改善することができる。また、従来の従来の５ビットのＡＤＰＣＭ符号化と比較してもＳＮ比を１．３ｄＢ改善することができる。
【０１４９】
また、上述の説明ではフレーム長を１０サンプルとしたが、フレーム毎に付加する情報は１フレームあたり４ビットに固定されているのでフレーム長が長くなるほどビットレートを低減することができる。例えば１フレームを２０サンプル、３０サンプルとした場合には、ＳＮ比は以下のようになった。
符号化装置                        平均セグメンタルＳＮ比ｓｅｇＳＮＲ
２０サンプル／フレーム（４．２ビット）            ４７．６ｄＢ
３０サンプル／フレーム（４．１３ビット）          ４７．４ｄＢ
【０１５０】
すなわち、１フレームを３０サンプルとし、１サンプル当たり０．１３ビットの情報を増加するだけで従来の５ビットのＡＤＰＣＭ符号化よりも良いＳＮ比が得られた。
【０１５１】
また、他の楽音サンプルで試聴した場合、従来の４ビットのＡＤＰＣＭ符号化では気になっていた高周波部分の量子化雑音が極めて小さくなったように感じられ、従来の５ビットのＡＤＰＣＭ符号化と比較しても、ほぼ同等の音質が得られている。
【０１５２】
なお、上述の説明では、符号データＬ（ｍ、ｎ）と乗数データＭ（Ｌ（ｍ、ｎ））の関係を表５に示しているが、この表５に示した乗数データは音声の統計的な性質に基づいて経験的に定めたものであり、あくまで設定例である。従って、適宜変更することができる。
【０１５３】
また、ステップ関数の例を、図９中に１６種類示しているが、取り得るステップ関数のパターンはこれらに限定されず適宜変更することができるが、実験によると、これらのステップ関数を用いる方が良いＳＮ比が得られている。
【０１５４】
また、上述の説明では、量子化ステップ関数の決定を、フレーム内の最大量子化誤差が最小となるステップ関数を選択することによって行っているが、上述の第１の実施形態と同様に、フレーム内の累計量子化誤差が最小となるステップ関数を選択することによって行っても良い。しかしながら、試聴実験を行ってみると、累計量子化誤差が最小であるステップ関数を選択した場合であっても、特定のサンプルにおいて極めて大きな量子化誤差が発生する場合があり、この場合には「プチプチ」という異音が発生し、聴感上良くない。このため、この実施形態では最大量子化誤差が最小となるステップ関数を選択するようにしている。
【０１５５】
また、この実施形態では、フレーム長を１０サンプル、ステップ関数を１６種類とこれらの数等は適宜変更することができ、例えば伝送路のビットレート、記憶媒体の容量等に応じて変更することもできる。
【０１５６】
また、図１０中においてレジスタＢの初期値を８、レジスタＤの初期値を０としているが、これらに限定されるものではなく、適宜変更することができる。ただし、一般的に、符号化開始直後の入力サンプルのレベルは小さいと考えられるので、これらの初期値が適していると思われる。
【０１５７】
第３の実施形態
図１２は、本発明の符号化装置を適用した第３の実施形態に係るＡＤＰＣＭ符号化復号化装置を示すブロック図である。
【０１５８】
上述の第１、第２の実施形態では、数サンプルからなるフレーム単位で、符号化のパラメータ（乗数、量子化ステップ関数）を順次変化させて符号化処理を試行し、フレーム内で累計量子化誤差あるいは最大量子化誤差が最小となるパラメータを選択し、このパラメータを示す情報を符号化されたデータと多重化して伝送することによって、圧縮率の低下防止と量子化誤差の低減の両立を図っていたが、これらの方法では、最適となるパラメータを判定するために同一入力に対する符号化処理を何回か試行して実行しなければならず処理時間が増加してしまう。このため、この第３の実施形態では処理時間の増加を伴わない音質改善方法を提案する。
【０１５９】
また、上述の図４から明らかなように、予測差分Ｄ（ｎ）の絶対値が１４Δ（ｎ）／８以上である場合、量子化を施した値ＤＱ（ｎ）は１５Δ（ｎ）／８となる。このため、予測差分Ｄ（ｎ）の絶対値が１４Δ（ｎ）／８より小さい場合の量子化誤差ε（ｎ）［＝ａｂｓ（Ｄ（ｎ）−ＤＱ（ｎ））］は高々Δ（ｎ）／８以下であるが、予測差分Ｄ（ｎ）の絶対値が１４Δ（ｎ）／８以上である場合には、量子化誤差ε（ｎ）がこれ以上の値となってしまう。従って、予測差分Ｄ（ｎ）の絶対値が１４Δ（ｎ）／８に比較して極めて大きく、例えば２Δ（ｎ）以上となった場合には量子化誤差ε（ｎ）が極めて大きくなってしまい、聴感上悪影響を与える可能性がある。
【０１６０】
このため、この第３の実施形態では、量子化誤差の増加を抑えるために、予測差分が大きくなったときに、量子化誤差（ａｂｓ（Ｄ（ｎ）−ＤＱ（ｎ））を再度符号化するようにしている。
【０１６１】
この符号化復号化装置は、入力された音声信号を符号化する符号化処理部８０１と、伝送路あるいは記憶媒体８１６を介して供給された符号化データから音声信号を再生する復号化処理部８１７とからなる。
【０１６２】
符号化処理部８０１は、入力サンプルＸ（ｎ）と予測値ＸＰ（ｎ）との差分である予測差分Ｄ（ｎ）を算出するための加算器８０２と、後述するレジスタＡ８１４の出力値である量子化ステップ幅Δ（ｎ）を用い、予測差分Ｄ（ｎ）を量子化する量子化部８０３と、量子化予測差分ＤＱ（ｎ）を符合化する符号化部８０４、符号化部８０４の符合化出力に基づいて符号化等の制御を行う量子化対象判定部８１０等を備えている。
【０１６３】
符号化部８０４は量子化部８０３からの出力ＤＱ（ｎ）を符号化し、この結果Ｌ（ｎ）をＲＯＭ読み出し部８１１と量子化対象判定部８１０と復号化部８０５と伝送路８１６に供給する。この符号化は上述の表１の規則に従って行われる。復号化部８０５は上述の表１の規則に従って符号データＬ（ｎ）を復号化し、この結果ＤＱ（ｎ）を加算器８０６に供給する。なお、復号化部８０５の出力と量子化部８０３の出力は同一のデータであるので、復号化部８０５を省略し、図１２中に破線で示すように、量子化部８０３の出力を直接加算器８０６に供給する構成とすることもできる。
【０１６４】
加算器８０６は量子化予測差分ＤＱ（ｎ）と後述するセレクタＡ８０９の出力ＸＰ（ｎ）とを加算し、この結果を残差調整部８０７とレジスタＢ８０８に供給する。レジスタＢ８０８に格納されたデータはそのまま次サンプルにおける予測値としてセレクタＡ８０９の第１の入力に供給される。残差調整部８０７は、レジスタＡ８１４の出力Δ（ｎ）に基づいて加算器８０６から供給されたデータを微調整し、その結果ＸＰ２（ｎ）をセレクタＡ８０９の第２の入力に供給する。セレクタＡ８０９は、後述する量子化対象判定部８１０からの制御により、レジスタＢ８０８の出力ＸＰ１（ｎ）と残差調整部８０７の出力ＸＰ２（ｎ）のいずれかを出力する。セレクタＡ８０９のＸＰ（ｎ）は加算器８０２と加算器８０６に供給される。
【０１６５】
一方、ＲＯＭ読み出し部８１１は、符号化部８０４からの符号データＬ（ｎ）をアドレス・ポインタとして乗数ＲＯＭ８Ｉ２からデータを読み出し、読み出した結果すなわち乗数Ｍ（Ｌ（ｎ））を乗算器８１３の第１の入力に供給する。乗数ＲＯＭ８１２の内容は上述の表１と同一である。乗算器８１３の第２の入力にはレジスタＡ８１４の出力すなわち現サンプルにおける量子化ステップ幅Δ（ｎ）が供給される。乗算器８１３による乗算結果はスイッチＡ８１５に供給される。このスイッチＡ８１５のＯＮ／ＯＦＦ制御は上述の量子化対象判定部８１０が行っている。スイッチＡ８１５がＯＮであるときは乗算器８１３の乗算結果がレジスタＡ８１４に格納され、ＯＦＦであるときはレジスタＡ８１４の値は変更されない。
【０１６６】
すなわち、この符号化復号化装置では、従来と異なり、量子化対象判定部８１０によりレジスタＡ８１４の値の更新を制御することにより、量子化ステップ幅の更新を制御するようになっている。具体的には、量子化対象判定部８１０は、符号データＬ（ｎ）に基づいて以下に示すようにセレクタＡ８０９及びスイッチＡ８１５の制御を行っている。
【表６】
0003998330.tif 000012
【０１６７】
量子化対象判定部８１０は、符号データＬ（ｎ）が０１１１又は１１１１であるときは、ＸＰ（ｎ）としてＸＰ２（ｎ）が選択されるように、セレクタ８０９を制御し、再度同一のサンプル入力Ｘ（ｎ）に対して符号化を行い、符号データＬ（ｎ）が０１１１又は１１１１以外の値であるときは、次のサンプル入力Ｘ（ｎ＋１）に対しての符号化を行うように、量子化部８０３、符号化部８０４等の制御を行う。
【０１６８】
従って、符号データＬ（ｎ）が０１１１又は１１１１であるときは、同一のサンプルに対して複数回の符号化処理が実行され、複数の符号データＬ（ｎ）が出力送信されることになる。また、これらの複数回の符号化処理が実行されている間、上述の表６に示されるように、スイッチＡ８１５はＯＦＦに制御されており、量子化ステップ幅の更新は行われない。以上の処理は、各サンプルＸ（ｎ）毎に逐次行われる。
【０１６９】
また、復号処理部８１７は、上述の図１２に示すように、符号化された音声データＬ（ｎ）を逆量子化する逆量子化部８１８と、逆量子化出力に予測値ＸＰ（ｎ）を加算して音声データＸＤ（ｎ）を再生する加算器８１９と、残差調整部８２０と、予測値ＸＰ１（ｎ）を保持するレジスタＤ８２１と、残差調整部８２０とレジスタＤ８２１の出力のいずれかを選択するセレクタＢ８２２と、符号化された音声データＬ（ｎ）に基づいてセレクタＢ８２２等の制御を行う量子化対象判定部８２３と、乗数ＲＯＭ８２５、ＲＯＭ読み出し部８２４等を有し、量子化ステップΔ(ｎ)を決定する量子化ステップ決定系等を備えている。
【０１７０】
伝送路８１６を介して供給された符号データＬ（ｎ）は、ＲＯＭ読み出し部８２４、逆量子化部８１８及び量子化対象判定部８２３に供給され、サンプル毎に逐次復号化される。量子化対象判定部８２３は、供給された符号データＬ（ｎ）に基づいてセレクタＢ８２２、スイッチＢ８２８及びスイッチＣ８２９の制御を行う。この制御は符号化時と同様に上述の表６に従って行われる。すなわち、量子化対象判定部８２３は符号データＬ（ｎ）が０１１１又は１１１１であるときは、セレクタＢ８２２がＸＰ２（ｎ）を出力し、スイッチＢ８２８及びスイッチＣ８２９がＯＦＦとなるように制御する。逆に、符号データＬ（ｎ）が０１１１、１１１１以外であるときは、量子化対象判定部８２３は、セレクタＢ８２２がＸＰ１（ｎ）を出力し、スイッチＢ８２８及びスイッチＣ８２９がＯＮとなるように制御する。
【０１７１】
また、逆量子化部８１８は、レジスタＣ８２７に格納されている量子化ステップ幅Δ（ｎ）で符号データＬ（ｎ）を逆量子化し、その出力結果ＤＱ（ｎ）を加算器８１９に供給する。加算器８１９は逆量子化されたデータＤＱ（ｎ）とセレクタＢ８２２の出力を加算し、その演算結果ＸＤ（ｎ）を復号化データとしてスイッチＣ８２９、残差調整部８２０及びレジスタＤ８２１に供給する。上述のように、スイッチＣ８２９は、量子化対象判定部８２３によって制御されており、このスイッチＣ８２９がＯＮであるときは復号化データＸＤ（ｎ）が再生音声として出力される。
【０１７２】
また、レジスタＤ８２１に格納された復号化データはそのまま次のサンプルにおける予測値として出力され、セレクタＢ８２２の第１の入力に供給される。また、残差調整部８２０に供給された復号化データはレジスタＣ８２７の出力Δ（ｎ）に応じて微調整され、その結果ＸＰ２（ｎ）がセレクタＢ８２２の第２の入力に供給される。セレクタＢ８２２は、量子化対象判定部８２３からの制御に応じてレジスタＤ８２１の出力ＸＰ１（ｎ）と残差調整部８２０の出力ＸＰ２（ｎ）のいずれかを出力する。このセレクタＢ８２２の出力の制御は上述のように符号化時と同様である。このような量子化対象判定部８２３からの制御に応じたセレクタＢ８２２の出力は加算器８１９に供給される。
【０１７３】
一方、ＲＯＭ読み出し部８２４は供給された符号データＬ（ｎ）に基づいて次のサンプルに対する量子化ステップ幅を更新する。この更新は、上述の符号化時と同様に実行される。
【０１７４】
以下、上述のように構成されたＡＤＰＣＭ符号化復号化装置の動作を説明する。
符号化処理部８０１は、図１３に示すフローチャートに従って動作し、入力データの各サンプル毎に符号化して送信あるいは記録する。
【０１７５】
具体的には、まず、図１３中のステップＳ２００〜Ｓ２０２において、サンプル数をカウントするカウンタｎ、レジスタＡ８１４、レジスタＢ８０８の初期設定を行う。次に、ステップＳ２０３において、入力データの次のサンプルを入力し、続くステップＳ２０４で、データの入力が終了したか否かを判定し、データの入力が終了していれば処理を終了し、終了していなければ続くステップＳ２０５に進む。
【０１７６】
ステップＳ２０５において、加算器８０２は、次式に基づいて第ｎサンプル目の入力Ｘ（ｎ）に対する予測差分Ｄ（ｎ）を算出する。
Ｄ（ｎ）＝Ｘ（ｎ）−ＸＰ（ｎ）                          ・・・（２９）
【０１７７】
ここで、ＸＰ（ｎ）はセレクタＡ８０９の出力である。最初のサンプル（ｎ＝０）の符号化時の初期状態においてはセレクタＡ８０９の出力は、量子化対象判定部８２３からの制御によってＸＰ（０）＝ＸＰ１（０）となっている。
【０１７８】
算出された予測差分Ｄ（ｎ）は量子化部８０３に供給され、ステップＳ２０６において量子化される。この量子化は量子化ステップ幅Δ（ｎ）を基準に、上述の式（２）に従って行われる。量子化後の予測差分ＤＱ（ｎ）は符号化部８０４に供給され、ステップＳ２０７において符号化される。この符号化は上述の表１に従って行われる。求められた符号化データＬ（ｎ）は、ステップＳ２０８において、伝送路８１６に送出あるいは記録媒体に記録される。この符号化データは、ＲＯＭ読み出し部８１１、量子化対象判定部８１０及び復号化部８０５にも供給される。ＲＯＭ読み出し部８１１に供給された符号データＬ（ｎ）は、後述のステップＳ２１５における次サンプルの量子化ステップ幅の更新に用いられる。
【０１７９】
復号化部８０５は、供給された符号データＬ（ｎ）を従来と同様に表１の規則に従って復号化し、この出力ＤＱ（ｎ）を加算器８０６に供給する。なお、復号化部８０５の出力と量子化部８０３の出力は同一のデータであるので、図１２中に破線で示すように、復号化部８０５を省略して量子化部８０３の出力を直接加算器８０６に供給する構成とすることもできる。
【０１８０】
加算器８０６は、ステップＳ２０９において、量子化予測差分ＤＱ（ｎ）とセレクタＡ８０９の出力を加算し、この結果をレジスタＢ８０８に格納すると共に、残差調整部８０７に供給する。残差調整部８０７は、ステップＳ２１０において、レジスタＡ８１４の出力である量子化ステップ幅Δ（ｎ）を用い、次式に従って予測値の調整を行う。なお、この式（３０）は予測差分Ｄ（ｎ）が正の値の場合について示されている。
ＸＰ２（ｎ）＝ＤＱ（ｎ）＋ＸＰ（ｎ）−Δ（ｎ）／８＝ＸＰ１（ｎ）−Δ（ｎ）／８
・・・（３０）
【０１８１】
ここで、予測値ＸＰ１（ｎ）からΔ（ｎ）／８を減ずる理由について説明する。                        仮に、次式に示すように、予測値ＸＰ１（ｎ）をそのまま予測値ＸＰ２（ｎ）とした場合、
ＸＰ２（ｎ）＝ＸＰ１（ｎ）＝ＤＱ（ｎ）＋ＸＰ（ｎ）      ・・・（３１）
符号データＬ（ｎ）が０１１１となるのは、上述の式（２）より、
Ｄ（ｎ）≧１４Δ（ｎ）／８                              ・・・（３２）
となるときである。ここでＤ（ｎ）＝１４Δ（ｎ）／８の場合を考えると、上述の式（２）よりＤＱ（ｎ）＝１５Δ（ｎ）／８となるので式（３１）より、
ＸＰ２（ｎ）＝１５Δ（ｎ）／８＋ＸＰ（ｎ）              ・・・（３３）
となる。また上述の式（１）より、
Ｄ（ｎ）＝Ｘ（ｎ）−ＸＰ（ｎ）＝１４Δ（ｎ）／８        ・・・（３４）
となる。さらに、式（３３）及び式（３４）より、
ＸＰ２（ｎ）＝Δ（ｎ）／８＋Ｘ（ｎ）                    ・・・（３５）
となる。これは、予測値ＸＰ１（ｎ）からΔ（ｎ）／８の値を減じなければ予測値ＸＰ２（ｎ）が入力値Ｘ（ｎ）を超えてしまうことを意味する。
【０１８２】
これにより、符号データの符号の逆転現象が起き、伝送効率（ビットレート）が悪化してしまう。このため、式（３０）に従って予測値の調整を行うことで、例えばＬ（ｎ）が０１１１のとき（符号データが正の値）は、再符号化時も必ず正の値に符号化され、Ｌ（ｎ）が１１１１のとき（符号データが負の値）は、再符号化時も必ず負の値に符号化されるので、再符号化時の符号データ４ビットのうち、±の符号に割り当てていた１ビットを削減することができる。
【０１８３】
また、残差調整部８０７からの出力ＸＰ２（ｎ）とレジスタＢ８０８の出力ＸＰ１（ｎ）はセレクタＡ８０９に供給され、セレクタＡ８０９は量子化対象判定部８１０の制御に基づいていずれか一方を次のサンプルの予測値ＸＰ（ｎ）として出力する。このレクタＡ８０９の出力制御を行う量子化対象判定部８１０は、符号化部８０４の符号データＬ（ｎ）に応じて上述の表６に従って出力制御を行う。
【０１８４】
具体的には、量子化対象判定部８１０は、図１３中のステップＳ２１１において、符号データＬ（ｎ）が０１１１又は１１１１か否かを判定し、該当するときはステップＳ２１２に進み、セレクタＡ８０９がＸＰ２（ｎ）を出力し、スイッチＡ８１５がＯＦＦとなるように制御を行う。
【０１８５】
ステップＳ２１２では、次回の符号化によって符号化し、伝送する符号データの符号長を符号ビットを含まない３ビットとする。なお、この符号長は、初期状態では４ビットとされている。
【０１８６】
また、ステップＳ２１３に示すように、セレクタＡ８０９が残差調整部８０７の出力ＸＰ２（ｎ）を出力しているので、この出力ＸＰ２（ｎ）を次回の符号化の予測値ＸＰ（ｎ）とする。なお、スイッチＡ８１５がＯＦＦとなっているので量子化ステップ幅の更新は行われない。
【０１８７】
この後、ステップＳ２０５に戻り、上述のステップＳ２０５〜Ｓ２１０の処理を繰り返し、現サンプル入力Ｘ（ｎ）に対して再度符号化処理を施す。
【０１８８】
また、ステップＳ２１１において、符号データＬ（ｎ）が０１１１、１１１１以外の値であるときは、ステップＳ２１４に進む。このステップＳ２１４において、ＲＯＭ読み出し部８１１は、符号化部８０４から供給された符号データＬ（ｎ）をアドレス・ポインタとして乗数ＲＯＭ８１２から乗数Ｍ（Ｌ（ｎ））を読み出し、これを乗算器８１３の第１の入力に供給する。なお、乗数ＲＯＭ８１２の内容は上述の表１と同一である。乗算器８１３の第２の入力にはレジスタＡ８１４の出力すなわち現サンプルにおける量子化ステップ幅Δ（ｎ）が供給されている。続くステップＳ２１５において、乗算器８１３は、ＲＯＭ読み出し部８１１の出力をレジスタＡ８１４の出力に乗じ、乗算結果をスイッチＡ８１５に供給する。
【０１８９】
スイッチＡ８１５のＯＮ／ＯＦＦ制御は量子化対象判定部８１０が行っており、スイッチＡ８１５がＯＮのときは乗算結果がレジスタＡ８１４に格納され、ＯＦＦのときはレジスタＡ８１４の値の変更は行われない。スイッチＡ８１５のＯＮ／ＯＦＦ状態の確定は、現サンプルにおける符号データＬ（ｎ）が確定した後（例えば上述のステップＳ２０７の実行の後）に量子化対象判定部８１０からの制御信号により行われる。
【０１９０】
従って、ステップＳ２１５においては、セレクタＡ８０９はレジスタＢ８０８の出力ＸＰ１（ｎ）を予測値として出力しており、スイッチＡ８１５がＯＮとなっているため、乗算器８１３の乗算出力がレジスタＡ８１４に供給されて、量子化ステップ幅の更新が行われる。
【０１９１】
続くステップＳ２１６では、次回の符号化によって符号化し、伝送する符号データの符号長を符号ビットを含む４ビットとする。
【０１９２】
この後、ステップＳ２０３に戻り、次のサンプル入力Ｘ（ｎ＋１）に対して上述と同様に符号化処理を施す。
【０１９３】
また、復号化処理部８１７は、図１４に示すフローチャートに従って動作し、受信あるいは読み出された符号データを復号化して音声信号を出力する。
【０１９４】
具体的には、図１４中のステップＳ２２０〜Ｓ２２２において、符号化処理と同様に、符号データ数をカウントするカウンタｎ、レジスタＣ８２７、レジスタＤ８２１の初期設定を行い、次くステップＳ２２３において、符号データＬ（ｎ）の受信あるいは読み出しを行う。伝送路８１６を介して受信した符号データＬ（ｎ）は、量子化対象判定部８２３、ＲＯＭ読み出し部８２４及び逆量子化部８１８に供給される。そして、ステップＳ２２４において、符号データの入力が終了したか否かを判定し、符号データの入力が終了していれば処理を終了し、終了していなければ続くステップＳ２２５に進む。
【０１９５】
逆量子化部８１８は、ステップＳ２２５において、供給された符号データＬ（ｎ）を上述の表１に従って逆符号化し、この結果ＤＱ（ｎ）を加算器８１９に供給する。この逆量子化はレジスタＣ８２７の出力である量子化ステップ幅Δ（ｎ）に基づいて符号化時と同様に式（２）の規則に従って行われる。
【０１９６】
加算器８１９は、ステップＳ２２６において、逆量子化部８１８から供給された逆符号化データＤＱ（ｎ）にセレクタ８２２を介して供給される予測値ＸＰ（ｎ）を加え、この結果求められる復号化データＸＤ（ｎ）をスイッチＢ８２９、レジスタＤ８２１及び残差調整部８２０に供給する。なお、このステップで求められる復号化データＸＤ（ｎ）は、後述のようにセレクタＢ８２２が制御されるため、以下の表７に示すようになる。
【表７】
0003998330.tif 000013
【０１９７】
レジスタＤ８２１に供給された結果ＸＤ（ｎ）は、ステップＳ２２７において、レジスタＤ８２１にも供給され、格納される。残差調整部８２０は、ステップＳ２２８において、レジスタＣ８２７の出力である量子化ステップ幅Δ（ｎ）を用い、上述の式（３０）に従って予測値の調整を行う。
【０１９８】
一方、量子化対象判定部８２３は、入力された符号データＬ（ｎ）に基づいて以下の表８に示すようにセレクタＢ８２２、スイッチＢ８２８及びスイッチＣ８２９の制御を行う。
【表８】
0003998330.tif 000014
【０１９９】
具体的には、ステップＳ２２９において、量子化対象判定部８２３は、符号化時のステップＳ２１１と同様に、符号データＬ（ｎ）が０１１１又は１１１１であるか否かを判定し、該当するときは、続くステップＳ２３０に進み、受信する符号データの符号長を３ビットとし、ステップＳ２３１においてセレクタＢ８２２が残差調整部の出力ＸＰ２（ｎ）を選択するように制御し、さらに、ステップＳ２３２においてカウンタｎの値を１カウントアップした後、ステップＳ２２３に戻り、次の符号データＬ（ｎ＋１）に対して、上述と同様の処理を繰り返す。なお、受信する符号データの符号長は、初期状態では４ビットとされている。
【０２００】
従って、符号データが０１１１、１１１１となった場合には、セレクタＢ８２２が残差調整部８２０の出力ＸＰ２（ｎ）を出力し、スイッチＢ８２８、スイッチＣ８２９がＯＦＦとされて、符号データが０１１１、１１１１以外の値となるまで、上述のステップＳ２２３〜Ｓ２３２までの処理が繰り返され、逆量子化され、残差が調整されたデータＸＰ２（ｎ）が累積され、累積値がレジスタＤ８２１に格納される。なお、この間、スイッチＣ８２９はＯＦＦとされているため、復号化データＸＤ（ｎ）は出力されない。
【０２０１】
一方、ステップＳ２２９において、符号データＬ（ｎ）が０１１１、１１１１以外の値であるときは、量子化対象判定部８２３はステップＳ２３４に進む。
【０２０２】
ステップＳ２３４〜Ｓ２３５において、ＲＯＭ読み出し部８２４は、上述の符号化時のステップＳ２１４〜２１５と同様に、符号データＬ（ｎ）に基づいて次のサンプルにおける量子化ステップ幅の更新を行う。
【０２０３】
さらに、ステップＳ２３６において、受信する符号データの符号長を４ビットとし、ステップＳ２３７においてスイッチＣ８２９を介して復号化データＸＤ（ｎ）を出力する。
【０２０４】
この後、ステップＳ２３８においてセレクタＢ８２２がレジスタＤ８２１の出力を選択するように制御し、ステップＳ２３９においてカウンタｎの値を１カウントアップした後、ステップＳ２２３に戻り、次の符号データＬ（ｎ＋１）に対して、上述のステップＳ２２３〜Ｓ２３９までの処理が実行される。
【０２０５】
以上のようにこの第３の実施形態では、ＡＤＰＣＭ符号復号化装置において、符号データの絶対値が最大となった場合（上述のように４ビット符合化の場合には符号データが０１１１又は１１１１になった場合）には、現在のサンプルの入力値と量子化出力値との差分を再度符号化することにより、従来では量子化誤差が極めて大きくなっていた変動の激しいサンプルに対しても量子化誤差を低減することができ、音質を向上させることができる。
【０２０６】
量子化ステップ幅更新によっても入力サンプルのレベル変動に追従できないようなサンプルに対して、この実施形態のように２回の符号化を行うとすると、このサンプルに対して７ビットの符号化を施していることになり、これが音質を改善している要因となっている。この実施形態によれば、特に高周波成分を多く含んだサンプルに対して大きな効果が得られる。
【０２０７】
音質を客観的に計る指標として、例えば平均セグメンタルＳＮ比ｓｅｇＳＮＲを用い、この実施形態の符号化装置と従来の符号化装置で符号化を行った場合の音質を評価した結果について説明する。サンプル波形としてオーディオ用高城再生限界チェック音楽を用いて実験を行った結果、以下の結果が得られた。
符号化装置                        平均セグメンタルＳＮ比ｓｅｇＳＮＲ
従来のＡＤＰＣＭ符号化（４ビット）                  １６．１ｄＢ
この実施形態のＡＤＰＣＭ符号化（４．１５ビット）    １７．９ｄＢ
【０２０８】
上述のようなサンプルをこの実施形態による符号化装置により符号化した場合、符号データの絶対値が最大となって再符号化を行ったサンプルの割合が全サンプルの２．７３％であった。すなわち、この実施形態の符号化により、１サンプル当たり０．１５ビット程度の情報が付加されたことになる。
【０２０９】
従って、この実施形態の符号化装置では、１サンプル当たり０．１５ビット程度の情報の付加により従来のＡＤＰＣＭ方式４ビット符号化に比較して１．８ｄＢものＳＮ比を改善することができる。
【０２１０】
また、他の楽音サンプルで試聴すると、この実施形態の符号化装置で符号化したものは、従来の符号化装置で符号化した場合に突発的に量子化誤差が急増し、ざらついた感じや不連続感が生じていた楽音に対しても良好な音質が得られた。
【０２１１】
なお、上述の説明では、再符号化時の符号データ茶の符号長を３ビットとしているが、伝送路や蓄積媒体のビットレート等の条件に余裕がある場合は、処理の簡略化を図るために４ビットに統一してもよい。
【０２１２】
また、上述の図１３、図１４に示す処理においてレジスタＡ（レジスタＣ）の初期値を８、レジスタＢ（レジスタＤ）の初期値を０としているが、これらに限定されるものではなく、適宜変更することができる。ただし、一般的に、符号化開始直後の入力サンプルのレベルは小さいと考えられるので、これらの初期値が適していると思われる。
【０２１３】
【発明の効果】
本発明に係る符号化装置では、係数設定手段が、所定数のサンプルからなるフレーム中のサンプルを量子化する際の量子化誤差に応じて、予測値算出手段の係数を設定することにより、圧縮率を悪化させることなく音質を改善することができる。
【０２１４】
また、本発明に係る他の符号化装置では、量子化ステップ関数設定手段が、所定数のサンプルからなるフレーム中のサンプルを量子化する際の誤差に応じて、量子化手段が量子化に用いる量子化ステップ関数を設定することにより、圧縮率を悪化させることなく音質を改善することができる。
【０２１５】
また、本発明に係る他の符号化装置では、再符号化制御手段が、符号化手段によって求められた符号の絶対値が所定の値より大きいときに、当該サンプルに対して再度符号化を行うように差分検出手段、量子化手段、符号化手段、予測値算出手段の制御を行うことにより、高速な符号化を実現することができる。
【図面の簡単な説明】
【図１】  本発明の符号化装置を適用した第１の実施形態に係るＡＤＰＣＭ符号化復号化装置を示すブロック図である。
【図２】  従来のＡＤＰＣＭ符号化復号化装置を示すブロック図である。
【図３】  従来のＡＤＰＣＭ符号化の演算プロセスを示す図である。
【図４】  ４ビット符号化の場合の予測差分と量子化値の関係を示す図である。
【図５】  本発明の第１の実施形態に係るＡＤＰＣＭ符号化復号化装置の演算プロセスを示す図である。
【図６】  本発明の第１の実施形態に係るＡＤＰＣＭ符号化復号化装置のフレーム処理を示す図である。
【図７】  本発明の第１の実施形態に係るＡＤＰＣＭ符号化復号化装置の演算プロセスを示す図である。
【図８】  本発明の符号化装置を適用した第２の実施形態に係るＡＤＰＣＭ符号化復号化装置を示すブロック図である。
【図９】  本発明の第２の実施形態に係るＡＤＰＣＭ符号化復号化装置における量子化ステップ関数の例を示す図である。
【図１０】  本発明の第２の実施形態に係るＡＤＰＣＭ符号化復号化装置の演算プロセスを示す図である。
【図１１】  本発明の第２の実施形態に係るＡＤＰＣＭ符号化復号化装置のフレーム処理を示す図である。
【図１２】  本発明の符号化装置を適用した第３の実施形態に係るＡＤＰＣＭ符号化復号化装置を示すブロック図である。
【図１３】  本発明の第３の実施形態に係るＡＤＰＣＭ符号化復号化装置の符号化処理を示すフローチャートである。
【図１４】  本発明の第３の実施形態に係るＡＤＰＣＭ符号化復号化装置の復号化処理を示すフローチャートである。
【符号の説明】
３０２、５０２、８０２  加算器、３０３、５０３、８０３  量子化部、３０４、５０４、８０４  符号化部、３０５、５０５、８０５  復号化部、３０６、５０６、８０６  加算器、３０９  乗算器、３１０  係数決定部、３１１  係数ＲＯＭ、３１２  カウンタ、３１３  量子化誤差累計算出部、５１０  ステップ関数ＲＯＭ、５１１  最大量子化誤差算出部、５１２  ステップ関数決定部、５１３  ＲＯＭ読み出し制御部、５１４  乗数ＲＯＭ、８０７  残差調整部、８０９  セレクタ、８１０  量子化対象判定部、８１３  スイッチ
【図１】
0003998330.tif 000015
【図２】
0003998330.tif 000016
【図３】
0003998330.tif 000017
【図４】
0003998330.tif 000018
【図５】
0003998330.tif 000019
【図６】
0003998330.tif 000020
【図７】
0003998330.tif 000021
【図８】
0003998330.tif 000022
【図９】
0003998330.tif 000023
【図１０】
0003998330.tif 000024
【図１１】
0003998330.tif 000025
【図１２】
0003998330.tif 000026
【図１３】
0003998330.tif 000027
【図１４】
0003998330.tif 000028