しかしながら、符号化の際、音響信号は量子化されるため、量子化による丸めまたは切り捨てにより音響信号のエネルギが失われてしまうという問題があった。そのため復号時においてもエネルギ損失に伴う音響信号の物足りなさが生じていた。特許文献1乃至3にはかかる課題を解決する手段は提示されていない。また、特許文献5に記載の復号化装置は、符号化列に表されていない周波数帯域にスペクトル情報を新たに生成するものであるが、単に低周波数域のスペクトル情報を高周波数域に拡張するにすぎず、依然として量子化誤差に伴う音響信号の物足りなさや違和感を十分に補うものではなかった。
特許文献4に記載の技術はパワーを補うものであるが、符号化時に符号化装置において入力オーディオ信号を分析し、パワー調整情報を生成して符号化する必要がある。しかも復号装置側においても、パワー調整情報復号部を設けて符号化されたパワー調整情報を復号する必要があり、このようなパワー調整情報が記憶されていない音響信号については全くエネルギの補間を行うことができないという問題があった。特に、近年では多様な規格に伴う符号化方式が乱立しており、特許文献4に記載の技術では、様々な方式の符号化音響信号を適切に補間できないという問題があった。
特許文献4に記載の技術はそのパワーを補う方法として、一又は複数のパワー調整用スペクトルテーブルを設け、ランダムにノイズスペクトルを音響信号に補う方法を提案している。しかし、正規化係数や量子化精度情報等を用いてノイズスペクトルを生成すると、入力された楽音の正規化係数や量子化精度情報に対応したノイズスペクトルとなり、目的とするランダム性を持たないノイズスペクトルを補う場合があり、逆にユーザに不快感を与えてしまうという問題があった。しかも、小型化への要求が年々高まっており、このようなパワー調整用スペクトルテーブルに対してもより少ない記憶容量しか付与されないという問題もあった。
本発明は斯かる事情に鑑みてなされたものであり、その目的は、ユーザに不快感を与えない周期で規則性ある雑音信号を繰り返し加算することにより、符号化時に失われたエネルギをユーザに不快感を与えることなく補うことが可能であり、かつ小型化を実現することが可能な信号処理方法、信号処理装置及びコンピュータを信号処理装置として機能させるためのプログラムを提供することにある。
また、本発明の他の目的は、逆量子化した音響信号の係数のレベル及び雑音信号に基づき補正係数を算出し、この補正係数を雑音信号に乗じて補正値を算出し、係数へ加算することにより、符号化時に失われたエネルギを補間して、エネルギ不足に伴う物足りなさを解消することが可能であり、また復号側において多様な符号化方式に対応することが可能な信号処理装置を提供することにある。
本発明に係る信号処理方法は、符号化音響信号を逆量子化した所定の処理単位時間内の音響信号を順次処理する信号処理方法において、雑音信号を格納した雑音信号格納部から前記処理単位時間分の雑音信号群を、最低可聴周波数に対応する周期以上の周期に含まれる複数の処理単位時間分の雑音信号群の配列が、相互に相違するよう並び替え、該並び替えた雑音信号群の配列を順次読み出す読み出しステップと、該読み出しステップにより順次読み出された処理単位時間分の雑音信号群に基づく値を該処理単位時間内の音響信号に順次加算する加算ステップとを備えることを特徴とする。
本発明に係る信号処理方法は、前記周期は、少なくとも50ms以上であることを特徴とする。
本発明に係る信号処理装置は、符号化音響信号を逆量子化した所定の処理単位時間内の音響信号を順次処理する信号処理装置において、雑音信号を格納した雑音信号格納部と、該雑音信号格納部から前記処理単位時間分の雑音信号群を、最低可聴周波数に対応する周期以上の周期に含まれる複数の処理単位時間分の雑音信号群の配列が、相互に相違するよう並び替え、該並び替えた雑音信号群の配列を順次読み出す読み出し部と、該読み出し部により順次読み出された処理単位時間分の雑音信号群に基づく値を該処理単位時間内の音響信号に順次加算する加算部とを備えることを特徴とする。
本発明に係る信号処理装置は、前記雑音信号格納部は、複数の雑音信号を一組とする複数のブロックに分類して雑音信号を格納しており、前記読み出し部は、前記雑音信号格納部から前記処理単位時間分の複数ブロック内の雑音信号群を、各処理単位時間分の複数ブロックの雑音信号群の配列が最低可聴周波数に対応する周期以上で、相互に相違するよう並び替え、該並び替えた雑音信号群の配列を順次読み出すよう構成してあることを特徴とする。
本発明に係る信号処理装置は、前記読み出し部は、前記雑音信号格納部の複数のブロックの初期配列を決定する決定手段と、該決定手段により決定した配列順にブロック内の雑音信号を処理単位時間分抽出する抽出手段とを備え、前記決定手段は、前記抽出手段により処理単位時間分の雑音信号を抽出した場合に、ブロックの配列を異なる配列へ変更する変更手段と、前記抽出手段により、最低可聴周波数に対応する周期以上の周期に含まれる複数の処理単位時間分の雑音信号を抽出した場合、前記初期配列へブロックの配列を初期化する初期化手段とを備えることを特徴とする。
本発明に係る信号処理装置は、前記周期は、少なくとも50ms以上であることを特徴とする。
本発明に係る信号処理装置は、前記ブロック数は、サンプリング周波数が32kHzの場合3または9、サンプリング周波数が44.1kHzの場合4または12、並びに、サンプリング周波数が48kHzの場合5または15であることを特徴とする。
本発明に係る信号処理装置は、逆量子化した処理単位時間内の音響信号の係数のレベルを検出するレベル検出部と、前記読み出し部から読み出した処理単位時間分の雑音信号群及び前記レベルに基づき補正係数を算出する補正係数算出部と、前記補正係数を前記雑音信号群に乗じて補正値を算出する補正値算出部とを備え、前記加算部は、前記補正値算出部から算出された補正値を、処理単位時間分の雑音信号群に基づく値として、前記処理単位時間内の音響信号に順次加算するよう構成してあることを特徴とする。
本発明に係るプログラムは、符号化音響信号を逆量子化した所定の処理単位時間内の音響信号をコンピュータで順次処理するためのプログラムにおいて、コンピュータに、雑音信号を格納した雑音信号格納部から前記処理単位時間分の雑音信号群を、最低可聴周波数に対応する周期以上の周期に含まれる複数の処理単位時間分の雑音信号群の配列が、相互に相違するよう並び替え、該並び替えた雑音信号群の配列を順次読み出す読み出しステップと、該読み出しステップにより順次読み出された処理単位時間分の雑音信号群に基づく値を該処理単位時間内の音響信号に順次加算する加算ステップとを実行させることを特徴とする。
本発明に係るプログラムは、前記周期は、少なくとも50ms以上であることを特徴とする。
本発明にあっては、雑音信号を格納した雑音信号格納部を予め用意しておく。読み出し部は、雑音信号格納部から音響信号の処理単位時間分の雑音信号群を、各処理単位時間分の雑音信号群の配列が最低可聴周波数に対応する周期以上で、相互に相違するよう並び替え、該並び替えた雑音信号群の配列を順次読み出す。この周期は例えば少なくとも50ms以上とすればよい。そして、読み出し部により順次読み出された処理単位時間分の雑音信号群に基づく値を、処理単位時間内の音響信号に加算部により順次加算する。本願出願人は、鋭意研究を重ねた結果、周期の短い雑音信号を繰り返し加算した場合、人間の聴覚により認識できる不快なノイズが発生し、その一方で、最低可聴周波数に対応する周期以上、すなわち少なくとも50ms以上の周期で雑音信号を繰り返し加算した場合、人間の聴覚では認識が困難なレベルまで不快なノイズを低減できることを知見した。これにより、量子化により失われたエネルギを雑音信号にてより自然に補間することが可能となる。しかも50ms以上の周期で配列が異なる雑音信号格納部を用意すればよいので、装置の小型化を図ることが可能となる。
本発明にあっては、雑音信号格納部は、複数の雑音信号を一組とする複数のブロックに分類して雑音信号を格納する。例えば、ブロック数は、サンプリング周波数が32kHzの場合3または9、サンプリング周波数が44.1kHzの場合4または12、並びに、サンプリング周波数が48kHzの場合5または15とする。読み出し部は、この雑音信号格納部から処理単位時間分の複数ブロック内の雑音信号群を、各処理単位時間分の複数ブロックの雑音信号群の配列が少なくとも50ms以上の周期で、相互に相違するよう並び替え、該並び替えた雑音信号群の配列を順次読み出す。
具体的には、まず読み出し部は、決定手段により雑音信号格納部の複数のブロックの初期配列を決定する。例えばサンプリング周波数が44.1kHzとして、ブロック0乃至3が存在するとした場合、ブロック0、ブロック1、ブロック2、ブロック3と配列する。そして、抽出手段は決定手段により決定した配列順にブロック内の雑音信号を処理単位時間分抽出する。例えば、ブロック0、ブロック1、ブロック2、ブロック3、ブロック0、ブロック1、ブロック2、ブロック3、・・・、ブロック0、ブロック1、ブロック2、ブロック3の処理単位時間分に相当するブロック数の雑音信号が抽出される。
抽出手段により処理単位時間分の雑音信号を抽出した場合、変更手段はブロックの配列を異なる配列へ変更する。例えば、ブロック1、ブロック2、ブロック3、ブロック0の如く変更する。そして抽出手段は変更後の配列順にブロック内の雑音信号を処理単位時間分抽出する。例えば、ブロック1、ブロック2、ブロック3、ブロック0、ブロック1、ブロック2、ブロック3、ブロック0、・・・、ブロック1、ブロック2、ブロック3、ブロック0の処理単位時間分に相当するブロック数の雑音信号が抽出される。同様に、次の配列は、ブロック2、ブロック3、ブロック0、ブロック1へ変更され、次の配列はブロック3、ブロック0、ブロック1、ブロック2へ変更される。
そうして、抽出手段により、50ms以上の処理単位時間分の雑音信号を抽出した場合、初期化手段は初期配列へブロックの配列を初期化する。つまり、初期配列であるブロック0、ブロック1、ブロック2、ブロック3とする雑音信号を再び繰り返し抽出する。この時点では50msを超えている。このように、50ms内では各処理単位時間内の雑音信号の配列が相互に相違するので、短周期に基づく不快なノイズの発生を低減することが可能となる。しかも、雑音信号格納部は、特定数のブロックに係る雑音信号のみを用意すればよいので、メモリ使用量を低減でき装置の小型化を図ることが可能となる。
本発明にあっては、レベル検出部は逆量子化した音響信号に係る係数のレベルを検出する。補正係数算出部は、読み出した処理単位時間分の雑音信号群及びレベルに基づき補正係数を算出する。補正値算出部は、補正係数算出部で算出された補正係数に雑音信号を乗じて補正値を算出する。このようにして得られた補正値を、雑音信号群に基づく値として各係数に加算して補正後の係数を算出するよう構成したので、帯域内に存在する係数のレベルに応じて最適な量の白色雑音に係る補正値を加算することができる。その結果、量子化時に失われたエネルギが、最適な量で補間される。
本発明にあっては、読み出し部は、雑音信号格納部から音響信号の処理単位時間分の雑音信号群を、最低可聴周波数に対応する周期以上、すなわち50ms以上の周期で、各処理単位時間分の雑音信号群の配列が相互に相違するよう並び替えて順次読み出す。そして、読み出し部により順次読み出された処理単位時間分の雑音信号群に基づく値を、処理単位時間内の音響信号に加算部により順次加算する。従って、量子化により失われたエネルギを雑音信号にてより自然に補間することが可能となる。しかも少なくとも50ms以上の周期で配列が異なる雑音信号格納部を用意すればよいので、装置の小型化を図ることが可能となる。これにより、ユーザに雑音信号に伴う不快感を与えることなく、より原音に近い音響信号を再生することが可能となる。
本発明にあっては、読み出し部は、決定手段により雑音信号格納部の複数のブロックの初期配列を決定し、抽出手段は決定手段により決定した配列順にブロック内の雑音信号を処理単位時間分抽出する。そうして、抽出手段により、50ms以上の処理単位時間分の雑音信号を抽出した場合、初期化手段は初期配列へブロックの配列を初期化するので、少なくとも50ms内では各処理単位時間内の雑音信号の配列が相互に相違し、短周期に基づく不快なノイズの発生を低減することが可能となる。しかも、雑音信号格納部は、特定数のブロックに係る雑音信号のみを用意すればよいので、メモリ使用量を低減でき装置の小型化を図ることが可能となる。
本発明にあっては、雑音信号群及びレベルに基づき補正係数を算出し、算出された補正係数に雑音信号を乗じて補正値を算出する。このようにして得られた補正値を、雑音信号群に基づく値として各係数に加算して補正後の係数を算出するよう構成したので、帯域内に存在する係数のレベルに応じて最適な量の白色雑音に係る補正値を加算することができる。その結果、量子化時に失われたエネルギが、最適な量で補間される。また、符号化時においてエネルギを補間するか否かの情報を付与する必要はないので、多様な規格に対してエネルギを適切に補間することが可能となる等、本発明は優れた効果を奏する。
実施の形態1
以下本発明の実施の形態を、図面を参照して説明する。図1は信号処理装置たる復号装置のハードウェア構成を示すブロック図である。図において20は、符号化された音響信号を復号する復号装置であり、音響信号入力部21、アンパッキング部22、逆量子化部23、補間処理部1、周波数時間変換部24、周波数帯域合成部25及び音響信号出力部26を含んで構成される。なお、本実施の形態においては圧縮符号化方式としてサンプリング周波数が44.1kHzのMP3を適用した例について説明するが、他の方式についても同様に適用しても良い。
記録媒体から読み出された符号化音響信号またはデジタルチューナにより受信した符号化音響信号等は、音響信号入力部21へ入力され、入力された符号化音響信号はアンパッキング部(デマルチプレクサ)22へ出力される。アンパッキング部22は、音響信号のフレーム情報から量子化係数、スケールファクタ、スケールファクタマルチプレクサ、グローバルゲイン、サブブロックゲインをそれぞれアンパッキングする。アンパッキングされた量子化係数、量子化ビット数、及びスケールファクタ、スケールファクタマルチプレクサ、グローバルゲイン、サブブロックゲインを用いて逆量子化部23においてIMDCT係数に逆量子化される。逆量子化部23からはブロック長(ロングブロックまたはショートブロック)に応じて次の式(1)で示されるIMDCT係数が周波数帯域毎に出力される。本実施の形態においては、ブロック長はロングブロックであるものとして説明する。
式(1)中の変数mはIMDCT係数のインデックス、MK(m)は量子化係数(ハフマン復号化値)、sgn(MK(m))は量子化係数の符号、scalefac_multiplierは1または0.5、grはグラニュールのインデックス、wndはウィンドウの形状のインデックス、sfbはスケールファクタバンドのインデックス、preflag[gr]はプリエンファシスの有無フラグで0または1、pretab[sfb] は所定のプリエンファシステーブルによって得られる値を表している。なお、ATRACにおけるスケールファクタ(例えば各6ビットで表され、約2dB単位で指定することができる)は、MP3におけるスケールファクタに関する値と同様であり、MP3におけるスケールファクタに関する値は、式(1)で示す如く、スケールファクタ、スケールファクタマルチプレクサ、グローバルゲイン及びサブブロックゲイン(式(1)の2の乗数以降の箇所)、プリエンファシスの有無フラグ、プリエンファシステーブルによって得られる値を用いて算出される。以下ではATRACにおけるスケールファクタ及びMP3におけるスケールファクタに関する値をまとめてスケールファクタとして説明する。ここで、スケールファクタとは、所定の分割された各周波数帯域のスペクトルを表現するために、仮数部と指数部で表した指数部分をいう。例えば、MP3においては、所定の分割された各周波数帯域のスペクトルを最大値が1.0となるように正規化され、その指数部分をスケールファクタとグローバルゲイン、及びサブブロックゲインとして符号化されている。上記スケールファクタとグローバルゲイン、及びサブブロックゲインの指数部を総称してスケールファクタに関する値と呼ぶ。
本実施の形態においては図に示すように32の周波数帯域毎block(0)〜block(31)に一処理単位時間分のIMDCT係数It (0)、It (1)、…、It(m)、…、It (575)が出力される。サンプリング周波数が44.1kHzの場合、block(0)の周波数は0Hz〜689.0625Hz、block(1)は689.0625Hz〜1378.125Hz、またblock(31)は21360.9375Hz〜22050Hzである。また一処理単位は1グラニュール576サンプルであり、これに対応する一処理単位時間は、13.061224msであり、2グラニュールに相当する一フレームは26.122448msである。なお、以下では任意の周波数帯域のブロックをblock(k)とする。ここでkは整数であり、0≦k≦31を満たすものとする。各周波数帯域のIMDCT係数It(0)〜It (575)は補間処理部1へ入力される。
各周波数帯域のIMDCT係数はブロック長に応じて複数の係数(スペクトル)から構成される。ロングブロックでは18の係数からなり、ショートブロックでは6の係数からなる。
図2は周波数に対するIMDCT係数の変化を示すグラフである。横軸は周波数であり、縦軸は係数を示す。IMDCT係数(以下、場合により係数I(m)で代表する)はロングブロックの場合、一周波数帯域内に18の係数It (18×k)乃至It (18×k+17)を有する。図2のグラフにおいては周波数18×k、18×k+1、…、18×k+17に対応させて、係数It(18×k)、It (18×k+1)、…、It (18×k+17)の変化が示されている。この係数は正、負または零の値を取る。
図1において係数It (m)は補間処理部1へ入力され、雑音信号に基づく補正値が付加された補正後の係数It ’(m)が補間処理部1から出力される。周波数時間変換部24ではIMDCT処理が施され、時間軸の音響信号に変換される。更に、逆変換された音響信号は周波数帯域合成部25において、帯域合成フィルタであるIPFB(Inverse Polyphase Filter Bank)によって帯域合成された後、音響信号出力部26へ出力される。このように一処理単位時間の係数It(0)〜It (575)が補間処理部1へ入力され、補正後の係数It ’(0)〜It ’(575)が周波数時間変換部24へ出力された後は、次の時間帯における一処理単位時間の係数It+1(0)〜It+1 (575)が補間処理部1へ入力される。そして同様に、補正後の係数It+1 ’(0)〜It+1’(575)が周波数時間変換部24へ出力される。そしてこのような処理を次の時間帯における処理単位時間の係数に対して繰り返し行う。
図3は補間処理部1のハードウェア構成を示すブロック図である。補間処理部1はレベル検出部としての最小値検出部12、補正係数算出部18、補正値算出部13、雑音信号格納部としての白色雑音信号格納部16、出力部14、最大スペクトル検出部15、読み出し部19及び加算部17を含んで構成される。逆量子化部23から出力される各周波数帯域の係数I(m)は最小値検出部12及び加算部17へ出力される。最小値検出部12は1グラニュールの係数I(0)〜係数I(575)から、零を除く係数(スペクトル)の絶対値の最小値を検出する。図2の例においては、零であるIt (18×k+2)ではなく、It (18×k+1)が検出される。検出された絶対値が最小の係数I(m)が最小値として補正係数算出部18へ出力される。なお、本実施の形態においてはレベル検出部として最小値検出部12を用いて、係数I(m)の零を除く係数の絶対値の最小値をレベルとして検出することとしたが、これに限るものではない。例えば、係数I(m)のレベルとしてはこの他に、係数I(m)の2番目に絶対値の小さい値、絶対値の小さいもの3つの平均値または分散値等であっても良い。
白色雑音信号格納部16は、複数の白色雑音信号(白色雑音の周波数成分源)を一組とする複数のブロックに分類して白色雑音信号を格納している。なお、本実施の形態においては雑音信号として、白色雑音信号を用いた形態につき説明するが、これに限るものではなく、例えばピンク雑音信号またはバンド雑音信号等の雑音信号を適用しても良い。図4は白色雑音信号格納部16のレコードレイアウトを示す説明図である。白色雑音信号格納部16は、4つの帯域(ブロック)に分割され、ブロック毎に直交変換した直交変換係数(スペクトル)により構成されている。白色雑音信号格納部16はブロックフィールド、番号mフィールド及びスペクトルIwn(m)フィールドを含んで構成される。ブロックフィールドにはロングブロックに対応する白色雑音を構成するブロック数が記憶されており、ブロック0〜ブロック3までの全4ブロックが用意されている。番号mフィールドにはブロック毎に白色雑音信号のスペクトルを識別するための番号が記憶されている。例えばブロック0にはm=0〜17までが記憶されている。
また、スペクトルIwn(m)フィールドには、番号mに対応させて白色雑音信号のスペクトルがそれぞれ記憶されている。本実施の形態においては1ブロックあたり18個のスペクトルが、全4ブロック、計72のスペクトルが記憶されている。例えばブロック「0」の番号「0」には白色雑音信号のスペクトル「0.003125」が格納されている。この白色雑音信号のスペクトルは全スペクトルを平均した場合に所定値となるよう、例えば約−20dBとなるよう、設定すれば良い。なお、このIwn(m)は、I(m)の最小値の約1/2のレベルの白色雑音を作成するためのテーブルであって、約−20dBという数値には限定する必要はない。
白色雑音信号格納部16には、予め時間信号の白色雑音源を圧縮時に時間周波数変換した変換係数(スペクトル)データが、ブロック長に応じてメモリ等に記憶されて用意されている。つまり所定時間あたりの白色雑音を複数の帯域に分割し、帯域毎に直交変換した直交変換係数により構成されている。ロングブロックの場合は、圧縮時に周波数分割により18個の時間データに分割され、18個の周波数成分データに変換された変換係数がメモリ等に記録され、ショートブロックの場合は、圧縮時に周波数分割により6個の時間データに分割され、6個の周波数成分データに変換された変換係数がメモリ等に記録されている。
白色雑音信号格納部16は出力部14及び読み出し部19に接続されている。出力部14は白色雑音信号格納部16のブロック0乃至ブロック3内のスペクトルIwn(0)乃至Iwn(71)を読み出して、最大スペクトル検出部15へ出力する。最大スペクトル検出部15は出力部14から出力されたブロック内のスペクトルの絶対値に係る最大値を検出する。なお、本実施の形態においては、最大スペクトル検出部15はスペクトルの最大値を検出するが、最大スペクトル検出部15に代えて平均スペクトル検出部(図示せず)を設け、ブロック内のスペクトルの平均値を検出するようにしても良い。最大スペクトル検出部15で検出された絶対値が最大値に係る白色雑音信号のスペクトル(またはスペクトル平均値)は補正係数算出部18へ出力される。なお、本実施の形態においては最大スペクトル検出部15または平均スペクトル検出部を設け白色雑音の最大値または平均値を出力するようにしているが、白色雑音信号のレベルを検出するものであれば、この形態に限るものではない。例えば、選択されたブロックの白色雑音信号の値の大きい複数のスペクトルの平均値、または分散値等を検出するものであっても良い。
補正係数算出部18は最小値検出部12から出力された係数I(m)の最小値を、白色雑音信号のスペクトルの最大値(または平均値)の2倍で除すことにより、補正係数gを算出する。補正係数算出部18は算出した補正係数gを補正値算出部13へ出力する。なお、本実施の形態においては、係数I(m)の最小値を、白色雑音信号のスペクトルの最大値(または平均値)の2倍で除すようにしているが、あくまで一例であり、3倍等で除しても良い。
読み出し部19は白色雑音信号格納部16から処理単位時間分(13.061224ms)の32ブロック内の雑音信号群を、少なくとも50ms上の周期で、各処理単位時間分の32ブロックの雑音信号群の配列が、相互に相違するよう並び替えて順次読み出す処理を行う。読み出し部19は、内部に決定部191、抽出部192、初期化部193及び変更部194を含んで構成される。
図5は読み出し部19によるロングブロックの読み出し処理のイメージを示す説明図である。以下に読み出し処理の手順を、具体例を用いて説明する。読み出し部19の決定部191は、図4における雑音信号群に係るブロックの初期配列を決定する。図5の例においては、ブロックB(0)、B(1)、B(2)、B(3)を初期配列としている。抽出部192は、決定した初期配列順にブロック内の雑音信号を処理時間単位分抽出する。本例では、抽出部192はブロックB(0)、B(1)、B(2)、B(3)、B(0)、B(1)、・・・、B(3)の如く、4種のブロックが周期的に繰り返される計32ブロックを抽出する。
抽出部192により抽出されたブロックB(0)、B(1)、B(2)、B(3)、B(0)、B(1)、・・・、B(3)からなる32ブロックは、順次補正値算出部13を経て加算部17へ出力される。加算部17ではblock(0)の係数I(m)に、ブロックB(0)の白色雑音信号群に基づく値が加算される。同様に加算部17は、block(1)の係数I(m)に、ブロックB(1)の白色雑音信号群に基づく値を加算する。さらに、block(2)乃至block(31)の係数I(m)に、ブロックB(2)、B(3)、・・・、B(3)を順次加算する。これにより1グラニュールのblock(0)乃至block(31)の係数I(m)にブロックB(0)、B(1)、B(2)、B(3)、B(0)、B(1)、・・・、B(3)の白色雑音信号に基づく値が加算される。
1グラニュールの処理単位時間に係る白色雑音信号を加算後、2グラニュールの処理を行う。変更部194はブロックの配列を所定の規則に従い変更する。例えば、1グラニュール前の配列に1を加えたブロックに係る配列へ変更すれば良い。本例においては、2グラニュールは、初期配列に1を加算した、ブロックB(1)、B(2)、B(3)、B(0)を第2配列とする。抽出部192は、決定した第2配列順にブロック内の雑音信号を処理時間単位分抽出する。本例では、抽出部192はブロックB(1)、B(2)、B(3)、B(0)、B(1)、B(2)、・・・、B(0)の如く、4種のブロックが周期的に繰り返される計32ブロックを抽出する。
抽出部192により抽出されたブロックB(1)、B(2)、B(3)、B(0)、B(1)、B(2)、・・・、B(0)からなる32ブロックは、順次補正値算出部13を経て加算部17へ出力される。加算部17ではblock(0)の係数I(m)に、ブロックB(1)の白色雑音信号群に基づく値が加算される。同様に加算部17は、block(1)の係数I(m)に、ブロックB(2)の白色雑音信号群に基づく値を加算する。さらに、加算部17はblock(2)乃至block(31)の係数I(m)にブロックB(3)、B(0)、・・・、B(0)を順次加算する。これにより2グラニュールのblock(0)乃至block(31)の係数I(m)にブロックB(1)、B(2)、B(3)、B(0)、B(1)、B(2)、・・・、B(0)の白色雑音信号に基づく値が加算される。
2グラニュールの処理単位時間に係る白色雑音信号を加算後、3グラニュールの処理を行う。変更部194はブロックの配列を所定の規則に従い変更する。本例においては、3グラニュールは、第2配列に1を加算した、ブロックB(2)、B(3)、B(0)、B(1)を第3配列とする。抽出部192は、決定した第3配列順にブロック内の雑音信号を処理時間単位分抽出する。本例では、抽出部192はブロックB(2)、B(3)、B(0)、B(1)、B(2)、B(3)、・・・、B(1)の如く、4種のブロックが周期的に繰り返される計32ブロックを抽出される。
抽出部192により抽出されたブロックB(2)、B(3)、B(0)、B(1)、B(2)、B(3)、・・・、B(1)からなる32ブロックは、順次補正値算出部13を経て加算部17へ出力される。加算部17ではblock(0)の係数I(m)に、ブロックB(2)の白色雑音信号群に基づく値が加算される。同様に加算部17は、block(1)の係数I(m)に、ブロックB(3)の白色雑音信号群に基づく値を加算する。さらに、加算部17はblock(2)乃至block(31)の係数I(m)にブロックB(0)、B(1)、・・・、B(1)を順次加算する。これにより3グラニュールのblock(0)乃至block(31)の係数I(m)にブロックB(2)、B(3)、B(0)、B(1)、B(2)、B(3)、・・・、B(1)の白色雑音信号に基づく値が加算される。
3グラニュールの処理単位時間に係る白色雑音信号を加算後、4グラニュールの処理を行う。変更部194はブロックの配列を所定の規則に従い変更する。本例においては、4グラニュールは、第3配列に1を加算した、第4配列ブロックB(3)、B(0)、B(1)、B(2)を第4配列とする。抽出部192は、決定した第4配列順にブロック内の雑音信号を処理時間単位分抽出する。本例では、抽出部192はブロックB(3)、B(0)、B(1)、B(2)、B(3)、B(0)、・・・、B(2)の如く、4種のブロックが周期的に繰り返される計32ブロックを抽出する。
抽出部192により抽出されたブロックB(3)、B(0)、B(1)、B(2)、B(3)、B(0)、・・・、B(2)からなる32ブロックは、順次補正値算出部13を経て加算部17へ出力される。加算部17ではblock(0)の係数I(m)に、ブロックB(3)の白色雑音信号群に基づく値が加算される。同様に加算部17は、block(1)の係数I(m)に、ブロックB(0)の白色雑音信号群に基づく値を加算する。さらに、加算部17はblock(2)乃至block(31)の係数I(m)にブロックB(1)、B(2)、・・・、B(2)を順次加算する。これにより4グラニュールのblock(0)乃至block(31)の係数I(m)にブロックB(3)、B(0)、B(1)、B(2)、B(3)、B(0)、・・・、B(2)の白色雑音信号に基づく値が加算される。
4グラニュールの処理単位時間に係る白色雑音信号を加算後、5グラニュールの処理を行う。初期化部193は抽出時に50msを超えていることから(4グラニュール処理終了時は52.244896ms)、ブロックの配列を初期配列へ初期化する。本例においては、5グラニュールは、初期配列ブロックB(0)、B(1)、B(2)、B(3)である。抽出部192は、決定した初期配列順にブロック内の雑音信号を処理時間単位分抽出する。本例では、抽出部192はブロックB(0)、B(1)、B(2)、B(3)、B(0)、B(1)、・・・、B(3)の如く、4種のブロックが周期的に繰り返される計32ブロックを抽出する。
抽出部192により抽出されたブロックB(0)、B(1)、B(2)、B(3)、B(0)、B(1)、・・・、B(3)からなる32ブロックは、順次補正値算出部13を経て加算部17へ出力される。加算部17ではblock(0)の係数I(m)に、ブロックB(0)の白色雑音信号群に基づく値が加算される。同様に加算部17は、block(1)の係数I(m)に、ブロックB(1)の白色雑音信号群に基づく値を加算する。さらに、加算部17はblock(2)乃至block(31)の係数I(m)にブロックB(2)、B(3)、・・・、B(3)を順次加算する。これにより5グラニュールのblock(0)乃至block(31)の係数I(m)に、1グラニュールと同じく、ブロックB(0)、B(1)、B(2)、B(3)、B(0)、B(1)、・・・、B(3)の白色雑音信号に基づく値が加算される。
以降、6グラニュールにおいては2グラニュールと同じく第2配列の白色雑音信号群に基づく値が加算され、9グラニュールにおいて再び初期配列の白色雑音群に基づく値が加算される。このように、少なくとも50msを超えるまでは、変更部194により、各処理単位時間分(1乃至4グラニュール)の雑音信号群が相互に相違するよう並び替えられる。そして、5グラニュールの処理開始時の如く、すでに50msを超えた場合は、再び初期配列へ初期化する。なお、本例においては、ブロックに1を加算したブロックへ順次変更する規則としたが、これに限らず、ブロックに1を減算するブロックへ順次変更する規則としても良い。
上述した処理により、約50ms以上を周期、換言すれば20Hz以下を周波数とする、白色雑音信号に基づく値が、復号後の音響信号に繰り返し加算されることになる。以下に、周期を50ms以上(周波数20Hz以下)とする理由について説明する。
図6はフレッチャー・マンソンが測定した最小可聴限曲線を示すグラフである。横軸は周波数であり単位はHzである。また縦軸は音圧レベルであり単位はデシベル(dB)である。グラフにおける実線は周波数に対する音圧レベルの変化を示しており、実線で囲む領域が、人間が聞き取ることのできる範囲であるとされている。この最小可聴限曲線に基づく可聴周波数は、下限である最低可聴周波数が16Hz〜20Hzとされており、上限である最高可聴周波数が16kHz〜20kHzとされている。ここで、この最低可聴周波数16Hz〜20Hzに対応する周期は、62.5ms〜50msである。20Hz以下の聴感度と、最も聴感度の良い3kHz付近と比較した場合、20Hz以下の聴感度は、約100dB以上も低いことが理解できる。このフレッチャー・マンソンの最小可聴限曲線により、周期的に連続する雑音信号でも、周期が20Hz以下の場合、換言すれば50ms以上の間隔で一定の雑音信号を付加しても、人間の耳にはそれが不快感を与えるノイズとならないことが理解できる。そこで、図5に示す如く、少なくとも50ms内(1グラニュール〜4グラニュール)で白色雑音信号の配列が相互に相違するよう並び替えている。なお、本実施の形態においては50ms以上の周期とした場合の例を説明したが、これに限るものではなく200ms以下であればこれ以外の周期であっても良い。すなわち、スピーカの周波数特性により5Hz未満(200msをこえる周期)で再生することが困難であるため上限を200ms以下としたものである。
図7はサンプリング周波数が32kHzの場合の、ロングブロックの読み出し処理のイメージを示す説明図である。サンプリング周波数が32kHzの場合、1処理単位時間である1グラニュールは18msであり、1フレームが36msである。すなわち、3グラニュール処理終了時点で、初めて50msを超えることになる。従って、1乃至3グラニュールにおいては白色雑音信号の配列が相互に相違するよう配置する必要がある。
32kHzにおいては図4に示す白色雑音信号のブロックは3つ必要となる。初期配列はブロックB(0)、B(1)、B(2)であり、2グラニュールにおける第2配列はB(1)、B(2)、B(0)である。また、3グラニュールにおける第3配列はB(2)、B(0)、B(1)である。4グラニュールの時点ではすでに50msを超えるので、初期化部193により配列が初期化され再び初期配列となる。このような配列の繰り返しからなる白色雑音信号群を各block(0)乃至(31)内の係数I(m)に加算する処理を行う。以上のとおりサンプリング周波数が32kHzの場合、白色雑音信号格納部16における白色雑音信号を一組とするブロックは少なくとも3種類だけ用意すれば良い。
図8及び図9はサンプリング周波数が48kHzの場合の、ロングブロックの読み出し処理のイメージを示す説明図である。サンプリング周波数が48kHzの場合、1処理単位時間である1グラニュールは12msであり、1フレームが24msである。すなわち、5グラニュール処理終了時点で、初めて50msを超えることになる。従って、1乃至5グラニュールにおいては白色雑音信号の配列が相互に相違するよう配置する必要がある。
48kHzにおいては図4に示す白色雑音信号のブロックは5つ必要となる。初期配列はブロックB(0)、B(1)、B(2)、B(3)、B(4)であり、2グラニュールにおける第2配列はB(1)、B(2)、B(3)、B(4)、B(0)である。また、3グラニュールにおける第3配列はB(2)、B(3)、B(4)、B(0)、B(1)である。4グラニュールにおける第4配列はB(3)、B(4)、B(0)、B(1)、B(2)であり、5グラニュールにおける第5配列はB(4)、B(0)、B(1)、B(2)、B(3)である。6グラニュールの時点ではすでに50msを超えるので、初期化部193により配列が初期化され再び初期配列となる。このような配列の繰り返しからなる白色雑音信号群を各block(0)乃至(31)内の係数I(m)に加算する処理を行う。以上のとおりサンプリング周波数が48kHzの場合、白色雑音信号格納部16における白色雑音信号を一組とするブロックは少なくとも5種類だけ用意すれば良い。
以上の各ハードウェアの処理を、フローチャートを用いて説明する。図10及び図11は補正値の加算処理の手順を示すフローチャートである。以下では、サンプリング周波数を44.1kHz、ブロック0乃至ブロック3を有する図4に示す白色雑音信号格納部16を用いた例について説明する。1グラニュール目の処理の開始にあたり、決定部191は白色雑音信号格納部16のブロックの配列を初期配列とする(ステップS101)。上述の例では、ブロックB(0)、B(1)、B(2)、B(3)となる。最小値検出部12は係数I(m)の零を除く係数の絶対値の最小値を一グラニュール内の係数(I(0)〜I(575))の中から検出する(ステップS102)。
白色雑音信号格納部16に接続される出力部14は、白色雑音信号格納部16から、ブロック0乃至ブロック3内の白色雑音信号を最大スペクトル検出部15へ出力する(ステップS103)。最大スペクトル検出部15は出力部14から出力された白色雑音信号のスペクトルの絶対値の最大値を検出する(ステップS104)。最大スペクトル検出部15で検出された、絶対値が最大値に係る白色雑音信号のスペクトル(またはスペクトル平均値)は補正係数算出部18へ出力される。
補正係数算出部18は最小値検出部12から出力された係数I(m)の最小値を、白色雑音信号のスペクトルの最大値(または平均値)の2倍で除すことにより、補正係数gを算出する(ステップS105)。補正係数算出部18は算出した補正係数gを補正値算出部13へ出力する。抽出部192は、白色雑音信号格納部16から、配列順に、現在は1グラニュール目であるからブロックB(0)、B(1)、B(2)、B(3)の順に、1グラニュール分の白色雑音信号を抽出する(ステップS106)。これは図5の1グラニュールで示す順序に従い抽出される。抽出部192で抽出された1グラニュール分の白色雑音信号は補正値算出部13へ出力される。
補正値算出部13は乗算回路であり、抽出部192から出力された白色雑音信号のそれぞれに、補正係数算出部18から出力される補正係数gを乗じて補正値g(m)(m=0、1、2、・・・、575)を算出する(ステップS107)。補正値算出部13は、算出した補正値g(m)を加算部17へ出力する。加算部17は加算回路であり、補正値g(m)に係数I(m)を加算して補正後の係数I’(m)を算出する(ステップS108)。これにより1グラニュールの加算処理が終了する。
続いて、最小値検出部12は引き続き、次のグラニュールの係数I(m)が入力されているか否かを判断する(ステップS109)。次のグラニュールの係数I(m)が入力されている場合(ステップS109でYES)、4グラニュール分の処理が終了されたか否かを判断する(ステップS110)。4グラニュール分の処理が終了していない場合(ステップS110でNO)、つまり50msを超えていない場合、変更部194はブロックの配列を異なる配列へ変更する(ステップS112)。上述の例では、図5に示す2グラニュールにおける配列B(1)、B(2)、B(3)、B(0)となる。変更部194は初期配列を含む、変更後の配列をメモリ(図示せず)に記憶しており、メモリに記憶した配列と相互に一致しないよう配列の変更を行う。
変更部194により、配列が変更された後は、ステップS102へ移行し、再び上述した処理を次のグラニュールについて行う。ステップS110において4グラニュール分処理を終了したと判断した場合(ステップS110でYES)、すなわち50msを超えたと判断した場合、初期化部193はブロックの配列を初期化し(ステップS111)、配列を初期配列とする。また初期化部193は、変更部194の変更後の配列を記憶したメモリ(図示せず)を初期化する処理を行う。その後、ステップS102へ移行し、新たなグラニュールの処理を行う。これらの処理を繰り返し、ステップS109において、係数I(m)が入力されていないと判断した場合(ステップS109でNO)、一連の処理を終了する。以上の如く、IMDCT係数の最小値及び白色雑音信号に基づき算出される補正値をIMDCT係数に加算するので、音圧に合致した最適量の白色雑音信号を加算でき、量子化により失われたエネルギを適切に補うことが可能となる。
実施の形態2
実施の形態1においては係数I(m)のブロック長がロングブロックである形態について説明したが、ショートブロックについても同様に適用することができる。以下では、サンプリング周波数が44.1kHzであるものとして説明する。ショートブロックは、1グラニュール(576サンプル)の3分の1である1サブブロック(192サンプル)を一処理単位としており、1サブブロックに対応する一処理単位時間は4.35314133msである。12サブブロックに対応する処理時間は、ロングブロックと同じく2フレームである52.244896msとなる。
図12はショートブロックに係る白色雑音信号格納部16のレコードレイアウトを示す説明図である。白色雑音信号格納部16は、12の帯域(ブロック)に分割され、ブロック毎に直交変換した直交変換係数(スペクトル)により構成されている。白色雑音信号格納部16はブロックフィールド、番号mフィールド及びスペクトルIwn(m)フィールドを含んで構成される。ブロックフィールドにはショートブロックに対応する白色雑音を構成するブロック数が記憶されており、ブロック0〜ブロック11までの全12ブロックが用意されている。番号mフィールドにはブロック毎に白色雑音信号のスペクトルを識別するための番号が記憶されている。
また、スペクトルIwn(m)フィールドには、番号mに対応させて白色雑音信号のスペクトルがそれぞれ記憶されている。本実施の形態においては1ブロックあたり6個のスペクトルが、全12ブロック、計72のスペクトルが記憶されている。読み出し部19は実施の形態1で述べた処理と同様に、全12ブロックの白色雑音信号の配列を少なくとも50ms内で相互に一致しないよう並び替える処理を行う。
図13はサンプリング周波数が44.1kHzの場合の、ショートブロックにおけるブロックの読み出し処理のイメージを示す説明図である。12サブブロック分を処理し終えた段階で50msを超えるため、1乃至12サブブロック間は、相互にブロックの配列が一致しないよう配列を並び替える。初期配列はB(0)、B(1)、B(2)、B(3)、B(4)、B(5)、B(6)、B(7)、B(8)、B(9)、B(10)、B(11)である。抽出部192はこの初期配列を一処理単位時間に相当する1サブブロック分繰り返し抽出する。変更部194はこの配列を並び替える。例えば2サブブロックにおいてはブロックの配列をB(1)、B(2)、B(3)、B(4)、B(5)、B(6)、B(7)、B(8)、B(9)、B(10)、B(11)、B(0)とする。
そして、13グラニュールにおいては、初期化部193により再び初期配列B(0)、B(1)、B(2)、B(3)、B(4)、B(5)、B(6)、B(7)、B(8)、B(9)、B(10)、B(11)へ戻ることになる。このように、実施の形態1と同じく、白色雑音信号格納部16はショートブロックの場合、少なくともロングブロックの3倍である12種の異なるブロックを設けておけばよいことが理解できる。なお、32kHzの場合は、ロングブロックの3倍である9ブロック、48kHzの場合、ロングブロックの3倍である15ブロックを少なくとも用意しておけばよい。
本実施の形態2は以上の如き構成としてあり、その他の構成及び作用は実施の形態1と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。
実施の形態3
図14は実施の形態3に係る信号処理装置20の構成を示すブロック図である。実施の形態3に係る信号処理装置20の各処理はパーソナルコンピュータで実行されるソフトウェアにより実現しても良い。以下では信号処理装置20をパーソナルコンピュータ20であるものとして説明する。パーソナルコンピュータ20は公知のものであり、CPU(Central Processing Unit)61にバス67を介してRAM(Random Access Memory)62、ハードディスク等の記憶部65、入力部63、スピーカ等の出力部64、インターネット等の通信網に接続可能な通信部66を備える。
パーソナルコンピュータ20を動作させるためのコンピュータプログラムは、本実施の形態3のように、CD−ROM、MO、またはDVD−ROM等の可搬型記録媒体1Aで提供することも可能である。さらに、コンピュータプログラムを、通信部66を介して図示しないサーバコンピュータからダウンロードすることも可能である。以下に、その内容を説明する。
図14に示すパーソナルコンピュータ20の図示しないリーダ/ライタに、雑音信号群を並び替えて順次読み出させ、加算させるコンピュータプログラムが記録された可搬型記録媒体1A(CD−ROM、MO又はDVD−ROM等)を、挿入して記憶部65の制御プログラム内にこのプログラムをインストールする。または、かかるプログラムを、通信部66を介して外部の図示しないサーバコンピュータからダウンロードし、記憶部65にインストールするようにしても良い。かかるプログラムはRAM62にロードして実行される。これにより、上述のような本発明の信号処理装置20として機能する。
本実施の形態3は以上の如き構成としてあり、その他の構成及び作用は実施の形態1及び2と同様であるので、対応する部分には同一の参照番号を付してその詳細な説明を省略する。