(57)【要約】【課題】より効率良く演算処理を行う。【解決手段】線形予測部５１は、オーディオ信号を周波数領域に変換したスペクトルデータを線形予測して反射係数を求め、量子化部１５３は、反射係数を量子化して量子化値を得るとともに、量子化値を逆量子化して逆量子化値を得る。範囲算出部１５１は、所定の量子化値をとりうる反射係数の範囲を予め算出し、線形予測係数変換部５４は、逆量子化値を線形予測係数に変換し、残差信号算出部５５は、線形予測係数を用いて、スペクトルデータと、線形予測されたスペクトルデータとの残差信号を算出する。なお、量子化部１５３は、反射係数が入力されたとき、入力された反射係数が含まれる範囲に対応する所定の量子化値を得る。本発明は、例えば、TNS処理を行うオーディオ符号化装置に適用することができる。【選択図】図５
2010060989.tif 000002
【特許請求の範囲】
【請求項１】
非線形な演算を施して得られる演算結果を離散化した所定の離散値をとりうる入力値の範囲を算出する範囲算出手段と、
前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の離散値を出力する離散値出力手段と
を備える演算装置。
【請求項２】
前記入力値の範囲と、前記所定の離散値とを対応付けた範囲テーブルを作成する範囲テーブル作成手段をさらに備え、
前記離散値出力手段は、前記範囲テーブルに基づいて、入力された前記入力値が含まれる前記範囲に対応する前記所定の離散値を出力する
請求項１に記載の演算装置。
【請求項３】
前記範囲テーブルに基づいて、ハッシュテーブルを作成するハッシュテーブル作成手段をさらに備え、
前記離散値出力手段は、前記ハッシュテーブルに基づいて、前記範囲テーブルの初期探索値を特定し、前記初期探索値と前記範囲テーブルとに基づいて、入力された前記入力値が含まれる前記範囲に対応する前記所定の離散値を出力する
請求項２に記載の演算装置。
【請求項４】
前記離散値出力手段は、入力された前記入力値が含まれる前記範囲を二分探索し、探索された前記範囲に対応する前記所定の離散値を出力する
請求項１に記載の演算装置。
【請求項５】
前記範囲算出手段は、前記所定の離散値に対応する前記入力値の範囲を、予め算出する
請求項１に記載の演算装置。
【請求項６】
非線形な演算を施して得られる演算結果を離散化した所定の離散値をとりうる入力値の範囲を算出する範囲算出ステップと、
前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の離散値を出力する離散値出力ステップと
を含む演算方法。
【請求項７】
非線形な演算を施して得られる演算結果を離散化した所定の離散値をとりうる入力値の範囲を算出する範囲算出ステップと、
前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の離散値を出力する離散値出力ステップと
を含む処理をコンピュータに実行させるプログラム。
【請求項８】
非線形な演算を施して得られる演算結果を量子化した所定の量子化値をとりうる入力値の範囲を算出する範囲算出手段と、
前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の量子化値を出力する量子化値出力手段と
を備える量子化装置。
【請求項９】
非線形な演算を施して得られる演算結果を量子化した所定の量子化値をとりうる入力値の範囲を算出する範囲算出ステップと、
前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の量子化値を出力する量子化値出力ステップと
を含む量子化方法。
【請求項１０】
非線形な演算を施して得られる演算結果を離散化した所定の離散値をとりうる入力値の範囲を算出する範囲算出ステップと、
前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の量子化値を出力する量子化値出力ステップと
を含む処理をコンピュータに実行させるプログラム。
【請求項１１】
オーディオ信号を周波数領域に変換したスペクトルデータを線形予測し、反射係数を求める線形予測手段と、
前記反射係数を量子化して量子化値を得るとともに、前記量子化値を逆量子化して逆量子化値を得る量子化手段と、
所定の前記量子化値をとりうる前記反射係数の範囲を予め算出する範囲算出手段と、
前記逆量子化値を線形予測係数に変換する係数変換手段と、
前記線形予測係数を用いて、前記スペクトルデータと、線形予測された前記スペクトルデータとの残差信号を算出する残差信号算出手段と
を備え、
前記量子化手段は、前記反射係数が入力されたとき、入力された前記反射係数が含まれる前記範囲に対応する前記所定の量子化値を得る
オーディオ符号化装置。
【請求項１２】
オーディオ信号を周波数領域に変換したスペクトルデータを線形予測し、反射係数を求める線形予測ステップと、
前記反射係数を量子化して量子化値を得るとともに、前記量子化値を逆量子化して逆量子化値を得る量子化ステップと、
所定の前記量子化値をとりうる前記反射係数の範囲を予め算出する範囲算出ステップと、
前記逆量子化値を線形予測係数に変換する係数変換ステップと、
前記線形予測係数を用いて、前記スペクトルデータと、線形予測された前記スペクトルデータとの残差信号を算出する残差信号算出ステップと
を含み、
前記量子化ステップは、前記反射係数が入力されたとき、入力された前記反射係数が含まれる前記範囲に対応する前記所定の量子化値を得る
オーディオ符号化方法。
【請求項１３】
オーディオ信号を周波数領域に変換したスペクトルデータを線形予測し、反射係数を求める線形予測ステップと、
前記反射係数を量子化して量子化値を得るとともに、前記量子化値を逆量子化して逆量子化値を得る量子化ステップと、
所定の前記量子化値をとりうる前記反射係数の範囲を予め算出する範囲算出ステップと、
前記逆量子化値を線形予測係数に変換する係数変換ステップと、
前記線形予測係数を用いて、前記スペクトルデータと、線形予測された前記スペクトルデータとの残差信号を算出する残差信号算出ステップと
を含む処理をコンピュータに実行させ、
前記量子化ステップは、前記反射係数が入力されたとき、入力された前記反射係数が含まれる前記範囲に対応する前記所定の量子化値を得る
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置および方法、量子化装置および方法、オーディオ符号化装置および方法、並びにプログラムに関し、特に、より効率良く演算処理を行うことができるようにする演算装置および方法、量子化装置および方法、オーディオ符号化装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
オーディオ信号を符号化する方式として、MPEG（Moving Picture Expert Group）オーディオ規格が知られている。MPEGオーディオ規格には複数の符号化方式があるが、ISO/IEC（International Organization for Standardization/International Electrotechnical Commission）13818-7にて、MPEG-2オーディオ規格AAC（Advanced Audio Coding）という符号化方式が標準化されている。
【０００３】
また、さらに拡張されたISO/IEC 14496-3にて、MPEG-4オーディオ規格AACという符号化方式が標準化されている。なお、以下では、MPEG-2オーディオ規格AACとMPEG-4オーディオ規格AACとを併せて、AAC規格と呼ぶこととする。
【０００４】
AAC規格に準拠した従来のオーディオ符号化装置は、聴覚心理モデル保持部、ゲイン制御部、スペクトル処理部、量子化／符号化部、およびマルチプレクサ部を備えている。
【０００５】
オーディオ符号化装置に入力されたオーディオ信号は、聴覚心理モデル保持部において、時間軸に沿ってブロック化され、分割帯域ごとに人間の聴覚特性に従って分析されて、各分割帯域の許容誤差強度が算出される。
【０００６】
また、入力されたオーディオ信号は、ゲイン制御部において、４つの等間隔の周波数帯域に分割され、所定の帯域について利得調整が行われる。
【０００７】
さらに、利得調整されたオーディオ信号は、スペクトル処理部において、周波数領域のスペクトルデータに変換され、聴覚心理モデル保持部によって算出された許容誤差強度に基づいて、所定の処理が施される。そして、所定の処理が施されたスペクトルデータ（オーディオ信号）は、量子化／符号化部において、符号列に変換され、マルチプレクサ部において、各種の情報が多重化されることで、ビットストリームとして出力される。
【０００８】
上述したスペクトル処理部においては、TNS（Temporal Noise Shaping）処理と呼ばれる、量子化雑音の時間軸上の波形を制御するために周波数領域のスペクトルデータに対して施される処理が行われる。
【０００９】
TNS処理において、特に、複雑な波形を線形予測よりも少ないパラメータで表現可能なFM合成方式を用いて、周波数領域のスペクトルデータを予測し、また、この信号との差分である残差信号を求め、パラメータと残差信号とを符号化することで、線形予測を使用した処理よりも効率的な符号化処理を行うようにすることが提案されている（例えば、特許文献１参照）。
【００１０】
【特許文献１】特開２００６−４７５６１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述したTNS処理においては、arcsin関数やsin関数といった非線形な関数が用いられているため、アルゴリズムが難解になり、サイクル数を要してしまう。
【００１２】
上述したようなオーディオ符号化装置に実装される組み込みCPU（Central Processing Unit）やDSP（Digital Signal Processor）は、パーソナルコンピュータのCPUと異なり、動作周波数が数百MHzと低いので、数学ライブラリのようなサイクル数を要する関数を用いることは避けたい。
【００１３】
本発明は、このような状況に鑑みてなされたものであり、より効率良く演算処理を行うことができるようにするものである。
【課題を解決するための手段】
【００１４】
本発明の第１の側面の演算装置は、非線形な演算を施して得られる演算結果を離散化した所定の離散値をとりうる入力値の範囲を算出する範囲算出手段と、前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の離散値を出力する離散値出力手段とを備える。
【００１５】
前記演算装置には、前記入力値の範囲と、前記所定の離散値とを対応付けた範囲テーブルを作成する範囲テーブル作成手段をさらに設け、前記離散値出力手段には、前記範囲テーブルに基づいて、入力された前記入力値が含まれる前記範囲に対応する前記所定の離散値を出力させることができる。
【００１６】
前記演算装置には、前記範囲テーブルに基づいて、ハッシュテーブルを作成するハッシュテーブル作成手段をさらに設け、前記離散値出力手段には、前記ハッシュテーブルに基づいて、前記範囲テーブルの初期探索値を特定させ、前記初期探索値と前記範囲テーブルとに基づいて、入力された前記入力値が含まれる前記範囲に対応する前記所定の離散値を出力させることができる。
【００１７】
前記離散値出力手段には、入力された前記入力値が含まれる前記範囲を二分探索し、探索された前記範囲に対応する前記所定の離散値を出力させることができる。
【００１８】
前記範囲算出手段には、前記所定の離散値に対応する前記入力値の範囲を、予め算出させることができる。
【００１９】
本発明の第１の側面の演算方法は、非線形な演算を施して得られる演算結果を離散化した所定の離散値をとりうる入力値の範囲を算出する範囲算出ステップと、前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の離散値を出力する離散値出力ステップとを含む。
【００２０】
本発明の第１の側面のプログラムは、非線形な演算を施して得られる演算結果を離散化した所定の離散値をとりうる入力値の範囲を算出する範囲算出ステップと、前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の離散値を出力する離散値出力ステップとを含む処理をコンピュータに実行させる。
【００２１】
本発明の第２の側面の量子化装置は、非線形な演算を施して得られる演算結果を量子化した所定の量子化値をとりうる入力値の範囲を算出する範囲算出手段と、前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の量子化値を出力する量子化値出力手段とを備える。
【００２２】
本発明の第２の側面の量子化方法は、非線形な演算を施して得られる演算結果を量子化した所定の量子化値をとりうる入力値の範囲を算出する範囲算出ステップと、前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の量子化値を出力する量子化値出力ステップとを含む。
【００２３】
本発明の第２の側面のプログラムは、非線形な演算を施して得られる演算結果を量子化した所定の量子化値をとりうる入力値の範囲を算出する範囲算出ステップと、前記入力値が入力されたとき、入力された前記入力値が含まれる前記範囲に対応する前記所定の量子化値を出力する量子化値出力ステップとを含む処理をコンピュータに実行させる。
【００２４】
本発明の第３の側面のオーディオ符号化装置は、オーディオ信号を周波数領域に変換したスペクトルデータを線形予測し、反射係数を求める線形予測手段と、前記反射係数を量子化して量子化値を得るとともに、前記量子化値を逆量子化して逆量子化値を得る量子化手段と、所定の前記量子化値をとりうる前記反射係数の範囲を予め算出する範囲算出手段と、前記逆量子化値を線形予測係数に変換する係数変換手段と、前記線形予測係数を用いて、前記スペクトルデータと、線形予測された前記スペクトルデータとの残差信号を算出する残差信号算出手段とを備え、前記量子化手段は、前記反射係数が入力されたとき、入力された前記反射係数が含まれる前記範囲に対応する前記所定の量子化値を得る。
【００２５】
本発明の第３の側面のオーディオ符号化方法は、オーディオ信号を周波数領域に変換したスペクトルデータを線形予測し、反射係数を求める線形予測ステップと、前記反射係数を量子化して量子化値を得るとともに、前記量子化値を逆量子化して逆量子化値を得る量子化ステップと、所定の前記量子化値をとりうる前記反射係数の範囲を予め算出する範囲算出ステップと、前記逆量子化値を線形予測係数に変換する係数変換ステップと、前記線形予測係数を用いて、前記スペクトルデータと、線形予測された前記スペクトルデータとの残差信号を算出する残差信号算出ステップとを含み、前記量子化ステップは、前記反射係数が入力されたとき、入力された前記反射係数が含まれる前記範囲に対応する前記所定の量子化値を得る。
【００２６】
本発明の第３の側面のプログラムは、オーディオ信号を周波数領域に変換したスペクトルデータを線形予測し、反射係数を求める線形予測ステップと、前記反射係数を量子化して量子化値を得るとともに、前記量子化値を逆量子化して逆量子化値を得る量子化ステップと、所定の前記量子化値をとりうる前記反射係数の範囲を予め算出する範囲算出ステップと、前記逆量子化値を線形予測係数に変換する係数変換ステップと、前記線形予測係数を用いて、前記スペクトルデータと、線形予測された前記スペクトルデータとの残差信号を算出する残差信号算出ステップとを含む処理をコンピュータに実行させ、前記量子化ステップは、前記反射係数が入力されたとき、入力された前記反射係数が含まれる前記範囲に対応する前記所定の量子化値を得る
【００２７】
本発明の第１の側面においては、非線形な演算を施して得られる演算結果を離散化した所定の離散値をとりうる入力値の範囲が算出され、入力値が入力されたとき、入力された入力値が含まれる範囲に対応する所定の離散値が出力される。
【００２８】
本発明の第２の側面においては、非線形な演算を施して得られる演算結果を量子化した所定の量子化値をとりうる入力値の範囲が算出され、入力値が入力されたとき、入力された入力値が含まれる範囲に対応する所定の量子化値が出力される。
【００２９】
本発明の第３の側面においては、オーディオ信号を周波数領域に変換したスペクトルデータが線形予測され、反射係数が求められ、反射係数が量子化されて量子化値が得られるとともに、量子化値が逆量子化されて逆量子化値が得られ、所定の量子化値をとりうる反射係数の範囲が予め算出され、逆量子化値が線形予測係数に変換され、線形予測係数を用いて、スペクトルデータと、線形予測されたスペクトルデータとの残差信号が算出され、反射係数が入力されたとき、入力された反射係数が含まれる範囲に対応する所定の量子化値が得られる。
【発明の効果】
【００３０】
本発明の第１および第２の側面によれば、より効率良く演算処理を行うことが可能となる。
【００３１】
本発明の第３の側面によれば、より効率良くTNS処理を行うことが可能となる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施の形態について図を参照して説明する。なお、説明は以下の順序で行う。
１．第１の実施の形態
２．第２の実施の形態
３．第３の実施の形態
４．実行結果
５．第４の実施の形態
【００３３】
＜１．第１の実施の形態＞
［オーディオ符号化装置の構成例］
図１に、本発明を適用したオーディオ符号化装置の一実施の形態の構成を示す。
【００３４】
図１のオーディオ符号化装置は、AAC規格に準拠しており、聴覚心理モデル保持部１１、ゲイン制御部１２、スペクトル処理部１３、量子化／符号化部１４、およびマルチプレクサ部１５から構成される。
【００３５】
オーディオ符号化装置に入力されたオーディオ信号は、聴覚心理モデル保持部１１およびゲイン制御部１２に供給される。聴覚心理モデル保持部１１は、入力されたオーディオ信号を時間軸に沿ってブロック化し、ブロック化されたオーディオ信号を分割帯域ごとに人間の聴覚特性に従って分析して、各分割帯域の許容誤差強度を算出する。聴覚心理モデル保持部１１は、算出した許容誤差強度を、スペクトル処理部１３、および、量子化／符号化部１４に供給する。
【００３６】
ゲイン制御部１２は、AAC規格の符号化アルゴリズムとして用意されているMain，LC（Low Complexity），SSR（Scalable Sampling Rate）の３つのプロファイルのうちの、SSRプロファイルのみに使用される。ゲイン制御部１２は、入力されたオーディオ信号を４つの等間隔の周波数帯域に分割し、例えば、最低域以外の帯域について利得調整を行って、スペクトル処理部１３に供給する。
【００３７】
スペクトル処理部１３は、ゲイン制御部１２において利得調整されたオーディオ信号を周波数領域のスペクトルデータに変換する。また、スペクトル処理部１３は、聴覚心理モデル保持部１１から供給された許容誤差強度に基づいて、スペクトル処理部１３の各部を制御し、スペクトルデータに所定の処理を施す。
【００３８】
スペクトル処理部１３は、MDCT（Modified Discrete Cosine Transform）部２１，TNS（Temporal Noise Shaping）処理部２２、インテンシティ／カップリング部２３、予測部２４、およびM/Sステレオ（Middle/Side Stereo）部２５を備えている。
【００３９】
MDCT部２１は、ゲイン制御部１２から供給された時間領域のオーディオ信号を周波数領域のスペクトルデータ（MDCT係数）に変換し、TNS処理部２２に供給する。TNS処理部２２は、MDCT部２１からのスペクトルデータを、時間領域の信号であるかのように見立てて線形予測を行い、スペクトルデータに対して予測フィルタリングを行って、ビットストリームとして、インテンシティ／カップリング部２３に供給する。インテンシティ／カップリング部２３は、TNS処理部２２からのスペクトルデータとしてのオーディオ信号に対して、異なるチャンネルの相関を利用した圧縮処理（ステレオ相関符号化処理）を施す。
【００４０】
予測部２４は、上述した３つのプロファイルのうちの、Mainプロファイルのみに使用される。予測部２４は、インテンシティ／カップリング部２３においてステレオ相関符号化されたオーディオ信号と、量子化／符号化部１４から供給されるオーディオ信号とを用いて予測符号化を行い、その結果得られたオーディオ信号をM/Sステレオ部２５に供給する。M/Sステレオ部２５は、予測部２４からのオーディオ信号をステレオ相関符号化し、量子化／符号化部１４に供給する。
【００４１】
量子化／符号化部１４は、正規化係数部３１、量子化部３２、およびハフマン符号化部３３を備えており、スペクトル処理部１３のM/Sステレオ部２５からのオーディオ信号を符号列に変換し、マルチプレクサ部１５に供給する
【００４２】
正規化係数部３１は、M/Sステレオ部２５からのオーディオ信号を量子化部３２に供給するとともに、そのオーディオ信号に基づいて、オーディオ信号の量子化に用いる正規化係数を算出し、量子化部３２およびハフマン符号化部３３に供給する。図１の量子化装置においては、例えば、聴覚心理モデル保持部１１からの許容誤差強度が用いられて、分割帯域ごとの正規化係数として、量子化ステップパラメータが算出される。
【００４３】
量子化部３２は、正規化係数部３１からの正規化係数を用いて、正規化係数部３１から供給されたオーディオ信号を非線形量子化し、その結果得られたオーディオ信号（量子化値）をハフマン符号化部３３および予測部２４に供給する。ハフマン符号化部３３は、予め定められたハフマン符号表に基づいて、正規化係数部３１からの正規化係数と、量子化部３２からの量子化値とをハフマン符号化し、マルチプレクサ部１５に供給する。
【００４４】
マルチプレクサ部１５は、ゲイン制御部１２およびMDCT部２１乃至正規化係数部３１からそれぞれ供給された、オーディオ信号の符号化の過程で生成された各種の情報と、ハフマン符号化部３３からのハフマン符号とを多重化することで、オーディオ信号のビットストリームを生成して出力する。
【００４５】
［TNS処理部の構成例］
次に、図２のブロック図を参照して、TNS処理部２２の構成例について説明する。
【００４６】
図２のTNS処理部２２は、線形予測部５１、実行判定部５２、量子化部５３、線形予測係数変換部５４、残差信号算出部５５、および量子化／符号化部５６から構成される。
【００４７】
線形予測部５１は、MDCT部２１からの周波数領域のスペクトルデータ（MDCT係数）x[n]を用いて、TNS_MAX_ORDER次の線形予測を行い、その結果得られる予測ゲイン、および、反射係数r[i]（i=0,…,TNS_MAX_ORDER-1）を、実行判定部５２に供給する。
【００４８】
実行判定部５２は、線形予測部５１からの予測ゲインが、所定の閾値よりも大きいか否かに応じて、線形予測部５１の線形予測が正しく行われたか否かを判定する。線形予測部５１の線形予測が正しく行われたと判定された場合、すなわち、TNS処理が実行可能である場合、実行判定部５２は、線形予測部５１からの反射係数r[i]を、量子化部５３に供給する。
【００４９】
ここで、従来のTNS処理部における量子化部について説明する。
【００５０】
従来のTNS処理部における量子化部は、実行判定部からの反射係数r[i]を、量子化ビット数coef_resで量子化するとともに、その結果得られる量子化値index[i]をさらに逆量子化する。また、量子化部は、量子化の結果得られた量子化値index[i]と、逆量子化の結果得られた逆量子化値rq[i]とを、線形予測係数変換部に供給する。
【００５１】
ここで、量子化値index[i]および逆量子化値rq[i]は、式（１）および式（２）で表される。
【００５２】
【数１】
2010060989.tif 000003
【００５３】
【数２】
2010060989.tif 000004
【００５４】
ここで、式（１）における(int)(Ｘ)は、浮動小数点数Ｘの整数部分をとる関数を表す。また、パラメータＱは、量子化ステップを示すパラメータであり、式（３）乃至（５）で表される。
【００５５】
【数３】
2010060989.tif 000005
【００５６】
【数４】
2010060989.tif 000006
【００５７】
【数５】
2010060989.tif 000007
【００５８】
すなわち、従来のTNS処理部における量子化部は、式（１）で示されるように、非線形関数であるarcsin関数を用いて、反射係数r[i]を、パラメータＱで示される量子化ステップで量子化するとともに、その結果得られる量子化値index[i]を、式（２）で示されるsin関数を用いて逆量子化する。
【００５９】
上述した従来のTNS処理部の量子化部においては、arcsin関数やsin関数が用いられているため、アルゴリズムが難解になり、サイクル数を要してしまう。
【００６０】
図２のブロック図に戻り、量子化部５３は、特定部５３ａおよび決定部５３ｂを備えている。特定部５３ａは、範囲記憶部５８に記憶されている反射係数の範囲と、対応する量子化値index[i]および逆量子化値rq[i]とを順次読み出すことで、実行判定部５２から供給された反射係数r[i]が含まれる範囲を特定する。決定部５３ｂは、特定部５３ａによって特定された範囲に対応付けられている量子化値index[i]および逆量子化値rq[i]を決定し、線形予測係数変換部５４に供給する。
【００６１】
線形予測係数変換部５４は、残差信号算出部５５における計算に用いられる次数として、量子化部５３からの逆量子化値rq[i]の絶対値が、所定の閾値より大きくなる次数TNS_ORDERを求める。さらに、線形予測係数変換部５４は、逆量子化値rq[i]を、（TNS_ORDER＋１）次の線形予測係数a[i]に変換し、量子化部５３からの量子化値index[i]とともに、残差信号算出部５５に供給する。
【００６２】
残差信号算出部５５は、残差信号算出部５５は、MDCT部２１からのスペクトルデータx[n]と、線形予測係数変換部５４からの線形予測係数a[i]との残差信号y[n]を算出し、線形予測係数変換部５４からの量子化値とともに、量子化／符号化部５６に供給する。
【００６３】
量子化／符号化部５６は、残差信号算出部５５からの残差信号y[n]および量子化値index[i]に基づいて、線形予測係数の次数TNS_ORDER、反射係数の量子化値index[i]、および残差信号y[n]をビットストリームに変換して、インテンシティ／カップリング部２３およびマルチプレクサ部１５に供給する。
【００６４】
範囲算出部５７は、量子化値に対応する反射係数の範囲を算出する。より具体的には、範囲算出部５７は、式（１）で示される各量子化値index[i]をとりうる反射係数r[i]の範囲（量子化値index[i]が変化するときの反射係数r[i]）を算出する。また、範囲算出部５７は、各量子化値を逆量子化し、量子化値に対応する逆量子化値rq[i]を算出する。範囲算出部５７は、反射係数r[i]の範囲に、量子化値index[i]および逆量子化値rq[i]を対応付けて、範囲記憶部５８に記憶させる。
【００６５】
範囲記憶部５８には、反射係数r[i]の範囲が、対応する量子化値index[i]および逆量子化値rq[i]とともに記憶される。
【００６６】
以上の構成により、TNS処理部２２は、予め記憶している反射係数の範囲と、対応する量子化値および逆量子化値とに基づいて、入力されたスペクトルデータから得られる反射係数に対応する量子化値および逆量子化値を決定する。
【００６７】
上述したTNS処理部を含む符号化装置の符号化処理（エンコード処理）により得られた結果に対して、復号処理（デコード処理）を施す場合には、線形予測係数の次数TNS_ORDER、反射係数の量子化値index[i]、および残差信号y[n]を復号し、その結果からスペクトルデータを算出し、逆MDCT処理を行うことで、オーディオ信号が得られる。
【００６８】
ここで、逆MDCT処理により得られるオーディオ信号に含まれる量子化雑音は、TNS処理によって、時間軸上で波形（信号レベル）の大きいところに分布するようになる。すなわち、TNS処理によって、量子化雑音は、オーディオ信号が小音量なところでは小さく、大音量なところでは大きくなり、オーディオ信号に含まれる量子化雑音を目立たなくすることができる。したがって、プリエコーと呼ばれる音質劣化を低減させることができる。
【００６９】
［TNS処理部の範囲算出処理］
次に、図３のフローチャートを参照して、図２のTNS処理部２２の範囲算出処理について説明する。TNS処理部２２において、範囲算出処理は、TNS処理を行う前に行われる。
【００７０】
ステップＳ３１において、範囲算出部５７は、量子化値に対応する反射係数の範囲を算出する。より具体的には、範囲算出部５７は、式（１）で示される各量子化値index[i]をとりうる反射係数r[i]の範囲を算出する。なお、ここでは、式（１）における量子化ビット数coef_resを４ビットとしている。
【００７１】
ステップＳ３２において、範囲算出部５７は、量子化値index[i]を逆量子化し、量子化値index[i]に対応する逆量子化値rq[i]を算出する。
【００７２】
ステップＳ３３において、範囲算出部５７は、反射係数r[i]の範囲に、量子化値index[i]および逆量子化値rq[i]を対応付けて、範囲記憶部５８に記憶させる。
【００７３】
以上の処理により、TNS処理を行う前に、反射係数の範囲と、量子化値index[i]および逆量子化値rq[i]とを対応付けて記憶することができる。
【００７４】
［TNS処理部のTNS処理］
次に、図４のフローチャートを参照して、図２のTNS処理部２２のTNS処理について説明する。
【００７５】
ステップＳ５１において、線形予測部５１は、MDCT部２１からの周波数領域のスペクトルデータ（MDCT係数）x[n]を用いて、TNS_MAX_ORDER次の線形予測を行い、その結果得られる予測ゲイン、および、反射係数r[i]（i=0,…,TNS_MAX_ORDER-1）を、実行判定部５２に供給する。
【００７６】
ステップＳ５２において、実行判定部５２は、線形予測部５１からの予測ゲインが、所定の閾値よりも大きいか否かに応じて、線形予測部５１の線形予測が正しく行われたか否かを判定する。線形予測部５１の線形予測が正しく行われたと判定された場合、すなわち、TNS処理が実行可能である場合、実行判定部５２は、線形予測部５１からの反射係数r[i]を、量子化部５３に供給し、処理は、ステップＳ５３に進む。
【００７７】
ステップＳ５３において、量子化部５３の特定部５３ａは、範囲記憶部５８に記憶されている反射係数の範囲と、対応する量子化値index[i]および逆量子化値rq[i]とを順次読み出すことで、実行判定部５２から供給された反射係数r[i]が含まれる範囲を特定する。
【００７８】
ステップＳ５４において、量子化部５３の決定部５３ｂは、特定部５３ａによって特定された範囲に対応付けられている量子化値index[i]および逆量子化値rq[i]を決定する。決定部５３ｂは、決定した量子化値index[i]および逆量子化値rq[i]を、線形予測係数変換部５４に供給する。
【００７９】
ステップＳ５５において、線形予測係数変換部５４は、残差信号算出部５５における計算に用いられる次数として、量子化部５３からの逆量子化値rq[i]の絶対値が、所定の閾値より大きくなる次数TNS_ORDERを求める。さらに、線形予測係数変換部５４は、逆量子化値rq[i]を、（TNS_ORDER＋１）次の線形予測係数a[i]に変換し、量子化部５３からの量子化値index[i]とともに、残差信号算出部５５に供給する。
【００８０】
ステップＳ５６において、残差信号算出部５５は、MDCT部２１からのスペクトルデータx[n]と、線形予測係数変換部５４からの線形予測係数a[i]との残差信号y[n]を算出する。残差信号y[n]は、式（６）で表される。
【００８１】
【数６】
2010060989.tif 000008
【００８２】
残差信号算出部５５は、算出した残差信号y[n]を、線形予測係数変換部５４からの量子化値index[i]とともに、量子化／符号化部５６に供給する。
【００８３】
ステップＳ５７において、量子化／符号化部５６は、残差信号算出部５５からの残差信号y[n]および量子化値index[i]に基づいて、線形予測係数の次数TNS_ORDER、反射係数の量子化値index[i]、および残差信号y[n]をビットストリームに変換して、インテンシティ／カップリング部２３およびマルチプレクサ部１５に供給する。
【００８４】
このようにして、arcsin関数やsin関数を用いることなく、TNS処理を実行することができる。
【００８５】
図５は、図４のフローチャートのステップＳ５３，Ｓ５４における処理をＣ言語で記述したプログラムの例を示している。
【００８６】
図５のプログラム１８１において、各行の左端の数字は、各行の行番号を示しており、説明のために設けたものである。つまり、実際の記述においては不要である。以降、他のプログラムの例においても同様であるものとする。
【００８７】
プログラム１８１の１行目乃至３行目においては、ｉ番目に入力された反射係数r[i]が、-0.9829731Fより小さいか否かが判定され、-0.9829731Fより小さい場合、反射係数r[i]の範囲r[i]＜-0.9829731Fに対応付けられている量子化値index[i]=-7および逆量子化値rq[i]=-0.9618257が決定される。
【００８８】
一方、-0.9829731Fより小さくない場合、４行目乃至６行目においては、ｉ番目に入力された反射係数r[i]が、-0.9324722Fより小さいか否かが判定され、-0.9324722Fより小さい場合、反射係数r[i]の範囲-0.9829731F≦r[i]＜-0.9324722Fに対応付けられている量子化値index[i]=-6および逆量子化値rq[i]=-0.8951633が決定される。
【００８９】
以降、同様にして、入力された反射係数r[i]の範囲が小さな値から順次判定され、その反射係数r[i]に対応した範囲に設定されている量子化値index[i]および逆量子化値rq[i]が決定される。
【００９０】
以上の処理により、予め求められている量子化値に対応する反射係数の範囲に基づいて、入力されたスペクトルデータに対応する量子化値を決定できる。したがって、式（１）で示される非線形関数であるarcsin関数の演算をすることなく、上述したような条件による探索によって量子化値を決定できるので、より効率良くTNS処理の演算を行うことが可能となる。
【００９１】
以上においては、１５個の条件を順番に探索することによって量子化値を決定する例について説明してきたが、例えば、条件文を半分ずつに分割して探索する二分探索を用いれば、最大でも４回の条件の判定で、量子化値を決定することができる。
【００９２】
また、量子化値を探索するための条件（反射係数の範囲と、対応する量子化値index[i]および逆量子化値rq[i]）をテーブル（以下、範囲テーブルと称する）として記憶し、その範囲テーブルに基づいて量子化値を決定するようにしてもよい。
【００９３】
＜２．第２の実施の形態＞
［TNS処理部の構成例］
図６は、範囲テーブルに基づいて、量子化値を決定するようにしたTNS処理部の構成例を示している。なお、図６のTNS処理部２２１において、図２のTNS処理部２２に設けられたものと同様の機能を備える構成については、同一名称および同一符号を付するものとし、その説明は、適宜省略するものとする。
【００９４】
すなわち、図６のTNS処理部２２１において、図２のTNS処理部２２と異なるのは、量子化部５３および範囲記憶部５８に代えて、範囲テーブル作成部２５１および量子化部２５２を設けた点である。
【００９５】
範囲テーブル作成部２５１は、範囲算出部５７からの反射係数r[i]の範囲と、量子化値index[i]および逆量子化値rq[i]とを対応付けた範囲テーブルを作成し、量子化部２５２に供給する。
【００９６】
量子化部２５２は、特定部２５２ａおよび決定部２５２ｂを備えている。特定部２５２ａは、範囲テーブル作成部２５１から供給された範囲テーブルの反射係数の範囲と、量子化値および逆量子化値とに基づいて、実行判定部５２から供給された反射係数が含まれる範囲を特定する。決定部２５２ｂは、特定部２５２ａによって特定された範囲に対応付けられている量子化値および逆量子化値を決定し、線形予測係数変換部５４に供給する。
【００９７】
以上の構成により、TNS処理部２２１は、予め作成した範囲テーブルの反射係数の範囲と、対応する量子化値および逆量子化値とに基づいて、入力されたスペクトルデータから得られる反射係数に対応する量子化値および逆量子化値を決定する。
【００９８】
［TNS処理部の範囲テーブル作成処理］
次に、図７のフローチャートを参照して、図６のTNS処理部２２１の範囲テーブル作成処理について説明する。TNS処理部２２１において、範囲テーブル作成処理は、TNS処理を行う前に行われる。なお、図７のフローチャートにおけるステップＳ１３１，Ｓ１３２の処理は、図３のフローチャートを参照して説明したステップＳ３１，Ｓ３２の処理と同様であるので、その説明は省略するものとする。
【００９９】
すなわち、ステップＳ１３３において、範囲テーブル作成部２５１は、範囲算出部５７からの反射係数r[i]の範囲と、量子化値index[i]および逆量子化値rq[i]とを対応付けた範囲テーブルを作成し、量子化部２５２に供給する。
【０１００】
以上の処理により、TNS処理を行う前に、反射係数の範囲と、量子化値index[i]および逆量子化値rq[i]とを対応付けた範囲テーブルを作成することができる。
【０１０１】
［TNS処理部のTNS処理］
次に、図８のフローチャートを参照して、図６のTNS処理部２２１のTNS処理について説明する。なお、図８のフローチャートにおけるステップＳ１５１，Ｓ１５２，Ｓ１５５乃至Ｓ１５６の処理は、図４のフローチャートを参照して説明したステップＳ５１，Ｓ５２，Ｓ５５乃至Ｓ５７の処理と同様であるので、その説明は省略するものとする。
【０１０２】
すなわち、ステップＳ１５３において、量子化部２５２の特定部２５２ａは、範囲テーブル作成部２５１から供給された範囲テーブルの反射係数r[i]の範囲と、量子化値index[i]および逆量子化値rq[i]とに基づいて、実行判定部５２から供給された反射係数r[i]が含まれる範囲を特定する。
【０１０３】
ステップＳ１５４において、特定部２５２ａによって特定された範囲に対応付けられている量子化値index[i]および逆量子化値rq[i]を決定し、線形予測係数変換部５４に供給する。
【０１０４】
このようにして、範囲テーブルを用いることで、arcsin関数やsin関数を用いることなく、TNS処理を実行することができる。
【０１０５】
図９は、図８のフローチャートのステップＳ１５３，Ｓ１５４における処理をＣ言語で記述したプログラムの例を示している。
【０１０６】
図９のプログラム２８１において、１行目乃至６行目のarcsin_Q_table[15]は、反射係数r[i]の範囲と、量子化値index[i]（= k - 7）とが対応付けられたテーブルを示している。また、７行目乃至１２行目のsin_Q_table[15]は、量子化値index[i]（= k - 7）と、逆量子化値rq[i]とが対応付けられたテーブルを示している。すなわち、プログラム２８１においては、arcsin_Q_table[15]およびsin_Q_table[15]によって範囲テーブルが構成されている。
【０１０７】
１３行目乃至１９行目においては、ｉ番目に入力された反射係数r[i]が、１行目乃至６行目のテーブルにおけるｋ番目のテーブル値arcsin_Q_table[k]より小さいか否かが判定され、テーブル値arcsin_Q_table[k]より小さい場合、量子化値index[i] = k - 7および逆量子化値rq[i] = sin_Q_table[k]が決定される。
【０１０８】
このように、範囲テーブルを用いることで、図５のプログラム１８１と比較して、Ｃ言語のプログラムの記述の量を削減することができる。
【０１０９】
以上の処理により、予め求められている量子化値に対応する反射係数の範囲に基づいて、入力されたスペクトルデータに対応する量子化値を決定できる。したがって、式（１）で示される非線形関数であるarcsin関数の演算をすることなく、範囲テーブルを用いた探索によって量子化値を決定できるので、より効率良くTNS処理の演算を行うことが可能となる。
【０１１０】
以上においては、入力されるデータの値やテーブルの値を、浮動小数点数として扱ってきたが、これらの値を固定小数点数として扱うこともできる。より具体的には、離散値に対応する入力データの範囲を浮動小数点数で算出し、その浮動小数点数を基に、固定小数点数の整数部分を算出すればよい。
【０１１１】
［固定小数点数での応用例］
図１０は、図９で説明したテーブルarcsin_Q_table[15]，sin_Q_table[15]における浮動小数点数の値を、それぞれ１６ビットの固定小数点数とした場合の例をＣ言語で記述したプログラムの例を示している。
【０１１２】
図１０のプログラム２９１において、１行目乃至６行目のarcsin_Q_table_int[15]は、反射係数r[i]の範囲と、量子化値index[i]（= k - 7）とが対応付けられたテーブルを示している。また、７行目乃至１２行目のsin_Q_table_int[15]は、量子化値index[i]（= k - 7）と、逆量子化値rq[i]とが対応付けられたテーブルを示している。すなわち、プログラム２９１においては、arcsin_Q_table_int[15]およびsin_Q_table_int[15]によって範囲テーブルが構成されている。
【０１１３】
また、１３行目乃至１９行目については、図９のプログラム２８１の１３行目乃至１９行目の処理と同様であるので、その説明は省略する。
【０１１４】
以上の例においても、式（１）で示される非線形関数であるarcsin関数の演算をすることなく、固定小数点数の値からなる範囲テーブルを用いた探索によって量子化値を決定できるので、より効率良くTNS処理の演算を行うことが可能となる。
【０１１５】
以上においては、範囲テーブルを用いて、反射係数に応じた量子化値を探索する例について説明してきたが、さらに効率良く量子化値を探索するようにすることができる。
【０１１６】
＜３．第３の実施の形態＞
［TNS処理部の構成例］
図１１は、ハッシュテーブルに基づいて、量子化値を決定するようにしたTNS処理部の構成例を示している。なお、図１１のTNS処理部３２１において、図６のTNS処理部２２１に設けられたものと同様の機能を備える構成については、同一名称および同一符号を付するものとし、その説明は、適宜省略するものとする。
【０１１７】
すなわち、図１１のTNS処理部３２１において、図６のTNS処理部２２１と異なるのは、ハッシュテーブル作成部３５１を新たに設けた点である。
【０１１８】
図１１のTNS処理部３２１においては、範囲テーブル作成部２５１は、作成した範囲テーブルを、ハッシュテーブル作成部３５１および量子化部３５２に供給する。
【０１１９】
ハッシュテーブル作成部３５１は、範囲テーブル作成部２５１からの範囲テーブルに基づいて、テーブル値の探索を高速にするハッシュテーブルを作成し、量子化部３５２に供給する。
【０１２０】
ここで、ハッシュテーブルとは、範囲テーブルのテーブル値である反射係数が含まれる範囲を、反射係数の値に応じたグループに分けるための、そのグループを示す情報をテーブル値とするテーブルである。すなわち、ハッシュテーブルによれば、反射係数が入力されたとき、その反射係数の値に対応したグループが決定され、そのグループにおいて、最初に探索すべきテーブル値である初期探索値から探索が開始される。したがって、範囲テーブルに定義された全てのテーブル値を順次探索するより高速にテーブル値を探索することができる。なお、ハッシュテーブルの作成の詳細は後述する。
【０１２１】
量子化部３５２は、初期探索値決定部３５２ａ、特定部３５２ｂ、および決定部３５２ｃを備えている。初期探索値決定部３５２ａは、ハッシュテーブル作成部３５１から供給されたハッシュテーブルを用いて、範囲テーブルにおける、反射係数（の範囲）としてのテーブル値の探索開始のインデックス（初期探索値）を決定する。特定部３５２ｂは、初期探索値と、範囲テーブル作成部２５１から供給された範囲テーブルとに基づいて、実行判定部５２から供給された反射係数が含まれる範囲を特定する。決定部３５２ｃは、特定部３５２ｂによって特定された範囲に対応付けられている量子化値および逆量子化値を決定し、線形予測係数変換部５４に供給する。
【０１２２】
以上の構成により、TNS処理部３２１は、予め作成した範囲テーブルとハッシュテーブルとに基づいて、入力されたスペクトルデータから得られる反射係数に対応する量子化値および逆量子化値を決定する。
【０１２３】
［TNS処理部のハッシュテーブル作成処理］
次に、図１２のフローチャートを参照して、図１１のTNS処理部３２１のハッシュテーブル作成処理について説明する。TNS処理部３２１において、ハッシュテーブル作成処理は、TNS処理を行う前に行われる。なお、図１２のフローチャートにおけるステップＳ２３１乃至Ｓ２３３の処理は、図７のフローチャートを参照して説明したステップＳ１３１乃至Ｓ１３３の処理と同様であるので、その説明は省略するものとする。
【０１２４】
すなわち、ステップＳ２３４において、ハッシュテーブル作成部３５１は、範囲テーブル作成部２５１からの範囲テーブルに基づいて、ハッシュテーブルを作成し、量子化部３５２に供給する。より具体的には、例えば、ハッシュテーブル作成部３５１は、図９のプログラム２８１の１行目乃至６行目に示したテーブルarcsin_Q_table[15]において、テーブル値（反射係数）それぞれに所定の演算を施した値の整数部分が同じ値になる反射係数を１つのグループとする。そして、ハッシュテーブル作成部３５１は、そのグループ内で最も値の小さな反射係数の範囲を示すインデックスを初期探索値とするハッシュテーブルを作成する。
【０１２５】
以上の処理により、TNS処理を行う前に、範囲テーブルにおけるテーブル値の探索を高速にするハッシュテーブルを作成することができる。
【０１２６】
［TNS処理部のTNS処理］
次に、図１３のフローチャートを参照して、図１１のTNS処理部３２１のTNS処理について説明する。なお、図１３のフローチャートにおけるステップＳ２５１，Ｓ２５２，Ｓ２５６乃至Ｓ２５８の処理は、図４のフローチャートを参照して説明したステップＳ５１，Ｓ５２，Ｓ５５乃至Ｓ５７の処理と同様であるので、その説明は省略するものとする。
【０１２７】
すなわち、ステップＳ２５３において、量子化部３５２の初期探索値決定部３５２ａは、ハッシュテーブル作成部３５１から供給されたハッシュテーブルを用いて、範囲テーブルにおける、反射係数（の範囲）としてのテーブル値の初期探索値を決定する。より具体的には、初期探索値決定部３５２ａは、ハッシュテーブルを用いて、範囲テーブルにおいて、実行判定部５２からの反射係数に対応するテーブル値のグループを決定し、そのグループ内で最も値の小さな反射係数を初期探索値として決定する。
【０１２８】
ステップＳ２５４において、量子化部３５２の特定部３５２ｂは、初期探索値と、範囲テーブル作成部２５１から供給された範囲テーブルとに基づいて、実行判定部５２から供給された反射係数が含まれる範囲を特定する。
【０１２９】
ステップＳ２５５において、量子化部３５２の決定部３５２ｃは、特定部３５２ｂによって特定された範囲に対応付けられている量子化値および逆量子化値を決定し、線形予測係数変換部５４に供給する。
【０１３０】
このようにして、ハッシュテーブルにより、テーブル値（反射係数の範囲）の探索を高速にすることができる。
【０１３１】
図１４は、図１３のフローチャートのステップＳ２５３乃至Ｓ２５５における処理をＣ言語で記述したプログラムの例を示している。
【０１３２】
図１４のプログラム３８１において、１行目乃至４行目のハッシュテーブルhash_table[8]のテーブル値のそれぞれは、図９のプログラム２８１に示したテーブルarcsin_Q_table[15]のテーブル値それぞれに所定の演算を施した値の整数部分が同じになるテーブル値のグループで最も値の小さなテーブル値の位置（インデックス）を示す。ここで、所定の演算とは、プログラム３８１の５行目に記述されている演算に相当する。この例では、８個のサイズのハッシュテーブルを作成するために、index[i]=-7に相当する範囲の境界がr[i]<-0.982971であることから、r[i]+1.0Fとし、正の値に変換した。この変換により、index[i]=6となる範囲の境界が、0.9781476F+1.0F=1.9781476Fとなり、２未満の値となる。さらに、８個のサイズのハッシュテーブルを作成するために、乗算する値は4.0Fとした。
【０１３３】
すなわち、実行判定部５２から供給された反射係数r[i]に所定の演算を施した値の整数部分Ｔ（５行目）と、ハッシュテーブルhash_table[T]とによって、範囲テーブルにおける初期探索値の位置ｋ（６行目）が決定される（ステップＳ２５３の処理）。
【０１３４】
この初期探索値の位置ｋが決定されることで、７行目でｋが１ずつインクリメントされ、８行目におけるarcsin_Q_table[k]が特定されるので、範囲テーブルにおけるテーブル値の探索を高速にすることができる（ステップＳ２５４，Ｓ２５５の処理）。
【０１３５】
例えば、反射係数r[i]が0.20Fである場合、プログラム３８１の５行目において、Ｔ＝４が得られる。６行目においては、Ｔ＝４と、１行目乃至４行目のハッシュテーブルhash_table[T]とに基づいて、ｋ＝７が得られる。そして、８行目において、反射係数r[i]が、arcsin_Q_table[7]=0.1045285Fより小さいか否かが判定される。反射係数r[i]=0.20Fであるので、７行目に戻り、ｋが１インクリメントされ（ｋ＝８）、８行目において、反射係数r[i]が、arcsin_Q_table[8]=0.1045285Fより小さいか否かが判定される。反射係数r[i]=0.20Fは0.1045285Fより小さいので、９，１０行目において、量子化値index[i]=０、逆量子化値rq[i]=0.2079117Fが得られる。すなわち、２回の探索で、量子化値および逆量子化値を得ることができる。
【０１３６】
同様にして、プログラム３８１においては、k = 11となるときの、k = 11乃至k = 14の４回が最も多い探索回数となり、多くとも４回の探索で量子化値を決定することができる。
【０１３７】
ちなみに、図５のプログラム１８１や図９のプログラム２８１によれば、反射係数r[i]が0.20Fである場合、テーブル値の小さい方から順番に探索して、９回の探索で量子化値および逆量子化値が得られる。
【０１３８】
以上の処理により、予め求められている量子化値に対応する反射係数の範囲に基づいて、入力されたスペクトルデータに対応する量子化値を決定できる。したがって、式（１）で示される非線形関数であるarcsin関数の演算をすることなく、ハッシュテーブルを用いた探索によって量子化値を決定できるので、より効率良く、かつ、より迅速にTNS処理の演算を行うことが可能となる。
【０１３９】
＜５．実行結果＞
［本実施の形態のTNS処理を適用したときの実行結果］
ここで、図１５を参照して、上述したTNS処理を適用したときのサイクル数について説明する。図１５は、RISC(Reduced Instruction Set Computer) CPUであるMIPS社R4000を用いて、上述したTNS処理をそれぞれ実行したときのサイクル数を示している。
【０１４０】
図１８に示されるように、三角関数（式（１）で示される非線形関数であるarcsin関数）の演算を含む従来のTNS処理を実行したときのサイクル数18657を１とすると、条件文（条件による探索）を用いたTNS処理（図４）を実行したときのサイクル数4537は、0.24となり、76％の効率改善がされている。また、条件による探索において、二分探索を用いた場合のサイクル数1980は、0.11となり、89％の効率改善がされている。
【０１４１】
同様にして、範囲テーブルを用いたTNS処理（図８）を実行したときのサイクル数7450は、0.40となり、60％の効率改善され、また、ハッシュテーブルを用いたTNS処理（図１５）を実行したときのサイクル数3854は、0.21となり、79％の効率改善されている。
【０１４２】
以上のように、本発明のTNS処理によれば、従来手法よりも効率を改善することができる。
【０１４３】
＜６．第４の実施の形態＞
［非線形関数と離散値］
以上においては、非線形関数としてarcsin関数を例に説明してきたが、式（７）に示されるように、入力値Ｘに対する所定の非線形関数func(X)について、離散値Ｙを得る場合においても、本発明を適用することができる。
【０１４４】
【数７】
2010060989.tif 000009
【０１４５】
また、上述した説明では、離散値は整数であるものとして説明してきたが、式（８）に示されるように、入力値Ｘに対して、離散値Ｙが一意に定まればよく、その離散値Ｙが、浮動小数点数であっても、本発明を適用することができる。
【０１４６】
【数８】
2010060989.tif 000010
【０１４７】
さらに、上述したように、入力値Ｘに対して、離散値Ｙが一意に定まればよいので、その離散値Ｙをとる入力値Ｘの範囲は複数であってもよい。
【０１４８】
本発明においては、離散値Ｙは有限の範囲である必要があるが、入力値Ｘを離散値Ｙに変換する演算処理の頻度の高い範囲にのみ、本実施の形態を適用し、その他の範囲に対しては、例えば、式（７）で示されるような演算を行うようにしてもよい。
【０１４９】
また、以上においては、離散値Ｙをとる入力値Ｘの範囲を予め算出しておくようにしたが、例えば、入力値Ｘの離散値Ｙへの変換処理の最中に、離散値Ｙをとる入力値Ｘの範囲が変化する場合には、適宜、入力値Ｘの範囲を算出し直すことができる。
【０１５０】
［演算装置の構成例］
ここで、図１６のブロック図を参照して、入力値Ｘに対して、所定の非線形関数func(X)による演算を施し、離散値Ｙを出力する演算装置について説明する。
【０１５１】
図１６の演算装置４０１は、範囲算出部４３１、範囲テーブル作成部４３２、および探索変換部４３３から構成される。
【０１５２】
範囲算出部４３１は、出力値としての離散値をとりうる入力値の範囲を算出し、入力値の範囲と、離散値とを対応付けて、範囲テーブル作成部４３２に供給する。
【０１５３】
範囲テーブル作成部４３２は、範囲算出部４３１からの入力値の範囲と、離散値とを対応付けた範囲テーブルを作成し、探索変換部４３３に供給する。
【０１５４】
探索変換部４３３は、特定部４３３ａおよび決定部４３３ｂを備えている。特定部４３３ａは、範囲テーブル作成部４３２から供給された範囲テーブルの入力値の範囲と、離散値とに基づいて、入力された入力値が含まれる範囲を特定する。決定部４３３ｂは、特定部４３３ａによって特定された範囲に対応付けられている離散値を決定し、外部の装置に出力する。
【０１５５】
［演算装置の範囲テーブル作成処理］
次に、図１７のフローチャートを参照して、図１６の演算装置４０１の範囲テーブル作成処理について説明する。演算装置４０１において、範囲テーブル作成処理は、離散値出力処理を行う前に行われる。
【０１５６】
ステップＳ３３１において、範囲算出部４３１は、所定の離散値をとりうる入力値の範囲を算出し、入力値の範囲と、離散値とを対応付けて、範囲テーブル作成部４３２に供給する。
【０１５７】
ステップＳ３３２において、範囲テーブル作成部４３２は、範囲算出部４３１からの入力値の範囲と、離散値とを対応付けた範囲テーブルを作成し、探索変換部４３３に供給する。
【０１５８】
以上の処理により、離散値出力処理を行う前に、入力値の範囲と、離散値とを対応付けた範囲テーブルを作成することができる。
【０１５９】
［演算装置の離散値出力処理］
次に、図１８のフローチャートを参照して、図１６の演算装置４０１の離散値出力処理について説明する。
【０１６０】
ステップＳ３５１において、探索変換部４３３は、入力値が入力されたか否かを判定する。入力値が入力されていないと判定された場合、探索変換部４３３は、入力値が入力されるまで、ステップＳ３５１の処理を繰り返す。
【０１６１】
一方、ステップＳ３５１において、入力値が入力されたと判定された場合、処理は、ステップＳ３５２に進み、探索変換部４３３の特定部４３３ａは、範囲テーブル作成部４３２から供給された範囲テーブルの入力値の範囲と、離散値とに基づいて、入力された入力値が含まれる範囲を特定する。
【０１６２】
ステップＳ３５３において、探索変換部４３３の決定部４３３ｂは、特定部４３３ａによって特定された範囲に対応付けられている離散値を決定する。探索変換部４３３は、決定した離散値を、外部の装置に出力する。
【０１６３】
以上の処理により、予め求められている離散値に対応する入力値の範囲に基づいて、入力された入力値に対応する離散値を決定できる。したがって、例えば、非線形関数であるfunc(X)の演算をすることなく、範囲テーブルを用いた探索によって離散値を決定できるので、より効率良く演算処理を行うことが可能となる。
【０１６４】
なお、図１６の演算装置４０１は、１つの入力値Ｘに対して、その入力値が含まれる範囲と離散値Ｙとが対応付けられた、１の範囲テーブルを有するようにしたが、入力値の種類毎に、それぞれの入力値の範囲と離散値とが対応付けられた、複数の範囲テーブルを有することができる。すなわち、演算装置４０１は、入力値の種類を示す情報やアドレス等に応じて、対応する範囲テーブルを読み出し、読み出した範囲テーブルを用いて、その入力値の範囲に対応する離散値を出力することができる。
【０１６５】
これにより、複数種類の入力値に対して、それぞれの離散値を出力する場合であっても、入力値の種類に応じた範囲テーブルを読み出すことによって、１の演算装置のみで複数種類の離散値を出力することができる。
【０１６６】
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等に、プログラム記録媒体からインストールされる。
【０１６７】
図１９は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
【０１６８】
コンピュータにおいて、CPU（Central Processing Unit）９０１，ROM（Read Only Memory）９０２，RAM（Random Access Memory）９０３は、バス９０４により相互に接続されている。
【０１６９】
バス９０４には、さらに、入出力インタフェース９０５が接続されている。入出力インタフェース９０５には、キーボード、マウス、マイクロホン等よりなる入力部９０６、ディスプレイ、スピーカ等よりなる出力部９０７、ハードディスクや不揮発性のメモリ等よりなる記憶部９０８、ネットワークインタフェース等よりなる通信部９０９、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等のリムーバブルメディア９１１を駆動するドライブ９１０が接続されている。
【０１７０】
以上のように構成されるコンピュータでは、CPU９０１が、例えば、記憶部９０８に記憶されているプログラムを、入出力インタフェース９０５およびバス９０４を介して、RAM９０３にロードして実行することにより、上述した一連の処理が行われる。
【０１７１】
コンピュータ（CPU９０１）が実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリ等よりなるパッケージメディアであるリムーバブルメディア９１１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【０１７２】
そして、プログラムは、リムーバブルメディア９１１をドライブ９１０に装着することにより、入出力インタフェース９０５を介して、記憶部９０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部９０９で受信し、記憶部９０８にインストールすることができる。その他、プログラムは、ROM９０２や記憶部９０８に、あらかじめインストールしておくことができる。
【０１７３】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１７４】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０１７５】
【図１】本発明を適用したオーディオ符号化装置の一実施の形態の構成例を示す図ロック図である。
【図２】図１のオーディオ符号化装置におけるTNS処理部の構成例を示すブロック図である。
【図３】図２のTNS処理部の範囲算出処理について説明するフローチャートである。
【図４】図２のTNS処理部のTNS処理について説明するフローチャートである。
【図５】図７のフローチャートのステップＳ５３における処理をＣ言語で記述したプログラムの例を示す図である。
【図６】TNS処理部の他の構成例を示すブロック図である。
【図７】図６のTNS処理部の範囲テーブル作成処理について説明するフローチャートである。
【図８】図６のTNS処理部のTNS処理について説明するフローチャートである。
【図９】図８のフローチャートのステップＳ５３における処理をＣ言語で記述したプログラムの例を示す図である。
【図１０】図８のプログラムの例において浮動小数点数を固定小数点数とした場合の例をＣ言語で記述したプログラムの例を示す図である。
【図１１】TNS処理部のさらに他の構成例を示すブロック図である。
【図１２】図１１のTNS処理部のハッシュテーブル作成処理について説明するフローチャートである。
【図１３】図１１のTNS処理部のTNS処理について説明するフローチャートである。
【図１４】図１３のフローチャートのステップＳ２５３における処理をＣ言語で記述したプログラムの例を示す図である。
【図１５】TNS処理を適用したときのサイクル数について説明する図である。
【図１６】本発明を適用した演算装置の一実施の形態の構成例を示すブロック図である。
【図１７】図１６の演算装置の範囲テーブル作成処理について説明するフローチャートである。
【図１８】図１６の演算装置の離散値出力処理について説明するフローチャートである。
【図１９】パーソナルコンピュータの構成例を示すブロック図である。
【符号の説明】
【０１７６】
２２  TNS処理部，  ５３  量子化部，  ５３ａ  特定部，  ５３ｂ  決定部，  ５７  範囲算出部，  ５８  範囲記憶部，  ２２１  TNS処理部，  ２５１  範囲テーブル作成部，  ２５２  量子化部，  ２５２ａ  特定部，  ２５２ｂ  決定部，  ３２１  TNS処理部，  ３５１  ハッシュテーブル作成部，  ３５２  量子化部，  ３５２ａ  初期探索値決定部，  ３５２ｂ  特定部，  ３５２ｃ  決定部，  ４０１  演算装置，  ４３１  範囲算出部，  ４３２  範囲テーブル作成部，  ４３３  探索変換部
【図１】
2010060989.tif 000011
【図２】
2010060989.tif 000012
【図３】
2010060989.tif 000013
【図４】
2010060989.tif 000014
【図５】
2010060989.tif 000015
【図６】
2010060989.tif 000016
【図７】
2010060989.tif 000017
【図８】
2010060989.tif 000018
【図９】
2010060989.tif 000019
【図１０】
2010060989.tif 000020
【図１１】
2010060989.tif 000021
【図１２】
2010060989.tif 000022
【図１３】
2010060989.tif 000023
【図１４】
2010060989.tif 000024
【図１５】
2010060989.tif 000025
【図１６】
2010060989.tif 000026
【図１７】
2010060989.tif 000027
【図１８】
2010060989.tif 000028
【図１９】
2010060989.tif 000029