(57)【要約】【課題】窓関数の生成に必要なデータ量を低減し、記憶部の省容量化を図る。【解決手段】加算器４は、記憶部１から読み出した今回の処理に用いられる窓関数の二次微分値と、今回の処理対象となる窓関数の一次微分値とを加算することで、次回の処理対象となる新たな窓関数の一次微分値を生成する。加算値５は、今回の処理対象となる窓関数の実値とを加算することで、次回の処理対象となる窓関数の実値を生成する。この実値は、次回のサイクルで用いるべき実値として加算器５にフィードバックされる。【選択図】図１
2008312106.tif 000002
【特許請求の範囲】
【請求項１】
一連の繰り返し処理を行うことによって、窓関数の実値を順次に出力する窓関数生成回路において、
それぞれのサイクルで用いられる前記窓関数の二次微分値が複数格納された記憶部と、
前記記憶部から読み出された今回のサイクルで用いられる前記窓関数の二次微分値と、今回のサイクルで用いられる前記窓関数の一次微分値とを加算することで、次回のサイクルで用いられる新たな前記窓関数の一次微分値を生成する第１の加算器と、
今回のサイクルで用いられる前記窓関数の一次微分値と、今回のサイクルで用いられる前記窓関数の実値とを加算することで、今回のサイクルで出力すべき前記窓関数の実値を生成するとともに、当該実値を次回のサイクルで用いるべき実値としてフィードバックする第２の加算器と
を有することを特徴とする窓関数生成回路。
【請求項２】
一連の繰り返し処理を行うことによって、窓関数の実値を順次に出力する窓関数生成回路と、
前記窓関数生成回路によって前記窓関数の実値が生成される毎に、当該窓関数の実値と、当該窓関数の実値に対応する符号化対象の音声波形の値とを乗算することで、サンプル波を構成する値を生成する乗算器と、
前記サンプル波に対して、周波数変換を施すことで前記符号化対象の音声波形の周波数成分を生成する周波数変換器とを有し、
前記窓関数生成回路は、
前記窓関数の二次微分値を複数格納する記憶部と、
前記記憶部から読み出された今回のサイクルで用いられる前記窓関数の二次微分値と、今回のサイクルで用いられる前記窓関数の一次微分値とを加算することで、次回のサイクルで用いられる新たな前記窓関数の一次微分値を生成する第１の加算器と、
今回のサイクルで用いられる前記窓関数の一次微分値と、今回のサイクルで用いられる前記窓関数の実値とを加算することで、今回のサイクルで出力すべき前記窓関数の実値を生成するとともに、当該実値を次回のサイクルで用いるべき実値としてフィードバックする第２の加算器と
を有することを特徴とする音声符号化装置。
【請求項３】
復号化対象となる周波数成分に、周波数逆変換を施すことで前記復号化対象の周波数成分に対応するサンプル波を生成する周波数逆変換器と、
一連の繰り返し処理を行うことによって、窓関数の実値を順次に出力する窓関数生成回路と、
前記窓関数生成回路から前記窓関数の実値が生成される毎に、当該窓関数の実値と、当該窓関数の実値に対応する前記サンプル波の値とを乗算することで、音声波形を構成する値を生成する乗算器とを有し、
前記窓関数生成回路は、
前記窓関数の二次微分値を複数格納する記憶部と、
前記記憶部から読み出された今回のサイクルで用いられる前記窓関数の二次微分値と、今回のサイクルで用いられる前記窓関数の一次微分値とを加算することで、次回のサイクルで用いられる新たな前記窓関数の一次微分値を生成する第１の加算器と、
今回のサイクルで用いられる前記窓関数の一次微分値と、今回のサイクルで用いられる前記窓関数の実値とを加算することで、今回のサイクルで出力すべき前記窓関数の実値を生成するとともに、当該実値を次回のサイクルで用いるべき実値としてフィードバックする第２の加算器と
を有することを特徴とする音声復号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、窓関数生成回路、音声符号化装置および音声復号化装置に関する。
【背景技術】
【０００２】
従来より、音声波形の符号化におけるＩＭＤＣＴ（Inverse Modified Discrete Cosine Transform：逆修正離散コサイン変換）の後処理や、周波数解析における前処理として、窓関数が広く用いられている。特にＩＭＤＣＴでは、窓関数の乗算が直交性の前提となっており、周波数成分から音声波形を復号する際、音声波形を復元する際に、窓関数との乗算が必須である。また、周波数解析においても周波数分解の精度を向上させる目的で、音声波形と窓関数とを乗算が広く用いられている。これは、音声波形に窓関数を乗算しない場合、周波数領域において方形窓の周波数成分の畳み込みと同じ形でノイズが発生してしまうためである。
【０００３】
特許文献１には、音声信号処理における線形予測分析に用いられる窓関数の最適化を図る技術が開示されている。具体的には、音声信号に適用する窓関数列を特定した後、これを適用したことによる予測誤差エネルギーを算出し、この予測誤差エネルギーに基づいて当該窓関数列を変形させる。
【０００４】
【特許文献１】特開２００４−１５１７２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、一般的な窓関数の生成には、窓関数の実値がＲＯＭ（Read Only Memory）に格納され、ＲＯＭのアドレスが指定されることで、ＲＯＭから窓関数の実値が取り出される。しかしながら、例えばＭＰＥＧ２（Moving Picture Experts Group phase 2）の音声圧縮規格であるＡＡＣ（Advanced Audio Coding）を用いる符号化では、周波数変換の処理単位である窓幅が２０４８サンプルと広い。そのため、窓関数を構成する各値を１６ビットで表現した場合、１６ビット×２０４８個＝約４ｋバイトと膨大な容量が窓関数の生成のために必要となる。
【０００６】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、窓関数を生成するために必要なデータ量を低減し、これを記憶する記憶部の省容量化を図ることである。
【課題を解決するための手段】
【０００７】
かかる課題を解決するために、第１の発明は、記憶部と、第１の加算器と、第２の加算器とを有し、一連の繰り返し処理を行うことによって、窓関数の実値を順次に出力する窓関数生成回路を提供する。記憶部には、それぞれのサイクルで用いられる窓関数の二次微分値が複数格納されている。第１の加算器は、記憶部から読み出された今回のサイクルで用いられる窓関数の二次微分値と、今回のサイクルで用いられる窓関数の一次微分値とを加算することで、次回のサイクルで用いられる新たな窓関数の一次微分値を生成する。第２の加算器は、今回のサイクルで用いられる窓関数の一次微分値と、今回のサイクルで用いられる窓関数の実値とを加算することで、今回のサイクルで出力すべき窓関数の実値を生成する。この実値は、次回のサイクルで用いるべき実値としてフィードバックされる。
【０００８】
第２の発明は、一連の繰り返し処理を行うことによって、窓関数の実値を順次に出力する窓関数生成回路と、窓関数生成回路によって窓関数の実値が生成される毎に、当該窓関数の実値と、当該窓関数の実値に対応する符号化対象の音声波形の値とを乗算することで、サンプル波を構成する値を生成する乗算器と、サンプル波に対して、周波数変換を施すことで符号化対象の音声波形の周波数成分を生成する周波数変換器とを有する音声符号化装置を提供する。ここで、窓関数生成回路は、上記第１の発明に係る構成を有する。
【０００９】
第３の発明は、復号化対象となる周波数成分に、周波数逆変換を施すことで復号化対象の周波数成分に対応するサンプル波を生成する周波数逆変換器と、一連の繰り返し処理を行うことによって、窓関数の実値を順次に出力する窓関数生成回路と、窓関数生成回路から窓関数の実値が生成される毎に、当該窓関数の実値と、当該窓関数の実値に対応するサンプル波の値とを乗算することで、音声波形を構成する値を生成する乗算器とを有する音声復号化装置を提供する。ここで、窓関数生成回路は、上記第１の発明に係る構成を有する。
【発明の効果】
【００１０】
窓関数は、窓関数の実値そのものではなく、窓関数の二次微分値を用いて窓関数を再現することができる。窓関数の二次微分値は、その値域が狭いという特性を有するので、少ないビット数で表現できる。これにより、窓関数を生成・再現するのに必要なデータ量を低減でき、これを記憶する記憶部の省容量化を図ることができる。
【発明を実施するための最良の形態】
【００１１】
（窓関数の微分値）
まず、本実施形態に係る窓関数生成回路の具体的な構成の説明に先立ち、必要な要素技術である窓関数の微分値を説明する。窓関数値ｗnの一次微分値（一次差分）をｄ'とし、二次微分値（二次差分）をｄ''とすると、各値は下式で定義される。
【数１】
2008312106.tif 000003
【００１２】
図１は、窓関数の微分値に関する説明図であり、下式で定義されるVorbis窓、を、ｉ＝０〜π/２の範囲で１８ビット量子化した場合の頻度分布である。同図（ａ）は、一次微分値ｄ'の頻度分布であり、同図（ｂ）は、二次微分値ｄ''の頻度分布である。横軸は一次微分値ｄ'および二次微分値ｄ''の値を示し、縦軸はその出現頻度を示す。
【数２】
2008312106.tif 000004
【００１３】
このとき、一次微分値ｄ'の取り得る範囲（値域）は、０〜２５５であるが、二次微分値ｄ''のそれは、−２〜２の５値である。１サンプルあたりの必要ビット数は、窓関数値の場合、１８ビット（量子化するビット数）となるが、二次微分値''の値の場合、３ビットとなる。
【００１４】
数式１を変形（移項）することで、窓関数ｗと、一次微分値ｄ'は下式で定義される。これにより、窓関数の初期値ｗ0と、一次微分値の初期値ｄ'0と、二次微分値ｄ''の係数列とを格納することができれば、窓関数値を順次生成することができる。
【数３】
2008312106.tif 000005
【００１５】
分散する数列に対して各数列間の差分をとった場合、一般に値域は２倍に膨らんでしまう。例えば、−１，１，−１の数列では、値域は−１〜１を取るが、差分を取った場合、＋２，−２となり、値域は−２〜２をとってしまう。そのため、値域が減少するのは、例えば、０，１，２（値域は１）といった数列のように、単調増加・減少傾向のある一部のものだけとなる。窓関数に適用した場合、１次差分（一次微分値）および２次差分（二次微分値）は、後者の性質を満たす。本発明は、この性質に基づいたものである。なお、３次差分（三次微分値）以上では、前者のような性質を満たすようになるため、値域が２倍に膨らんでしまう。
【００１６】
（第１の実施形態）
図２は、窓関数生成回路１０の構成図である。この窓関数生成回路１０は、上述した窓関数（特に、数式３）の生成アルゴリズムを実装したものであり、一連の演算処理を繰り返し実行することによって、窓関数の実値（窓関数を構成する各値）を時系列的に順次出力する。窓関数生成回路１０は、記憶部１〜３と、加算器４，５と、制御部６とで構成される。
【００１７】
記憶部１には、数式３における窓関数の二次微分値ｄ''（以下、単に二次微分値ｄ''）という）が複数格納されている。記憶部１に格納された個々の値ｄ‘’は、それぞれのサイクルで択一的に用いられ、サイクルの推移にともない順次読み出される。格納される二次微分値の要素数は、音声波形の符号化／復号化におけるサンプル数に応じて決定される。例えば、サンプル数がＭ個の場合、係数の数は（Ｍ／２−３）個となり、ｄ''0〜ｄ''(M/2-3)が格納されることになる。なお、Ｍを１／２にするのは、窓関数自体が区間内において左右線対称であるため、左右いずれか１値を求めれば、対応するもう一方の１値はこれと同値となる（したがって、双方を求める必要はない）。なお、初回のサイクルで用いられる二次微分値（すなわち窓関数の二次微分値の初期値）は、ｄ''0＝０である。
【００１８】
記憶部２は、数式３における窓関数の一次微分値ｄ'（以下、単に一次微分値ｄ'という）に相当する値を記憶する。記憶部２に記憶される値は、記憶部１とは異なり、今回のサイクルで用いられる１値のみであり、初回のサイクル（ｉ＝０）では、初期値としてｄ'0が記憶される。記憶部３は、数式３における窓関数の実値ｗ（以下、単に実値ｗという）に相当する値を記憶する。記憶部３に記憶される値は、記憶部２と同様に、今回のサイクルで用いられる１値であり、初回のサイクル（ｉ＝０）では、初期値としてｗ0が記憶される。なお、以下の説明において、上記値ｄ''i，ｄ'i，ｗiに付された添字ｉは、ｉ番目（ｉ＝０，１，２，・・・）のサイクルにおける値であることを意味する。
【００１９】
加算器４，５は、数式３における加算に相当する演算を実行する。加算器４は、記憶部１に格納された複数の窓関数の二次微分値のうち今回のサイクル（ｉ番目のサイクル）で用いられる二次微分値ｄ''iと、記憶部２に格納された今回のサイクルで用いられる一次微分値ｄ'iとを共に読み出し加算することで、次回のサイクル（ｉ＋１番目のサイクル）で用いられる新たな一次微分値ｄ'i+1を算出する。加算器５は、記憶部２に格納された今回のサイクルで用いられる一次微分値ｄ'iと、記憶部３に格納された今回のサイクルで用いられる実値ｗiとを共に読み出し加算することで、今回のサイクルで出力すべき実値ｗiを生成する。それとともに、この実値ｗiは、次回のサイクルで用いるべき実値ｗi+1として、加算器５にフィードバックされる。
【００２０】
制御部６は、加算器４，５による繰り返し処理の回数（出力すべき窓関数の実値数）に相当するループ変数ｉ（ｉは自然数）を管理するとともに、記憶部２，３に格納された値を更新させる。具体的には、加算器４によって算出された新たな二次微分値ｄi+1は、次回のサイクルで用いられる窓関数の一次微分値ｄiとして記憶部２に格納される。さらに、加算器５によって算出された新たな実値ｗi+1は、次回のサイクルで用いられる実値ｗiとして記憶部３に格納される。
【００２１】
図３は、図２に係る窓関数生成回路のフローチャートである。以下、このフローチャートを参照しつつ、三角関数生成回路の具体的な処理手順について説明する。なお、本ケースにおける窓関数の実値の出力数はＭ／２個である。まず、ステップ１において、初回のサイクルでは、制御部６にループ変数ｉに０が設定されるとともに、記憶部２および記憶部３に、窓関数の実値の初期値ｗ0と、一次微分値の初期値ｄ'0が設定される。
【００２２】
ステップ２において、記憶部１に格納された窓関数の実値ｗiが窓関数生成回路の出力値として出力される。なお、初回のサイクルでは、初期値ｗ0が出力されることになる。これに続くステップ３において、数式３に従った演算処理が加算器４，５によって行われる。つぎに、ステップ４において、制御部６によって、ループ変数ｉが（Ｍ／２−２）以上か否かが判定される（終了条件）。この条件を満たす場合、窓関数生成処理を終了する（ＥＮＤ）。一方、この条件を満たさない場合、処理をステップ５に進める。
【００２３】
ステップ５において、制御部６によって、ループ変数ｉがインクリメントされる。今回のサイクルでの処理（ステップ３）によって、加算器４から出力された一次微分値ｄ'i+1が、次回のサイクルでの新たな一次微分値ｄ'iとして記憶部２に格納（フィードバック処理）される。また、今回のサイクルにおいて加算器５から出力された窓関数の実値ｗi+1は、次回のサイクルにおける新たな窓関数の実値ｗiとして記憶部３に格納される（フィードバック処理）。
【００２４】
数式３に示すとおり、窓関数は、窓関数の二次微分値に基づいて再現することができる。図１に示したように、窓関数の二次微分値の値域は狭いという特性を有する。本実施形態によれば、窓関数生成回路１０を構成する記憶部１の容量は、サンプル数Ｍと、窓関数の二次微分値ｄ''のビット数とに依存することとなるが、窓関数の二次微分値ｄ''は、上記の特性を利用したものであるため、少ないビット数で表現できる。そのため、窓関数を生成・再現するのに必要なデータ量を低減でき、これを記憶する記憶部１の省容量化を図ることができる。
【００２５】
また、本実施形態によれば、窓関数生成回路１０によって生成される窓関数の実値ｗは、数式３を中心とするフィードバック処理によって、窓関数の先頭（ｗ0）から順次生成される。窓関数の実値ｗは、音声波形にかかる処理において順次出力されて用いられるので、窓関数の実値をＲＯＭから直接取り出す手法と比較しても、処理速度を低下させることなく窓関数の実値ｗを生成することができる。
【００２６】
（第２の実施形態）
図３は、上述した窓関数生成回路１０実装した音声符号化装置の構成図である。この音声符号化装置は、音声波形を周波数成分に符号化する。音声波形の数値解析の精度を向上させるためには、一般的には、波形に窓関数を掛け合わせることが有効である。音声符号化装置は、窓関数生成回路１０と、乗算器２０と、周波数変換器３０とで構成される。窓関数生成回路１０は、第１の実施形態のものと同様であり、複数の窓関数の二次微分値ｄ''が格納された記憶部１を有し、窓関数の実値の初期値ｗ0と、窓関数の一次微分値の初期値ｄ'0とを設定することで、窓関数の実値ｗiを時系列的に順次に出力する。乗算器２０は、窓関数生成回路１０から窓関数の実値が生成される毎に、この窓関数の実値と、この窓関数の実値に対応する符号化対象の音声波形の値とを乗算し、サンプル波を構成する値を生成する。周波数変換器３０は、乗算器２０によって生成されたサンプル波に対して、周波数変換を施すことで符号化対象の音声波形の周波数成分を生成する。
【００２７】
本実施形態によれば、上述した窓関数生成回路１０を用いることで、周波数変換に必要となる窓関数の回路が小型化されるので、音声符号化装置の全体的な回路規模の小型化を図ることができる。また、音声符号化装置に入力される音声波形は、通常、時系列的（現在から過去の方向）に順次入力されることを鑑みれば、乗算器２０における乗算もシームレスに行うことができる。例えば、窓関数生成回路１０が、窓関数の実値（１値）を生成するのと併行して、処理対象の音声波形を構成する値（１値）を読み込めば、音声波形を構成する全ての値をあらかじめ保持することなく乗算が行える。
【００２８】
（第３の実施形態）
図４は、音声復号化装置の構成図である。この音声復号化装置は、例えば図３で示したような、音声信号に窓関数を乗算した後、周波数変換を施すことで符号化された周波数成分を復号化する。音声復号化装置は、周波数逆変換器４０と、窓関数生成回路１０と、乗算器５０とで構成される。周波数逆変換器４０は、復号化対象となる周波数成分に、周波数逆変換を施すことで復号化対象の周波数成分に対応するサンプル波を生成する。窓関数生成回路１０は、第１の実施形態のものと同様であり、複数の窓関数の二次微分値ｄ''が格納された記憶部１を有し、窓関数の実値の初期値ｗ0と、窓関数の一次微分値の初期値ｄ'0とを設定することで、窓関数の実値ｗiを時系列的に順次に出力する。乗算器５０は、窓関数生成回路１０から窓関数の実値が生成される毎に、この窓関数の実値と、この窓関数の実値に対応するサンプル波の値とを乗算することで、音声波形を構成する値を生成する。
【００２９】
本実施形態によれば、第２の実施携帯と同様、上述した窓関数生成回路１０を用いることで、音声符号化装置の全体的な回路規模の小型化を図ることができ、乗算器５０における乗算もシームレスに行うことができる。例えば、窓関数生成回路１０が、窓関数の実値（１値）を生成するのと併行して、処理対象のサンプル波を構成する値（１値）を読み込めば、処理対象のサンプル波を構成する全ての値をあらかじめ保持することなく乗算が行える。
【図面の簡単な説明】
【００３０】
【図１】窓関数の微分値に関する説明図
【図２】窓関数生成回路の構成図
【図３】窓関数生成回路のフローチャート
【図４】音声符号化装置の構成図
【図５】音声復号化装置の構成図
【符号の説明】
【００３１】
１〜３  記憶部
４，５  加算器
６  制御部
１０  窓関数生成回路
２０，５０  乗算器
３０  周波数変換器
４０  周波数逆変換器
【図１】
2008312106.tif 000006
【図２】
2008312106.tif 000007
【図３】
2008312106.tif 000008
【図４】
2008312106.tif 000009
【図５】
2008312106.tif 000010