(57)【特許請求の範囲】
【請求項１】
入力された音を符号化するエンコーダ又は入力された音符号を復号化するデコーダを含み構成される音符号化システムであって、
前記エンコーダ又はデコーダは、
Ｇ．７２６に準拠しており、
前記符号化又は復号化を行う処理部と、
前記処理部の演算の入力又は出力となる状態変数を記憶するメモリと、
を備え、
前記状態変数には、基本状態変数と、合成状態変数と、が含まれ、
前記メモリに記憶された基本状態変数は、前記基本状態変数の初期値である、前記メモリに記憶されている状態変数がリセットされたときの値を含み、
前記メモリに記憶された前記合成状態変数は、前記基本状態変数の初期値から定まる変数であり、
前記処理部は、
量子化した差分信号から合成状態変数である予測信号を算出する適応予測部と、
差分信号の変化率を、合成状態変数である適応速度制御変数とする適応速度制御部と、
合成状態変数であるスケールファクタを算出する量子化スケールファクタ適応部の、少なくとも一つを含み、前記メモリに記憶された前記基本状態変数と前記合成状態変数とを参照して前記符号化又は復号化を行うこと、
を特徴とする音符号化システム。
【請求項２】
前記エンコーダ又はデコーダは、
前記処理部として順次処理される複数の機能処理部を有し、
１つの前記機能処理部による処理が全て終了した後に次の前記機能処理部による処理を実行して前記符号化又は復号化を行うこと、
を特徴とする請求項１に記載の音符号化システム。
【請求項３】
前記エンコーダ又はデコーダは、プロセッサを備え、
前記エンコーダ又はデコーダの状態変数の少なくとも一部は、２の補数であり、前記プロセッサのｂｉｔ幅に符号拡張する拡張処理部を有すること、
を特徴とする請求項１又は請求項２に記載の音符号化システム。
【請求項４】
前記処理部は、所定の処理を行う多入力の第１の処理部を備え、
前記第１の処理部に入力される変数は、入力される変数のうち、小数点以下の桁数が最も大きい変数に小数点以下の桁を等しくする再構成処理部を有すること、
を特徴とする請求項１〜３の何れか１項に記載の音符号化システム。
【請求項５】
前記処理部は、
μ則で量子化されたＰＣＭ入力信号を、均一量子化されたＰＣＭ信号に変換する入力ＰＣＭフォーマット変換部と、
差分信号を２を底とする対数に変換し、スケールファクタで正規化する適応量子化部と、
前記適応予測部と、
予測信号と量子化した差分信号を加算した再生信号を算出する再生信号算出部と、
均一ＰＣＭ信号をμ則ＰＣＭ信号に変換する出力ＰＣＭフォーマット変換部と、
出力ＰＣＭ信号を再符号化する同期符号化補正部の、少なくとも一つを含み、
変数の数値の桁を求める第２の処理部と、前記第２の処理部の前記数値の桁に応じた所定の処理を行う第３の処理部とを備え、
前記第２の処理部は、二分探索で前記数値の桁を求め、
前記第３の処理部は、前記数値の桁からあらかじめ定まっている出力結果を直接出力すること、
を特徴とする請求項１〜４の何れか１項に記載の音符号化システム。
【請求項６】
前記処理部は、その内部で、前記符号化又は復号化の際、符号と指数部と仮数部とから構成される状態変数を、個別の変数に保持したまま伝送すること、
を特徴する請求項１〜５の何れか１項に記載の音符号化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、適応差分パルス符号変調（ＡＤＰＣＭ：Ａｄｐａｔｉｖｅ  Ｄｉｆｆｅｒｎｔｉａｌ  Ｐｕｌｓｅ  Ｃｏｄｅ  Ｍｏｄｕｌａｔｉｏｎ）を用いた音符号化システムに関する。
【背景技術】
【０００２】
携帯電話やワイヤレスマイクなど、音声を伝送する際にはアナログである音をデジタル化し、デジタル音声信号に圧縮して伝送する方法が採られている。このデジタル音声信号の圧縮方式としては、デジタル音声が近接するサンプル間で高い相関を持つ性質を利用した方式が多く提案されており、その中の一つとしてＡＤＰＣＭ（適応的差分パルス符号変調：Ａｄａｐｔｉｖｅ  Ｄｉｆｆｅｒｎｔｉａｌ  Ｐｕｌｓｅ  Ｃｏｄｅ  Ｍｏｄｕｌａｔｉｏｎ）方式がある。
【０００３】
このＡＤＰＣＭ方式の音声符号化システムは、入力された音声を符号化する音声符号化装置と、符号化された音声を復号する音声復号化装置とを備える。音声符号化装置において、サンプリングされた実際のデジタル音声とその予測値との差分によって予測誤差を求め、この予測誤差を量子化及び符号化して伝送路を介して音声復号化装置に伝送する。音声復号化装置ではこの符号化されたものを復号した予測誤差と、サンプリングされた実際のデジタル音声の予測値とを加算して入力された音声を再生する。
【０００４】
このように、差分情報のみを伝送し、伝送先で入力音声を復元する構成となっているので、伝送する情報量を少なくすることができる利点がある。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】CCITT Recommendation G.726, General Aspects of Digital Transmission Systems; Terminal Equipments; 40, 32, 24, 16 kbit/s Adaptive Differential Pulse Code Modulation (ADPCM)、Geneva、1990年
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記のようなＡＤＰＣＭ方式としては、ＩＴＵ−Ｔで勧告されたＧ．７２６が知られており（非特許文献１参照。）、Ｇ．７２６を忠実にソフトウェア実装したのがＧ．１９１である。
【０００７】
Ｇ．７２６に準拠するかはＧ．７２６  ＡｐｐｅｎｄｉｘＩＩが規定するテストベクターと、エンコーダ及びデコーダの入出力とが一致するか否かで決まる。Ｇ．１９１に含まれるＧ．７２６モジュールであるｇ７２６．ｃ及びｇ７２６．ｈは、このテストベクターと一致するが、ソフトフェア実装に最適化されていないため処理負荷が高く、高速化の観点から望ましくない。例えば、音マルチチャンネルのサンプリングレートでのオンライン実時間処理には、最適化されていないことによる処理負荷の高さから、処理能力の高いプロセッサが要求されてしまうという問題がある。
【０００８】
さらに、Ｇ．１９１のＧ．７２６モジュールは、一つの機能ブロックを部分的に演算した後、他の機能ブロックに処理が移行することが多く、各サブプロセスのモジュラリティや可読性が低いため、準拠性を維持したままＧ．７２６をサブセット化することが容易ではなかった。
【０００９】
本発明は、上記のような課題を解決するためになされたものであり、第１の目的は、高速処理が可能な音符号化システムを提供することにある。第２の目的は、モジュラリティや可読性の高い音符号化システムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明の音符号化システムは、入力された音を符号化するエンコーダ又は入力された音符号を復号化するデコーダを含み構成される音符号化システムであって、次の構成を備えることを特徴とする。
（１）前記エンコーダ又はデコーダは、Ｇ．７２６に準拠しており、前記符号化又は復号化を行う処理部と、前記処理部の演算の入力又は出力となる状態変数を記憶するメモリと、を備え、前記状態変数には、基本状態変数と、合成状態変数と、が含まれ、前記メモリに記憶された基本状態変数は、前記基本状態変数の初期値である、前記メモリに記憶されている状態変数がリセットされたときの値を含み、前記メモリに記憶された前記合成状態変数は、前記基本状態変数の初期値から定まる変数であり、前記処理部は、量子化した差分信号から合成状態変数である予測信号を算出する適応予測部と、差分信号の変化率を、合成状態変数である適応速度制御変数とする適応速度制御部と、合成状態変数であるスケールファクタを算出する量子化スケールファクタ適応部の、少なくとも一つを含み、前記メモリに記憶された前記基本状態変数と前記合成状態変数とを参照して前記符号化又は復号化を行うこと。
【００１１】
また、次の構成を備えるようにしても良い。
（２）前記エンコーダ又はデコーダは、前記処理部として順次処理される複数の機能処理部を有し、１つの前記機能処理部による処理が全て終了した後に次の前記機能処理部による処理を実行して前記符号化又は復号化を行うこと。
（３）前記エンコーダ又はデコーダは、プロセッサを備え、前記エンコーダ又はデコーダの状態変数の少なくとも一部は、２の補数であり、前記プロセッサのｂｉｔ幅に符号拡張する拡張処理部を有すること。
（４）前記処理部は、所定の処理を行う多入力の第１の処理部を備え、前記第１の処理部に入力される変数は、入力される変数のうち、小数点以下の桁数が最も大きい変数に小数点以下の桁を等しくする再構成処理部を有すること。
（５）前記処理部は、μ則で量子化されたＰＣＭ入力信号を、均一量子化されたＰＣＭ信号に変換する入力ＰＣＭフォーマット変換部と、差分信号を２を底とする対数に変換し、スケールファクタで正規化する適応量子化部と、前記適応予測部と、予測信号と量子化した差分信号を加算した再生信号を算出する再生信号算出部と、均一ＰＣＭ信号をμ則ＰＣＭ信号に変換する出力ＰＣＭフォーマット変換部と、出力ＰＣＭ信号を再符号化する同期符号化補正部の、少なくとも一つを含み、変数の数値の桁を求める第２の処理部と、前記第２の処理部の前記数値の桁に応じた所定の処理を行う第３の処理部とを備え、前記第２の処理部は、二分探索で前記数値の桁を求め、前記第３の処理部は、前記数値の桁からあらかじめ定まっている出力結果を直接出力すること。
（６）前記処理部は、その内部で、前記符号化又は復号化の際、符号と指数部と仮数部とから構成される状態変数を、個別の変数に保持したまま伝送すること。
【発明の効果】
【００１２】
本発明によれば、合成状態変数を導入したことにより、高速処理が可能な音符号化システムを得ることができる。また、合成状態変数の導入に伴い、処理順序を再構成したことにより、モジュラリティや可読性の高い音符号化システムを得ることができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態に係る音符号化システムの全体構成を示す図である。
【図２】エンコーダ及びデコーダの全体的な構成図である。
【図３】エンコーダの詳細な機能ブロック図である。
【図４】デコーダの詳細な機能ブロック図である。
【図５】高速化手段を適用した処理ブロックの一覧表である。
【図６】二分探索と動的演算の排除を説明するための図である。（ａ）は、二分探索と動的演算の排除を適用しない例を示し、（ｂ）は、二分探索と動的演算の排除を適用する例を示す。
【図７】数値パッキングの排除を説明するための図である。（ａ）は、数値パッキングの排除を適用しない場合を示し、（ｂ）は数値パッキングの排除を適用する場合を示す。
【図８】符号化装置の動作フローチャートである。
【図９】復号化装置の動作フローチャートである。
【図１０】従来のＧ．７２６のエンコーダの詳細な機能ブロック図である。
【図１１】従来のＧ．７２６のデコーダの詳細な機能ブロック図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、本発明の実施形態の音符号化システムについて説明する。
【００１５】
［１．第１の実施形態］
［１−１．概略構成］
図１は、本実施形態に係る音符号化システムの全体構成を示す図である。本音符号化システムは、符号化装置１０、復号化装置２０、及び符号された音情報を伝送する伝送媒体３０を備えている。
【００１６】
符号化装置１０は、システム外部から入力されたアナログ信号である音やデジタル信号を符号化し、音符号を含む情報として出力する。符号化装置１０と復号化装置２０は伝送媒体３０を介して接続されており、伝送媒体３０は、符号化装置１０から出力された音符号を含む情報を復号化装置２０へ伝送する。復号化装置２０は、符号化装置１０から伝送された音符号を含む情報をアナログ信号やデジタル信号に復号し、本システム外部へ出力する。本音符号化システムは、例えば、ワイヤレスマイクなどの無線通信システムに用いることができる。
【００１７】
［１−２．各部構成］
（符号化装置）
符号化装置１０は、外部Ｉ／Ｆ１１、制御部１２、音入力Ｉ／Ｆ１３、エンコーダ１４、及び符号出力Ｉ／Ｆ１５を備えている。
【００１８】
外部Ｉ／Ｆ１１は、ユーザインターフェイスや外部接続装置とのインターフェイスを提供する。ユーザインターフェイスは、図示しない操作入力部と状態出力部を有し、本システムとユーザとのインターフェイスである。操作入力部は、スイッチやモーションセンサなどの検出器によりユーザが要求する操作を検出し、制御部１２へ伝達する。状態出力部は、ＬＥＤやＬＣＤなどの表示器や、バイブレータによる振動、スピーカによる音出力などにより装置の内部状態を出力し、ユーザへのフィードバックを与える。
【００１９】
外部接続装置は、外部Ｉ／Ｆ１１を介して本システムの内部状態を取得し、また動作制御を行うことができるものを用いる。外部接続装置としては、コンピュータやモバイル端末などが挙げられる。
【００２０】
外部Ｉ／Ｆ１１は、符号化装置１０外部からのリセット要求、量子化数更新要求、Ｇ．７１１形式更新要求、動作制御要求を受け付け、制御部１２へ通知する。
【００２１】
制御部１２は、外部Ｉ／Ｆ１１、音入力Ｉ／Ｆ１３、エンコーダ１４、及び符号出力Ｉ／Ｆ１５とそれぞれ接続されており、制御手段として機能する。すなわち、制御部１２は、本システムの内部状態の管理、各部の動作制御を行う。
【００２２】
制御部１２は、起動時に本システム各部の内部状態をリセットする。また、各部からの要求若しくは特定の内部状態の検出により、予め指定された内部状態をリセットし、本システム全体若しくは所定の部位を再起動させても良い。また、外部Ｉ／Ｆ１１からの量子化数更新要求若しくはＧ．７１１形式更新要求により、各部を停止し、内部状態をリセットした上要求された量子化数若しくはＧ．７１１形式（Ａ−ｌａｗ又はμ−ｌａｗ）へ内部状態を更新し、停止状態の部位を再起動させても良い。
【００２３】
制御部１２は、音や音情報、音符号を各部が入出力するための周期的なタイミングを生成し、各部にそのタイミングを与える。或いは、周期的なタイミング以外にも、各部の動作に必要となる所定のタイミングを生成しても良い。
【００２４】
音入力Ｉ／Ｆ１３は、本システム外部の音源の音を所定のタイミングで入力して時系列の音情報に変換し、出力する。音入力Ｉ／Ｆ１３は、例えばマイクなどの音響的トランスデューサーを有し、到来した音を所定のパラメータに応じて電気信号化し、音情報として出力する。この音情報は、エンコーダ１４及び／又は制御部１２へ出力される。なお、音入力Ｉ／Ｆ１３は、音情報をプリエンファシス処理などにより変換してもよいし、外部接続装置からの音情報を直接入出力するようにしても良い。
【００２５】
エンコーダ１４は、入力された音情報を変換して音符号として出力する。すなわち、音入力Ｉ／Ｆ１３から入力された音情報を符号化し、音符号として符号出力Ｉ／Ｆ１５及び制御部１２に出力する。エンコーダ１４は、Ｇ．７２６に準拠した構成を有し、Ｇ．７２６のサブセットを含み構成される。例えば、後述する入力ＰＣＭフォーマット変換部１４２が削除され、音情報としてリニアＰＣＭが入力されても良い。量子化数及びＧ．７１１形式は固定的であっても要求に応じて可変であっても良い。このエンコーダ１４の詳細な構成は後述する。
【００２６】
符号出力Ｉ／Ｆ１５は、伝送媒体３０とのインターフェイスに適した構造を有し、エンコーダ１４から入力された音符号を所定のタイミングで伝送媒体３０へ出力する。なお、符号出力Ｉ／Ｆ１５は、音符号の出力タイミングと同期させるための情報、例えば音符号をフレーミングして出力する場合のフレーム同期信号等を併せて制御部１２に出力しても良い。また、符号出力Ｉ／Ｆ１５は、音符号に関連する又は独立した情報を併せて出力しても良い。
【００２７】
（伝送媒体）
伝送媒体３０は、符号化装置１０の符号出力Ｉ／Ｆ１５から出力される音符号を含む情報を、復号化装置２０の後述する符号入力Ｉ／Ｆ２３へ出力する。伝送媒体３０は、有線であっても無線であっても良い。また、伝送媒体３０の伝送は、逐次伝送する実時間伝送形式であっても、記憶装置などに蓄積し、蓄積したものを順次伝送する蓄積形式であっても良い。
【００２８】
（復号化装置）
復号化装置２０は、外部Ｉ／Ｆ２１、制御部２２、符号入力Ｉ／Ｆ２３、デコーダ２４、及び音出力Ｉ／Ｆ２５を備えている。外部Ｉ／Ｆ２１及び制御部２２については、符号化装置１０の外部Ｉ／Ｆ１１、制御部１２とそれぞれ同様の構成であるため、その説明は省略する。
【００２９】
符号入力Ｉ／Ｆ２３は、伝送媒体３０とのインターフェイスに適した構造を有し、伝送媒体３０から音符号を含む情報を所定のタイミングで入力を受け、デコーダ２４及び／又は制御部２２へ出力する。なお、符号入力Ｉ／Ｆ２３は、入力情報に含まれる音符号とのタイミング同期信号を制御部２２へ出力するようにしても良いし、入力情報に含まれる音符号に関連する又は独立した情報を制御部２２へ出力するようにしても良い。また、符号入力Ｉ／Ｆ２３は、伝送媒体３０が蓄積形式である場合、所定のタイミングで順次伝送媒体３０から音符号を含む情報を入力する。
【００３０】
デコーダ２４は、入力された音符号を変換して音情報として音出力Ｉ／Ｆ２５に出力する。デコーダ２４は、Ｇ．７２６に準拠した構成を有し、Ｇ．７２６のサブセットを含み構成される。例えば、後述の出力ＰＣＭフォーマット変換部２４６と同期符号化補正部２４７が削除され、音情報としてリニアＰＣＭを出力しても良い。この場合変数ＳＲが音情報となる。量子化数及びＧ．７１１形式は固定的であっても要求に応じて可変であっても良い。このデコーダ２４の詳細な構成は後述する。
【００３１】
音出力Ｉ／Ｆ２５は、デコーダ２４から入力された時系列的な音情報を所定のタイミングで本システム外部へ音に変換して出力する。音出力Ｉ／Ｆ２５は、例えば、スピーカなどの音響的トランスデューサーを有し、音情報を所定のパラメータに応じて音に変換して出力する。なお、音出力Ｉ／Ｆ２５は、音情報をデエンファシス処理などにより変換しても良いし、入力された音情報を外部接続装置へ直接出力するようにしても良い。
【００３２】
［１−３．エンコーダ及びデコーダの詳細構成］
図２は、エンコーダ１４及びデコーダ２４の全体的な構成を示すブロック図である。図３は、エンコーダ１４の詳細な構成を示す機能ブロック図である。図４は、デコーダ２４の詳細な構成を示す機能ブロック図である。図３及び図４を用いて、エンコーダ１４とデコーダ２４の詳細な構成を説明する。但し、各変数や各機能ブロック、各処理ブロックについて、Ｇ．７２６と同じものについては、適宜説明を省略する（非特許文献１参照。）。
【００３３】
エンコーダ１４及びデコーダ２４は、プロセッサ、メモリ、及び記録媒体を含み構成されたコンピュータであり、ソフトウェア実装されている。すなわち、当該記録媒体にはプログラムが記憶されており、メモリ等に適宜展開され、プロセッサで処理することにより、図３及び図４に示す各種の機能ブロックが実現される。
【００３４】
ここで、エンコーダ１４及びデコーダ２４の動作フローについて、簡単に説明する。エンコーダ１４及びデコーダ２４は、それぞれ６つの機能ブロックＳ１〜Ｓ６，Ｓ２１〜Ｓ１６を含み構成されている。
【００３５】
図３，４を全体的に参照すると、機能ブロックＳ２〜Ｓ６，Ｓ２２〜Ｓ２６は、図中上から下に並べられており、基本的には、上から下に処理が進行する。すなわち、エンコーダ１４では、Ｓ２→Ｓ３→…→Ｓ６の順で進行し、デコーダ２４では、Ｓ２２→Ｓ２３→…→Ｓ２６の順で進行する。一方、各機能ブロックＳ１〜Ｓ６，Ｓ２１〜Ｓ２６を個別に参照すると、各機能ブロックＳ１〜Ｓ６，Ｓ２１〜Ｓ２６においては、各図中の左から右にかけて進行する。
【００３６】
このように、エンコーダ１４及びデコーダ２４は、１つの機能ブロックＳ２〜Ｓ６，Ｓ２２〜Ｓ２６による処理が全て終了した後に次の機能ブロックＳ２〜Ｓ６，Ｓ２２〜Ｓ２６による処理を全て実行し、機能ブロックＳ２〜Ｓ６，Ｓ２２〜Ｓ２６を順に実行して符号化又は復号化を行うように構成されている。
【００３７】
各機能ブロックＳ１〜Ｓ６、Ｓ２１〜Ｓ２６は、一つ又は複数の処理ブロックからなる。各処理ブロックは、左側の変数を入力として所定の処理を行い、右側の変数を出力する。すなわち、処理ブロックは、変数の入力を受けて所定の規則に則って処理した変数を出力する関数である。処理ブロックを例示すると、機能ブロックＳ２であれば、「ＥＸＰＡＮＤ」「ＳＵＢＴＡ」等、機能ブロックＳ２２であれば、「ＲＥＣＯＮＳＴ」「ＡＤＤＡ」等である。図３の機能ブロック２内の「ＥＸＰＡＮＤ」は、変数Ｓ，ＬＡＷを入力として、μ則ＰＣＭ信号Ｓを均一ＰＣＭ信号ＳＬに変換し、当該変数ＳＬを出力する。
【００３８】
（エンコーダ）
図３に示すように、エンコーダ１４は、６つの機能ブロックＳ１〜Ｓ６を含み構成される。
【００３９】
機能ブロックＳ１は、リセット部（Ｒｅｓｅｔ）１４１である。リセット部１４１は、リセット信号Ｒの入力を受けて、エンコーダ１４をリセットする。すなわち、各変数を初期化する。なお、このリセット部１４１は、後述するＤＥＬＡＹブロックの排除に伴い設けられたものである。
【００４０】
図２に示すように、機能ブロックＳ２は、変数Ｓ、ＬＡＷ、ＳＥ、Ｙを入力として、変数Ｉを出力する。具体的には、機能ブロックＳ２は、入力ＰＣＭフォーマット変換部（ＥＸＰＡＮＤ）１４２、差分信号算出部（ＳＵＢＴＡ）１４３、及び適応量子化部（ＬＯＧ，ＳＵＢＴＢ，ＱＵＡＮ）１４４から構成される。
【００４１】
入力ＰＣＭフォーマット変換部１４２は、μ則で量子化されたＰＣＭ入力信号ｓ（ｋ）を、均一量子化されたＰＣＭ信号ｓｌ（ｋ）に変換する。差分信号算出部１４３は、均一量子化されたＰＣＭ信号ｓｌ（ｋ）と予測信号ｓｅ（ｋ）より差分信号ｄ（ｋ）を算出する。適応量子化部１４４は、差分信号ｄ（ｋ）を２を底とする対数に変換し、スケールファクタｙ（ｋ）で正規化する。そして、これを量子化し、量子化器出力Ｉ（ｋ）を出力する。
【００４２】
機能ブロックＳ３は、主に変数Ｉ，Ｙ，ＴＤ，ＹＬを入力として、変数ＴＲ，ＤＱを出力する。具体的には、機能ブロックＳ３は、適応逆量子化部（ＲＥＣＯＮＳＴ，ＡＤＤＡ，ＡＮＴＩＬＯＧ）１４５と変化点検出部（ＴＲＡＮＳ）１４６とから構成される。
【００４３】
適応逆量子化部１４５は、量子化された差分信号ｄｑ（ｋ）を求める。変化点検出部１４６は、狭帯域の信号の変化を検出した時、予測器の係数をゼロにセットし、量子化器の適応速度を高速側に移す。
【００４４】
機能ブロックＳ４は、変数ＤＱ，ＴＲを入力として、変数Ａ２Ｐ，ＳＥを出力する。具体的には、機能ブロックＳ４は、適応予測部（ＡＤＤＣ等後述の再生信号算出部の処理ブロック以外の処理ブロック）１４７と再生信号算出部（ＤＥＬＡＹ，ＡＤＤＢ，ＦＬＯＡＴＢ）１４８とから構成される。適応予測部１４７は、量子化した差分信号ｄｑ（ｋ）から予測信号ｓｅ（ｋ）を算出する。再生信号算出部１４８は、予測信号ｓｅ（ｋ）と量子化した差分信号ｄｑ（ｋ）を加算した再生信号ｓｒ（ｋ）を算出する。
【００４５】
機能ブロックＳ５は、変数Ｉ，ＴＲ，Ａ２Ｐ，Ｙを入力として、変数ＡＬ，ＴＤを出力とする。具体的には、機能ブロックＳ５は、トーン検出部（ＴＯＮＥ，ＴＲＩＧＢ）１４９と適応速度制御部（ＦＵＮＣＴＦ等トーン検出部の処理ブロック以外の処理ブロック）１５０とから構成される。トーン検出部１４９は、狭帯域の信号（例えばトーン信号）を検出した時、量子化の適応速度を高速側に移す。適応速度制御部１５０は、差分信号の変化率を適応速度制御変数ａｌ（ｋ）とする。ａｌ（ｋ）は［０，１］の範囲の値を取る。ａｌ（ｋ）は音信号の場合１に近づき、音周波数帯域データ信号やトーン信号の場合は０に近づく。
【００４６】
機能ブロックＳ６は、変数Ｉ，ＡＬを入力として、変数Ｙ，ＹＬを出力とする。具体的には、機能ブロックＳ６は、量子化スケールファクタ適応部（ＦＵＮＣＴＷ，ＦＩＬＴＤ，ＬＩＭＢ，ＦＩＬＴＥ，ＭＩＸ）１５１からなる。量子化スケールファクタ適応部１５１は、スケールファクタｙ（ｋ）を算出し、適応量子化部１４４及び適応逆量子化部１４５に与える。
【００４７】
（デコーダ）
図４に示すように、デコーダ２４は、６つの機能ブロックＳ２１〜Ｓ２６を含み構成される。エンコーダ１４の機能ブロックと同じ構成のものについては、説明を適宜省略する。
【００４８】
機能ブロックＳ２１は、リセット部（Ｒｅｓｅｔ）２４１であり、その構成は、エンコーダ１４のリセット部１４１と同様である。なお、このリセット部２４１は、後述するＤＥＬＡＹブロックの排除に伴い設けられたものである。
【００４９】
機能ブロックＳ２２は、変数Ｉ，Ｙ，ＴＤ，ＹＬを入力として、変数ＤＱ，ＴＲを出力する。具体的には、機能ブロックＳ２２は、適応逆量子化部（ＲＥＣＯＮＳＴ，ＡＤＤＡ，ＡＮＴＩＬＯＧ）２４２と変化点検出部（ＴＲＡＮＳ）２４３とから構成される。適応逆量子化部２４２と変化点検出部２４３は、エンコーダ１４の適応逆量子化部１４５と変化点検出部１４６の構成と同様である。
【００５０】
機能ブロックＳ２３は、変数ＤＱ，ＴＲを入力として、変数Ａ２Ｐ，ＳＲ，ＳＥを出力とする。具体的には、機能ブロックＳ２３は、適応予測部（ＡＤＤＣ等後述の再生信号算出部の処理ブロック以外の処理ブロック）２４４と再生信号算出部（ＤＥＬＡＹ，ＡＤＤＢ，ＦＬＯＡＴＢ）２４５とから構成される。適応予測部２４４と再生信号算出部２４５は、エンコーダ１４の適応予測部１４７と再生信号算出部１４８の構成と同様である。
【００５１】
機能ブロックＳ２４は、変数ＬＡＷ，Ｉ，ＳＲ，ＳＥ，Ｙを入力として、変数ＳＤを出力する。具体的には、機能ブロックＳ２４は、出力ＰＣＭフォーマット変換部（ＣＯＭＰＲＥＳＳ，ＥＸＰＡＮＤ，ＳＵＢＴＡ，ＬＯＧ，ＳＵＢＴＢ）２４６と同期符号化補正部（ＳＹＮＣ）２４７とから構成される。出力ＰＣＭフォーマット変換部２４６は、均一ＰＣＭ信号をμ則ＰＣＭ信号に変換する。同期符号化補正部２４７は、タンデム接続時にコーデックの同期特性を確保するため、出力ＰＣＭ信号を再符号化する。
【００５２】
機能ブロックＳ２５は、変数Ｉ，ＴＲ，Ａ２Ｐ，Ｙを入力として、変数ＡＬ，ＴＤを出力する。具体的には、機能ブロックＳ２５は、トーン検出部（ＴＯＮＥ，ＴＲＩＧＢ）２４８と適応速度制御部（ＦＵＮＣＴＦ等トーン検出部の処理ブロック以外の処理ブロック）２４９とから構成される。トーン検出部２４８及び適応速度制御部２４９は、トーン検出部１４９及び適応速度制御部１５０の構成と同様である。
【００５３】
機能ブロックＳ２６は、変数Ｉ，ＡＬを入力として、変数Ｙ，ＹＬを出力する。具体的には、機能ブロックＳ２６は、量子化スケールファクタ適応部（ＦＵＮＣＴＷ，ＦＩＬＴＤ，ＬＩＭＢ，ＦＩＬＴＥ，ＭＩＸ）２５０からなる。量子化スケールファクタ適応部２５０は、量子化スケールファクタ適応部１５１の構成と同様である。
【００５４】
［１−４．エンコーダ及びデコーダの更なる構成と作用］
次に、本実施形態のエンコーダ１４及びデコーダ２４は、Ｇ．７２６に準拠した高速な音符号化および復号化のための手段、及び、モジュラリティの向上のための手段が施されている。これらについて順に説明する。
【００５５】
［１−４−１．高速化］
本実施形態では、Ｇ．７２６をソフトウェア実装に最適化するため、(1)演算器に適した変数表現、(2)固定小数点フォーマットの再構成、(3)二分探索の採用と動的演算の排除、(4)数値パッキングの排除、(5)遅延ブロック（ＤＥＬＡＹ）の排除をそれぞれ行った。
【００５６】
各手段(1)〜(5)を適用した処理ブロックの一覧を図５に示す。図５では、各処理ブロックに対して適用された手段(1)〜(5)については「○」が付されている。なお、図５中の「１６ＴＣ」は(1)演算器に適した数値表現を示し、「小数点位置」は(2)固定小数点フォーマットの再構成を示す。「二分探索」、「動的演算」は(3)二分探索の採用と動的演算の排除をそれぞれ示す。「パッキング」は(4)数値パッキングの排除を示し、「ＤＥＬＡＹ」は(5)遅延ブロック（ＤＥＬＡＹ）の排除を示す。
【００５７】
(1) 演算器に適した変数表現への最適化
従来、Ｇ．７２６で用いられる変数はｂｉｔ幅が１〜１９の１２種類、表現形式が２の補数や符号付き絶対値、浮動小数点と多岐にわたる。これは記憶領域に乏しいプロセッサ環境やハードウェアによる実装ではリソース最適化の観点から適していると考えられる。
【００５８】
しかし、今日のプロセッサ環境ではＧ．７２６実装規模において、記憶領域を最小化するよりも、アキュームレータや乗算器などの演算や命令に適した変数表現を採る方が、全体としてのパフォーマンスが向上できる。そのため、ソフトウェアではＧ．７２６を忠実に実装すべきではない。
【００５９】
たとえば１６ｂｉｔ演算器やレジスタを有するＤＳＰなどへの実装では、１６ｂｉｔ幅の２の補数で変数を表現すれば最適な演算性能が得られる。但し、絶対値へのアクセスが必要な変数や演算効率に影響しない変数はこの限りではない。
【００６０】
Ｇ．７２６では各変数のｂｉｔ幅に応じた符号検査、２の補数化、符号拡張をそれぞれ個別に処理しているが、プロセッサに適した変数表現に統一すれば、これらは全てプロセッサが担当するためソフトウェア実装する必要がなくなる。すなわち、各処理ブロックにおいて、入出力される変数毎にｂｉｔ幅に応じた符号検査、２の補数化、符号拡張を処理するには、これらの処理を行うためのプログラムが必要になるが、予めプロセッサに適した変数表現とすれば、そのようなブログラムの必要がなくなる。
【００６１】
本実施形態のエンコーダ１４及びデコーダ２４では、図５に示す各処理ブロックにおいて変数を、２の補数で表現し、実装先プロセッサに適したｂｉｔ幅へ符号拡張した設計を採用する。この設計が適用される処理ブロックは、図５に示すように、ＦＭＵＬＴ、ＳＵＢＴＡ、ＭＩＸ、ＬＯＧ、ＳＵＢＴＢ、ＱＵＡＮ、ＲＥＣＯＮＳＴ、ＡＤＤＡ、ＡＮＴＩＬＯＧ、ＴＲＡＮＳ、ＦＩＬＴＡ、ＦＩＬＴＢ、ＦＩＬＴＤ、ＬＩＭＢ、ＦＩＬＴＥ、ＡＤＤＣ、ＡＤＤＢ、ＦＬＯＡＴＢ、ＦＬＯＡＴＡ、ＣＯＭＰＲＥＳＳ、ＥＸＰＡＮＤ、ＳＹＮＣ、ＵＰＡ２、ＬＩＭＣ、ＵＰＡ１、ＬＩＭＤ、ＳＵＢＴＣ、ＦＩＬＴＣ、ＸＯＲ、ＵＰＢである。これらの処理ブロックへの入力及び出力される各変数のうち、高速化が見込める変数に対して２の補数で表現し、実装先プロセッサに適したｂｉｔ幅へ符号拡張した設計をしている。
【００６２】
「実装先プロセッサに適したｂｉｔ幅へ符号拡張した設計」とは、例えば、レジスタを有するプロセッサへの実装の場合、そのレジスタのｂｉｔ幅と負数の表現形式に適合した設計をいう。また、演算器（アキュームレータ）の入力ビット幅に適合した設計をいう。プロセッサに適したｂｉｔ幅は、例えば、４、８、１６、３２、６４、１２８ｂｉｔ等が挙げられる。
【００６３】
このように、図５に示す各処理ブロックの入出力変数の少なくとも一部を、２の補数とし、実装先のプロセッサのｂｉｔ幅へ符号拡張した表現形式にすることにより、より高速に演算を行うことができる。
【００６４】
(2)固定小数点フォーマットの再構成
従来、Ｇ．７２６では多様な変数表現に合わせて、多様な固定小数点フォーマットが定義されている。このため、異なるフォーマット間での加減算では何れか１つのフォーマットへ動的に変換し、事前に桁合わせを行わなければならない。
【００６５】
このフォーマット変換には、シフトやマスクなどのビット演算を要するため、フォーマット数を抑えれば高速化に有利になるが、Ｇ．７２６に準拠しなくなるほど演算精度に影響する固定小数点位置の変更はできない。
【００６６】
しかし、演算精度に影響を与えない固定小数点フォーマットの再構成による、フォーマット変換回数の最小化は行うべきである。
【００６７】
ここで、フォーマット変換の一例を示す。図１０、１１は、従来のＧ．７２６のエンコーダ、デコーダの詳細な機能ブロック図である。Ｇ．７２６では、図１０の付番６に示すように、適応量子化部において、ＲＥＣＯＮＳＴ→ＡＤＤＡ→ＡＮＴＩＬＯＧの順で演算処理が行われる。ＡＤＤＡブロックには変数ＤＱＬＮとＹが入力され、変数ＤＱＬがＡＮＴＩＬＯＧブロックに出力され、ＡＮＴＩＬＯＧブロックは変数ＤＱＬを入力として、変数ＤＱを出力する。
【００６８】
この変数ＤＱＬＮとＹの固定小数点フォーマットは、それぞれＱ７（小数点以下７桁）とＱ９（小数点以下９桁）であるため、ＡＤＤＡブロックにおいて、ＹをＱ７に桁合わせの上和を求めてＤＱＬとし、後段のＡＮＴＩＬＯＧブロックにおいてＤＱＬの小数点以下７ｂｉｔをシフト演算で抽出してＤＱを求めている。すなわち、従来のＧ．７２６では、ＡＤＤＡブロックとＡＮＴＩＬＯＧブロックとで計２回のフォーマット変換を行っている。
【００６９】
換言すれば、ＲＥＣＯＮＳＴブロックから出力された変数ＤＱＬＮは、Ｑ７フォーマットの定数配列であるため、ＡＤＤＡブロックにおいて小数点以下の桁数を合わせる必要が出てくる。この点、この変数ＤＱＬＮを７ｂｉｔ精度を維持したＱ９フォーマットとして設計することにより、ＡＤＤＡブロックでＹとの桁合わせを行うことなく、Ｑ９フォーマットのＤＱＬを求めることができ、フォーマット変換回数を削減できる。仮にこのＤＱＬをＱ７へ丸めれば、Ｇ．７２６のＤＱＬと同じ値となるため演算精度は保たれる。なお、後段のＡＮＴＩＬＯＧブロックでは、Ｑ９であることに注意してＤＱＬの小数点以下７ｂｉｔを抽出するが、これにはＧ．７２６よりも２ｂｉｔ少なくシフトすれば良い。
【００７０】
本実施形態では、このような固定小数点フォーマットの再構成を行っている。固定小数点フォーマットの再構成とは、多入力の処理ブロックにおいて、当該処理ブロックの演算処理を、入力される変数のうち小数点以下の桁が最も大きい変数に小数点以下の桁を合わせることをいう。すなわち、当該処理ブロックに入力される変数は、入力される変数のうち、小数点以下の桁が最も大きい変数に小数点以下の桁が等しくされている。
【００７１】
この固定小数点フォーマットの再構成は、入力される変数の小数点以下の桁が異なる多入力の処理ブロックであれば適用可能である。適用対象の多入力の処理ブロックの出力数は、１つであっても複数であっても良い。図５に示すように、少なくとも適応速度制御部１５０、２４９のＦＵＮＣＴＦ、および量子化スケールファクタ適応部１５１、２５０のＦＵＮＣＴＷとそれらに関連する処理ブロック（ＲＥＣＯＮＳＴ，ＡＤＤＡ，ＡＮＴＩＬＯＧ，ＦＵＮＣＴＦ，ＦＩＬＴＡ，ＦＩＬＴＢ，ＦＵＮＣＴＷ，ＦＩＬＴＤ，ＦＩＬＴＥ，ＳＵＢＴＣ，ＦＩＬＴＣ）においても適用されている。
【００７２】
固定小数点フォーマットの再構成により、不要なフォーマット変換を排除できるので、高速演算が可能になる。
【００７３】
(3)二分探索の採用と動的演算の排除
Ｇ．７２６のＬＯＧやＦＬＯＡＴＡ［Ｂ］、ＣＯＭＰＲＥＳＳブロックなどでは、数値の桁を求めるためにＯ（ｎ）の逐次探索が行われ、その桁情報を用いて後段の演算を進めている。
【００７４】
このＯ（ｎ）の逐次探索を、Ｏ（ｌｏｇｎ）の二分探索に再構成すれば高速化が望める。たとえＣＯＭＰＲＥＳＳブロックのｆｏｒ文による探索であっても閾値として定数展開可能なため静的な二分探索構造に再構成できる。さらに、二分探索の最終段では数値の桁が特定できているため、このタイミングで静的な桁情報を用いるよう後段の演算を再配置・再構成すれば、Ｇ．７２６のように条件分岐を抜けた後に変数に保持された桁情報を動的に用いるよりも高速化できる。下記に逐次探索を適用した例と二分探索を適用した例を用いて、上記内容について説明する。
【００７５】
図６（ａ）は従来の逐次探索を説明するためのコード例であり、図６（ｂ）は、本実施形態の二分探索を説明するためのコード例である。何れの場合も値ａの範囲に応じた演算結果の出力ｂ（＝２ｋ）を求める例である。
【００７６】
図６（ａ）では、値ａの範囲で条件分岐を行い、条件分岐が終了するとｋの値が求まり、その求めたｋの値をｂ＝２ｋに代入することで、最終的に出力ｂを求めている。すなわち、中間値ｋを用いて値ａの範囲探索後に演算により、動的に値ｂを求めている。換言すれば、値ａの範囲探索結果に応じて中間値ｋが変動し、最終的に出力される値ｂも変動する。
【００７７】
一方、図６（ｂ）では、中間値ｋを介することなく、ｂを動的に求めず定数を二分探索の最終段において、直接代入するのみで同一の目的を達成している。なお、二分探索の最終段とは、図６（ｂ）の値ｂの代入式の処理位置をいう。
【００７８】
本実施形態では、変数の数値の桁を求める処理ブロックに対して二分探索を適用する。さらに、二分探索の閾値が定数である場合には、上記のように、数値の範囲と数値の桁との間に一対一の対応関係があり、さらに上記のｂ＝２ｋのように、数値の桁と出力結果にも対応関係がある。従って、設計時には、数値の範囲と出力結果に対応関係があり、その対応関係は予め定まっている。そのため、図６（ｂ）の「ｉｆ  １２７＜ａ  ｔｈｅｎ  ｂ＝１２８」のように、二分探索の結果である変数の数値の桁から予め定まっている出力結果を直接代入することで、数値の桁から直接出力結果を得ることができる。
【００７９】
このように、本実施形態は、実行時に演算などの複数処理を伴わずに、設計時に定まる情報のみを用いる静的な二分探索構造を有する。この二分探索と動的演算の排除は、例えば、図５に示すように、ＭＩＸ、ＬＯＧ、ＡＤＤＣ、ＡＤＤＢ、ＦＬＯＡＴＢ、ＦＬＯＡＴＡ、ＣＯＭＰＲＥＳＳ、ＥＸＰＡＮＤ、ＳＹＮＣにおいて適用されている。このうち、ＭＩＸ、ＡＤＤＣ、ＡＤＤＢは、動的演算の排除のみが適用されている。
【００８０】
すなわち、変数の数値の桁を求める第１のステップと、当該桁に応じた所定の処理を行う第２のステップとを有する処理ブロックにおいて、第１のステップでは、二分探索により変数の数値の桁を求め、第２のステップでは、当該数値の桁から出力結果が設計時に予め定まるため、当該出力結果を、加減算を行うことなく直接出力する。なお、ＭＩＸ、ＡＤＤＣ、ＡＤＤＢのように、設計時に予め出力結果が定まっている場合は、直接出力するようにしても良い。
【００８１】
上記のように、二分探索により比較回数を最大Ｏ（ｌｏｇｎ）に低減できる。また、二分探索結果から中間値を介さずに直接出力を求めるようにしたので、算術演算の演算回数を低減できる。
【００８２】
(4)数値パッキングの排除
Ｇ．７２６では、ＦＬＯＡＴＡ［Ｂ］とＦＭＵＬＴブロックにおいて浮動小数点演算を行っているが、ＦＬＯＡＴＡ［Ｂ］ブロックにて固定小数点を浮動小数点化した際、数値を構成する符号と指数部と仮数部とを一つの変数へビット割り当てによりパッキングしている。
【００８３】
しかし、後段のＦＭＵＬＴブロックではすぐ様このパッキングを解いてその３要素を用いて浮動小数点演算を行っている。この様子を模式的に図７（ａ）に示す。この浮動小数点のパッキングとアンパッキングにはシフトやマスクと論理和など複数のビット演算が含まれており、冗長である。
【００８４】
そこで、本実施形態では、図７（ｂ）に示すように、浮動小数点の一変数のパッキングは行わず、符号と指数部と仮数部を個別の変数に保持したまま処理ブロック間を伝送する。これにより、不要なビット演算を排除することができる。
【００８５】
浮動小数点の３要素変数は構造化すれば、一変数のように簡便に取り扱うことができる。この構造化とは、例えば、構造体や配列変数の適用である。
【００８６】
(5)遅延ブロック（ＤＥＬＡＹ）の排除
Ｇ．７２６では遅延作用を有するＤＥＬＡＹブロックが多数含まれている。このＤＥＬＡＹブロックは、「Ｍｅｍｏｒｙ  ｂｌｏｃｋ」として規定されており、入力された変数を記憶するブロックである。ソフトウェア実装ではＹＬなどの状態変数自体が遅延作用を有するため、それら状態変数をＧ．７２６に準拠して適切にリセットすればＤＥＬＡＹブロックに関連する冗長な代入演算を排除できる。
【００８７】
しかし、Ｇ．７２６の処理ブロック構成から単にＤＥＬＡＹブロックを排除し隣接する処理ブロック間を連結し直すだけでは、ＤＥＬＡＹブロックが入力された変数を記憶するブロックであることから状態の要素がなくなることとなり破綻する。本実施形態では、次に説明するように、処理順序を見直してエンコーダとデコーダの再構成を行い、不要な処理を排除して高速化を図るとともにモジュラリティの向上を図っている。
【００８８】
ＤＥＬＡＹブロックを排除した機能ブロックとしては、図５に示すように、ＦＭＵＬＴ，ＬＩＭＡ，ＭＩＸ，ＴＲＡＮＳ，ＦＩＬＴＡ，ＦＩＬＴＢ，ＬＩＭＢ，ＦＩＬＴＥ，ＦＬＯＡＴＢ，ＦＬＯＡＴＡ，ＵＰＡ２，ＬＩＭＤ，ＳＵＢＴＣ，ＦＩＬＴＣ，ＴＲＩＧＡ，ＸＯＲ，ＵＰＢが挙げられる。
【００８９】
［１−４−２．モジュラリティの向上］
Ｇ．７２６によるエンコーダ及びデコーダは、図１０、１１に示すように、Ｇ．１９１のＧ．７２６モジュールではブロック毎に関数化され、当該ブロック内の各関数が図１０、１１中に付番した通りの順序で呼び出されるように実装されている。例えば、図１０に示すエンコーダでは、最初に４．２．６の適用予測部及び再生信号算出部の付番１の処理を行い、次に、４．２．１の入力ＰＣＭフォーマット変換部の付番２の処理に移り、４．２．５の適応速度制御部内の付番３の処理を行う。このように、各関数は処理ブロックを跨いで複数箇所に入り交じって呼び出されるため、モジュラリティが低く、保守や機能ブロック化が容易ではない。
【００９０】
この点、高速化の要請からＤＥＬＡＹブロックの排除やソフトウェア実装上不要な処理の排除が必要であることも併せ、関数の呼び出し構造を再構成することによりモジュラリティを高めれば、これらの問題を解決できる。その際、Ｇ．７２６の記述構造との親和性を高めることが望ましい。
【００９１】
そこで、本実施形態では、Ｇ．７２６の構造を再構成するために、エンコーダ１４又はデコーダ２４を表すコーデックオブジェクトを導入している。コーデックオブジェクトは、基本状態変数、合成状態変数、フロー変数の各集合で構成される。すなわち、コーデックオブジェクトは、基本状態変数、合成状態変数、フロー変数をそれぞれ１つの構造体にまとめて、これらの情報を一つの音チャンネルである遷移間の状態を表現する。
【００９２】
図３及び図４において、各処理ブロックの左右に示された変数のうち、薄めのハイライトが施されたものが基本状態変数を示し、濃いめのハイライトが施されたものが合成状態変数を示している。ハイライトが施されていないものがフロー変数を示している。
【００９３】
基本状態変数は、所謂状態変数であり、Ｇ．７２６モジュールでも定義されている状態変数と同様の状態変数である。但し、上記のように、高速化の手段(1)〜(5)の少なくとも何れかが講じられていても良い。基本状態変数は、具体的には、図３及び図４に示すように、Ｒ，Ｂ１〜Ｂ６，Ａ１，Ａ２，ＰＫ１，ＰＫ２，ＤＱ１〜ＤＱ６，ＳＲ１，ＳＲ２，ＴＤ，ＤＭＳ，ＤＭＬ，ＡＰ，ＹＵ，ＹＬ等が挙げられる。この中でもＳＲｎ（ｎ＝１，２）、ＤＱｍ（ｍ＝１，２，…，６）は、符号と指数部と仮数部の３変数で構成されていても良い。
【００９４】
合成状態変数は、基本状態変数又は合成状態変数のみを入力とする単数又は複数の処理ブロックにより出力された変数である。例えば、図３の機能ブロックＳ４内のＦＭＵＬＴブロック，ＡＣＣＵＭブロックに着目すると、これらのブロックの入力は基本状態変数であり、出力が合成状態変数である。合成状態変数を出力する処理ブロックとしては、ＦＭＵＬＴブロック及びＡＣＣＵＭブロックの複合処理ブロックの他、図３の機能ブロックＳ６内のＭＩＸのように、単数の処理ブロックも含まれる。合成状態変数は、図３及び図４に示すように、ＳＥ，Ｙ，ＳＥＺ，ＡＬが挙げられる。
【００９５】
フロー変数は、エンコーダ１４又はデコーダ２４への入力から派生し、各処理単位期間内で生成され消費される変数である。換言すれば、フロー変数は、各処理単位期間を跨いで保持されない。例えば、図３の機能ブロック２のＥＸＰＡＮＤから出力された変数ＳＬは、後段のＳＵＢＴＡにそのまま入力されており、ＥＸＰＡＮＤで生成されてＳＵＢＴＡで消費されている。フロー変数としては、具体的には、Ｓ，ＳＬ，Ｄ，Ｉ，ＤＱ，ＴＲ，ＳＩＧＰＫ，ＰＫ０，Ａ２Ｐ，ＰＫ０，ＳＲ，ＴＤＰが挙げられる。この中でもフロー変数ＤＱは、符号と絶対値の２変数で構成されていても良い。
【００９６】
基本状態変数および合成状態変数は、各処理単位期間（サンプリング周期）内で更新されるまでは自由に参照可能なように、メモリにそれぞれ記憶されている。このため、更新前の値を参照するに当たり事前に合成状態変数を出力する関数群を呼び出す必要がなくなるので、同関数群の呼び出しタイミングの自由度を向上できる。
【００９７】
この点につき、エンコーダの初期動作を例にして詳細に説明する。なお、ここではエンコーダの初期動作について説明するが、デコーダでも同様である。エンコーダの動作においては、音情報Ｓが入力されると、図３の機能ブロックＳ２、図１０の付番２に示すように、入力ＰＣＭフォーマット変換と差分信号算出を行うが、機能ブロックＳ２、付番２内のＳＵＢＴＡでは変数ＳＥが入力として必要である。この点、従来のＧ．７２６では、付番２の処理よりも前に、図１０に示すように、適応予測部及び再生信号算出部内の付番１の関数を呼び出して変数ＳＥＺ，ＳＥを算出している。すなわち、付番１の関数ではＤＥＬＡＹブロックへのリセット信号Ｒの入力に伴い、３つのＦＭＵＬＴブロックから各変数の初期値がＡＣＣＵＭブロックに入力され、変数ＳＥＺ，ＳＥが算出される。
【００９８】
このように、従来のＧ．７２６では、音符号化に当たって、必要な変数を各変数の初期値から演算することを予め行っている。そして、この演算には、遅延素子であるＤＥＬＡＹブロックが複数使用されており、必要変数の演算と遅延素子の使用とが相乗的に高速演算の妨げとなっている。
【００９９】
一方、本実施形態では、リセット信号Ｒによる各変数の初期値から定まる変数については、一種の状態変数とみなし、合成状態変数としてメモリに記憶させている。言い換えると、基本状態変数の初期値から定まる状態変数は、逐一演算せずとも定まっているため、合成状態変数としてメモリに保持する。また、この基本状態変数と合成状態変数を入力とする処理ブロックから出力された変数も初期状態から定まる変数であるため、これも合成状態変数としてメモリに保持する。すなわち、合成状態変数とは、基本状態変数の初期値から定まる状態変数であり、その入力にフロー変数を含まないで定まる変数である。
【０１００】
このように、基本状態変数と合成状態変数をメモリに記憶させるようにしたので、逐一関数群を呼び出す必要も演算する必要もなくなるとともに、遅延素子となるＤＥＬＡＹブロックを排除することができる。このため、上記で図３及び図４を参照して示したように、各機能ブロックをこれらの図中の上から下に進むように、エンコーダ１４では、Ｓ２→Ｓ３→…→Ｓ６の順で進行し、デコーダ２４では、Ｓ２２→Ｓ２３→…→Ｓ２６の順で進行させることができる。また、各機能ブロックＳ１〜Ｓ６，Ｓ２１〜Ｓ１６においては、各図中の左から右にかけて進行する。このように、機能ブロック間を飛び越えて処理が入り交じってしまうこともなくなるので、モジュラリティや保守、可読性を向上させることができる。
【０１０１】
［１−５．テストベクターの生成］
本実施形態のエンコーダ１４又はデコーダ２４がＧ．７２６に準拠するか否かは、Ｇ．７２６ＡｐｐｅｄｉｘＩＩ              が提供するテストベクターにより検証すれば良い。しかし、このテストベクターはＧ．７２６を忠実に実装したソフトウェア専用のテストベクターであるため、本実施形態のエンコーダ１４又はデコーダ２４の準拠性を検証するテストベクターは別途作成する必要がある。
【０１０２】
すなわち、テストベクターは、準拠性を検証するための時系列に並べたデータ列であり、音情報の入力、符号化、復号化、音の再生の際のそれぞれの処理段階で出力された各変数の数値データ列である。この点、Ｇ．７２６に準拠しているか否かは、Ｇ．７２６ＡｐｐｅｄｉｘＩＩが提供するテストベクターが示す数値データと一致するかで判断できる。
【０１０３】
但し、上記のように、Ｇ．７２６は複数の機能ブロック間で入り交じって処理を行うのに対し、本実施形態のエンコーダ１４又はデコーダ２４は、機能ブロック間で入り交じって処理することはないため、データ列の時系列が異なっている。そのため、Ｇ．７２６ＡｐｐｅｄｉｘＩＩが提供するテストベクターから、本実施形態のエンコーダ１４又はデコーダ２４のＧ．７２６の準拠性を検証するためのテストベクターを別途生成する。
【０１０４】
テストベクターの生成について説明すると、Ｇ．７２６の準拠性を担保するためＧ．７２６ＡｐｐｅｄｉｘＩＩのテストベクターから、サブセットの検証対象となる変数の数値データ列を抽出し、サブセット用のテストベクターを生成する。この際、ベースのコーデックオブジェクトの状態変数にサブセットの検証に必要な検証用変数を一時的に追加する。なお、この検証用変数は、Ｇ．７２６におけるフロー変数などの状態変数として保持されない変数をコピーして保持するものである。
【０１０５】
追加した検証用変数へ検証データを代入する代入文を、ベースのエンコーダ１４又はデコーダ２４へ挿入し、当該エンコーダ１４又はデコーダ２４をサブセット検証用のテストベクター生成器とする。このテストベクター生成器にＧ．７２６ＡｐｐｅｄｉｘＩＩが提供するテストベクターを入力し、サブセット検証テストベクターを生成する。このテストベクターにより、新たに作成したエンコーダ１４又はデコーダ２４のサブセットのＧ．７２６の準拠性を検証することができる。
【０１０６】
［１−６．動作］
図８及び図９を参照し、本システムの動作について説明する。図８は、符号化装置１０の動作フローチャートである。図９は、復号化装置２０の動作フローチャートである。なお、これらは動作の一例であり、これらの順序に限定されない。
【０１０７】
符号化装置１０の動作は、主としてリセット、音入力、エンコード、及び符号出力からなる。復号化装置２０の動作は、主としてリセット、符号入力、デコード、及び音出力からなる。
【０１０８】
［初期化］
図８及び図９に示すように、まず、運用開始時の初期化処理として、符号化装置１０と復号化装置２０ともに状態変数をリセットする（ステップＳ０１）。このリセットは、例えば、ユーザによるアクションを契機として外部Ｉ／Ｆ１１、２１、制御部２１、２２を介して行う。この中には、制御部２１、２２からエンコーダ１４、２４にリセット信号がリセット部１４１、２４１に入力され、コーデックオブジェクトがリセットされることを含む。但し、フロー変数はリセットする必要はない。初期化処理の完了により、符号化又は復号化動作とそれらに付帯する動作を開始する。
【０１０９】
［情報入力及び出力］
符号化装置１０には、音又は音情報が音入力Ｉ／Ｆ１５等により外部から入力される（ステップＳ０２）。この音情報はエンコーダ１４に入力され、ステップＳ０３〜Ｓ０７までの処理が順に成され、音符号が伝送媒体３０を介して復号化装置２０に出力される（ステップＳ０８）。このとき、符号化装置１０は、同期信号などエンコードされた音符号再生に必要な情報を復号化装置２０へ出力する。
【０１１０】
復号化装置２０には、伝送媒体３０から入力された音符号及びその再生に必要な情報が入力される（ステップＳ０９）。そして、この音符号及び情報から符号入力Ｉ／Ｆ２３により入力された音符号を再生してデコーダ２４に入力し、デコーダ２４によりステップＳ１０〜Ｓ１４までの処理が順になされ、音符号を音情報に復号し、音出力Ｉ／Ｆ２５を介して復号化装置２０外部へ出力される（ステップＳ１５）。
【０１１１】
符号化装置１０のステップＳ０８又は復号化装置２０のステップＳ１５の後、制御部１２、２２によりリセット要求があるかを確認する（ステップＳ１６）。このリセット要求としては、例えば、ユーザによる外部Ｉ／Ｆ１１、２１からのリセット要求や、制御部１２、２２が内部異常を検出した場合などが挙げられる。リセット要求がある場合は（ステップＳ１６のＹＥＳ）、ステップＳ０１に戻る。一方、リセット要求がない場合は（ステップＳ１６のＮＯ）、ステップＳ１７に進み、ステップＳ０２の音情報の入力又はステップＳ０９の音符号の入力を継続するか（ステップＳ１７のＮＯ）、終了する（ステップＳ１７のＹＥＳ）。
【０１１２】
なお、ステップＳ０１、Ｓ０２、Ｓ１６、Ｓ１７は、符号化装置１０と復号化装置２０とで同時並行して行っても良いし、それぞれ独立に行っても良く、その前後も任意である。また、何れか一方だけ行うようにしても良い。
【０１１３】
［１−７．効果］
（１）本実施形態の音符号化システムは、入力された音を符号化するエンコーダ１４又は入力された音符号を復号化するデコーダ２４を含み構成される音符号化システムであって、エンコーダ１４又はデコーダ２４は、符号化又は復号化を行う処理部と、前記処理部の演算の入力又は出力となる状態変数を記憶するメモリと、を備え、状態変数には、基本状態変数と、前記基本状態変数の初期値から定まる合成状態変数と、が含まれ、前記処理部は、前記メモリに記憶された前記基本状態変数と前記合成状態変数とを参照して前記符号化又は復号化を行うようにした。
【０１１４】
これにより、基本状態変数と合成状態変数とがメモリに記憶されているため、各処理単位期間（サンプリング周期）内で更新されるまでは自由に参照可能であり、更新前の値を参照するに当たり事前に合成状態変数を出力する関数群を呼び出して演算する必要がない。そのため、符号化又は復号化の処理を高速に行うことができる。また、上記関数群の呼び出しに用いられた遅延素子となるＤＥＬＡＹブロックも排除でき、高速処理が可能となる。
【０１１５】
（２）エンコーダ１４又はデコーダ２４は、前記処理部として複数の機能ブロックＳ２〜Ｓ６，Ｓ２２〜Ｓ２６を有し、１つの機能処理部による処理の終了後に他の機能処理部による処理を実行し、機能処理部を順に実行して符号化又は復号化を行うようにした。
【０１１６】
これにより、機能ブロック間で処理が入り交じることがなくなるので、モジュラリティの向上、保守やサブセットの容易化を図ることができる。
【０１１７】
（３）エンコーダ１４又はデコーダ２４は、プロセッサを備え、エンコーダ１４又はデコーダ２４の状態変数の少なくとも一部は、２の補数であり、前記プロセッサのｂｉｔ幅に符号拡張するようにした。
【０１１８】
従来のＧ．７２６では各変数のｂｉｔ幅に応じた符号検査、２の補数化、符号拡張を行うなど、各変数に合わせた処理を行っていたため、各変数をそれぞれ個別に処理しなければならない。これに対し、本実施形態では、状態変数を２の補数であり、前記プロセッサのｂｉｔ幅へ符号拡張された形式にしたことにより、変数側をプロセッサが演算しやすいように合わせたので、プロセッサにより各変数に合わせた処理を行う必要がなく、高速に演算を行うことができる。
【０１１９】
（４）前記処理部は、所定の処理を行う多入力の第１の処理部を備え、前記第１の処理部に入力される変数は、入力される変数のうち、最も小数点の桁が大きい変数に小数点の桁が等しくするようにした。
【０１２０】
これにより、予め小数点の桁が最大の変数に他の変数を合わされているので、不要なフォーマット変換を排除できるため、高速演算が可能になる。
【０１２１】
（５）前記処理部は、変数の数値の桁を求める第２の処理部と、前記第２の処理部の前記数値の桁に応じた所定の処理を行う第３の処理部とを備え、前記第２の処理部は、二分探索で前記数値の桁を求め、前記第３の処理部は、前記数値の桁に応じた情報を直接出力するようにした。
【０１２２】
これにより、二分探索により比較回数を最大Ｏ（ｌｏｇｎ）に低減できる。また、二分探索結果から中間値を介さずに直接出力を求めるようにしたので、演算の処理回数を低減できる。
【０１２３】
（６）前記処理部は、その内部で、前記符号化又は復号化の際、符号と指数部と仮数部とから構成される状態変数を、個別の変数に保持したまま伝送するようにした。これにより、不要なビット演算を排除することができる。
【０１２４】
本実施形態によれば、高速化手段(1)〜(5)により、Ｇ．１９１と比較して処理時間を少なくとも１／４とすることができる。
【０１２５】
［２．他の実施形態］
本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。以下は、その一例である。
【０１２６】
第１の実施形態の音符号化システムでは、エンコーダ１４とデコーダ２４とが別体として構成したが、これらを一体として構成したシステムとして構成しても良い。
【符号の説明】
【０１２７】
１０            符号化装置
１１            外部Ｉ／Ｆ
１２            制御部
１３            音入力Ｉ／Ｆ
１４            エンコーダ
１５            符号出力Ｉ／Ｆ
２０            復号化装置
２１            外部Ｉ／Ｆ
２２            制御部
２３            符号入力Ｉ／Ｆ
２４            デコーダ
２５            音出力Ｉ／Ｆ
３０            伝送媒体
Ｓ１〜Ｓ６      機能ブロック
１４１          リセット部
１４２          入力ＰＣＭフォーマット変換部
１４３          差分信号算出部
１４４          適応量子化部
１４５          適応逆量子化部
１４６          変化点検出部
１４７          適応予測部
１４８          再生信号算出部
１４９          トーン検出部
１５０          適応速度制御部
１５１          量子化スケールファクタ適応部
Ｓ２１〜Ｓ２６  機能ブロック
２４１          リセット部
２４２          適応逆量子化部
２４３          変化点検出部
２４４          適応予測部
２４５          再生信号算出部
２４６          出力ＰＣＭフォーマット変換部
２４７          同期符号化補正部
２４８          トーン検出部
２４９          適応速度制御部
２５０          量子化スケールファクタ適応部
【図１】
0006301877.tif 000002
【図２】
0006301877.tif 000003
【図３】
0006301877.tif 000004
【図４】
0006301877.tif 000005
【図５】
0006301877.tif 000006
【図６】
0006301877.tif 000007
【図７】
0006301877.tif 000008
【図８】
0006301877.tif 000009
【図９】
0006301877.tif 000010
【図１０】
0006301877.tif 000011
【図１１】
0006301877.tif 000012