以下、本発明の実施の形態について、添付図面を参照して詳細に説明する。なお、本発明に係るベクトル量子化装置、ベクトル逆量子化装置、およびこれらの方法として、LSPベクトル量子化装置、LSPベクトル逆量子化装置、およびこれらの方法を例にとって説明する。
また、本発明の実施の形態では、スケーラブル符号化の広帯域LSP量子化器において、広帯域LSPをベクトル量子化対象とし、ベクトル量子化対象との相関を有する狭帯域LSPの種類を用いて、1段目の量子化に用いるコードブックを切り替える場合を例にとって説明する。なお、狭帯域LSPの代わりに、量子化狭帯域LSP(図示しない狭帯域LSP量子化器によって予め量子化された狭帯域LSP)を用いて1段目の量子化に用いるコードブックを切り替えても良い。また、量子化狭帯域LSPを広帯域形態に変換し、変換後の量子化狭帯域LSPを用いて1段目の量子化に用いるコードブックを切り替えても良い。
(実施の形態1)
図1は、本発明の実施の形態1に係るLSPベクトル量子化装置100の主要な構成を示すブロック図である。ここでは、LPSベクトル量子化装置100において、入力されるLSPベクトルを3段階の多段ベクトル量子化により量子化する場合を例にとって説明する。
図1において、LSPベクトル量子化装置100は、分類器101、スイッチ102、第1コードブック103、加算器104、誤差最小化部105、スケーリング因子決定部106、乗算器107、第2コードブック108、加算器109、第3コードブック110、および加算器111を備える。
分類器101は、狭帯域LSPベクトルの複数の種類それぞれを示す複数の分類情報からなる分類用コードブックを予め格納しており、ベクトル量子化対象である広帯域LSPベクトルの種類を示す分類情報を分類用コードブックの中から選択し、スイッチ102、およびスケーリング因子決定部106に出力する。具体的には、分類器101は、狭帯域LSPベクトルの各種類に対応するコードベクトルからなる分類用コードブックを内蔵しており、分類用コードブックを探索することにより、入力される狭帯域LSPベクトルとの二乗誤差が最小となるコードベクトルを求める。分類器101は、探索により求めたコードベクトルのインデックスを、LSPベクトルの種類を示す分類情報とする。
スイッチ102は、分類器101から入力される分類情報に対応するサブコードブックを第1コードブック103の中から1つ選び、そのサブコードブックの出力端子を加算器104に接続する。
第1コードブック103は、狭帯域LSPの各種類に対応したサブコードブック(CBa1〜CBan)を予め格納している。すなわち、例えば狭帯域LSPの種類の総数がnである場合、第1コードブック103を構成するサブコードブックの数もnとなる。第1コードブック103は、第1コードブックを構成する複数の第1コードベクトルの中から、誤差最小化部105からの指示により指示された第1コードベクトルをスイッチ102に出力する。
加算器104は、ベクトル量子化対象として入力される広帯域LSPベクトルと、スイッチ102から入力されるコードベクトルとの差を求め、この差を第1残差ベクトルとして誤差最小化部105に出力する。また、加算器104は、すべての第1コードベクトルそれぞれに対応する第1残差ベクトルのうち、誤差最小化部105の探索により最小となると分かった1つを乗算器107に出力する。
誤差最小化部105は、加算器104から入力される第1残差ベクトルを二乗した結果を広帯域LSPベクトルと第1コードベクトルとの二乗誤差とし、第1コードブックを探索することによりこの二乗誤差が最小となる第1コードベクトルを求める。同様に、誤差最小化部105は、加算器109から入力される第2残差ベクトルを二乗した結果を第1残差ベクトルと第2コードベクトルとの二乗誤差とし、第2コードブックを探索することによりこの二乗誤差が最小となる第2コードベクトルを得る。同様に、誤差最小化部105は、加算器111から入力される第3残差ベクトルを二乗した結果を第2残差ベクトルと第3コードベクトルとの二乗誤差とし、第3コードブックを探索することによりこの二乗誤差が最小となる第3コードベクトルを得る。誤差最小化部105は、探索により得られた3つのコードベクトルに付与されているインデックスを纏めて符号化し、符号化データとして出力する。
スケーリング因子決定部106は、狭帯域LSPベクトルの各種類に対応するスケーリング因子からなるスケーリング因子コードブックを予め格納している。スケーリング因子決定部106は、分類器101から入力される分類情報に対応するスケーリング因子をスケーリング因子コードブックの中から選択し、選択されたスケーリング因子の逆数を乗算器107に出力する。ここで、スケーリング因子はスカラーであっても良く、ベクトルであっても良い。
乗算器107は、加算器104から入力された第1残差ベクトルに、スケーリング因子決定部106から入力されるスケーリング因子の逆数を乗じて加算器109に出力する。
第2コードブック(CBb)108は、複数の第2コードベクトルからなり、誤差最小化部105からの指示により指示された第2コードベクトルを加算器109に出力する。
加算器109は、乗算器107から入力される、スケーリング因子の逆数が乗算された第1残差ベクトルと、第2コードブック108から入力される第2コードベクトルとの差を求め、この差を第2残差ベクトルとして誤差最小化部105に出力する。また、加算器109は、すべての第2コードベクトルそれぞれに対応する第2残差ベクトルのうち、誤差最小化部105の探索により最小となると分かった1つを加算器111に出力する。
第3コードブック110(CBc)は、複数の第3コードベクトルからなり、誤差最小化部105からの指示により指示された第3コードベクトルを加算器111に出力する。
加算器111は、加算器109から入力される第2残差ベクトルと、第3コードブック110から入力される第3コードベクトルとの差を求め、この差を第3残差ベクトルとして誤差最小化部105に出力する。
次に、量子化対象となる広帯域LSPベクトルの次数がR次である場合を例にとって、LSPベクトル量子化装置100が行う動作について説明する。なお、以下の説明では、広帯域LSPベクトルをLSP(i)(i=0,1,…,R−1)と記す。
分類器101は、狭帯域LSPベクトルのn個の種類それぞれに対応するn個のコードベクトルからなる分類用コードブックを内蔵しており、コードベクトルを探索することにより、入力される狭帯域LSPベクトルとの二乗誤差が最小となるm番目のコードベクトルを求める。分類器101は、m(1≦m≦n)を分類情報としてスイッチ102、およびスケーリング因子決定部106に出力する。
スイッチ102は、分類情報mに対応するサブコードブックCBamを第1コードブック103の中から選択し、そのサブコードブックの出力端子を加算器104に接続する。
第1コードブック103は、n個のサブコードブックCBa1〜CBanのうち、CBamを構成する各第1コードベクトルCODE_1(d1)(i)(d1=0,1,…,D1−1、i=0,1,…,R−1)の中から、誤差最小化部105からの指示d1’により指示された第1コードベクトルCODE_1(d1’)(i)(i=0,1,…,R−1)を、スイッチ102に出力する。ここで、D1は第1コードブックのコードベクトルの総数であり、d1は第1コードベクトルのインデックスである。ここで、第1コードブック103は、d1’=0からd1’=D1−1までのd1’の値を順次誤差最小化部105から指示される。
加算器104は、ベクトル量子化対象として入力される広帯域LSPベクトルLSP(i)(i=0,1,…,R−1)と、第1コードブック103から入力される第1コードベクトルCODE_1(d1’)(i)(i=0,1,…,R−1)との差を下記の式(1)に従って求め、この差を第1残差ベクトルErr_1
(d1’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。また、加算器104は、d1’=0からd1’=D1−1までのd1’それぞれに対応する第1残差ベクトルErr_1
(d1’)(i)(i=0,1,…,R−1)のうち、誤差最小化部105の探索により最小となると分かった第1残差ベクトルErr_1
(d1_min)(i)(i=0,1,…,R−1)を乗算器107に出力する。
誤差最小化部105は、d1’=0からd1’=D1−1までのd1’の値を順次第1コードブック103に指示し、d1’=0からd1’=D1−1までのd1’それぞれに対して、加算器104から入力される第1残差ベクトルErr_1
(d1’)(i)(i=0,1,…,R−1)を下記の式(2)に従って二乗し、二乗誤差Errを求める。
誤差最小化部105は、二乗誤差Errが最小となる第1コードベクトルのインデックスd1’を第1インデックスd1_minとして記憶する。
スケーリング因子決定部106は、分類情報mに対応するスケーリング因子Scale
(m)(i)(i=0,1,…,R−1)をスケーリング因子コードブックの中から選択し、そのスケーリング因子の逆数Rec_Scale
(m)(i)を下記の式(3)に従って求めて乗算器107に出力する。
乗算器107は、下記の式(4)に従って、加算器104から入力される第1残差ベクトルErr_1
(d1_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部106から入力されるスケーリング因子の逆数Rec_Scale
(m)(i)(i=0,1,…,R−1)を乗じて加算器109に出力する。
第2コードブック108は、コードブックを構成する各第2コードベクトルCODE_2(d2)(i)(d2=0,1,…,D2−1、i=0,1,…,R−1)の中から、誤差最小化部105からの指示d2’により指示されたコードベクトルCODE_2(d2’)(i)(i=0,1,…,R−1)を加算器109に出力する。ここで、D2は第2コードブックのコードベクトルの総数であり、d2はコードベクトルのインデックスである。第2コードブック108は、d2’=0からd2’=D2−1までのd2’の値を順次誤差最小化部105から指示される。
加算器109は、乗算器107から入力されるスケーリング因子の逆数が乗算された第1残差ベクトルSca_Err_1
(d1_min)(i)(i=0,1,…,R−1)と、第2コードブック108から入力される第2コードベクトルCODE_2
(d2’)(i)(i=0,1,…,R−1)との差を下記の式(5)に従って求め、この差を第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。また、加算器109は、d2’=0からd2’=D1−1までのd2’それぞれに対応する第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)のうち、誤差最小化部105の探索により最小となると分かった第2残差ベクトルErr_2
(d2_min)(i)(i=0,1,…,R−1)を加算器111に出力する。
ここで、誤差最小化部105は、d2’=0からd2’=D2−1までのd2’の値を順次第2コードブック108に指示し、d2’=0からd2’=D2−1までのd2’それぞれに対して、加算器109から入力される第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)を下記の式(6)に従って二乗し、二乗誤差Errを求める。
誤差最小化部105は、二乗誤差Errが最小となる第2コードベクトルのインデックスd2’を第2インデックスd2_minとして記憶する。
第3コードブック110は、コードブックを構成する各第3コードベクトルCODE_3(d3)(i)(d3=0,1,…,D3−1、i=0,1,…,R−1)の中から、誤差最小化部105からの指示d3’により指示された第3コードベクトルCODE_3(d3’)(i)(i=0,1,…,R−1)を加算器111に出力する。ここで、D3は第3コードブックのコードベクトルの総数であり、d3はコードベクトルのインデックスである。第3コードブック110は、d3’=0からd3’=D3−1までのd3’の値を順次誤差最小化部105から指示される。
加算器111は、加算器109から入力される第2残差ベクトルErr_2
(d2_min)(i)(i=0,1,…,R−1)と、第3コードブック110から入力されるコードベクトルCODE_3
(d3’)(i)(i=0,1,…,R−1)との差を下記の式(7)に従って求め、この差を第3残差ベクトルErr_3
(d3’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。
ここで、誤差最小化部105は、d3’=0からd3’=D3−1までのd3’の値を順次第3コードブック110に指示し、d3’=0からd3’=D3−1までのd3’それぞれに対して、加算器111から入力される第3残差ベクトルErr_3
(d3’)(i)(i=0,1,…,R−1)を下記の式(8)に従って二乗し、二乗誤差Errを求める。
次いで、誤差最小化部105は、二乗誤差Errが最小となる第3コードベクトルのインデックスd3’を第3インデックスd3_minとして記憶する。そして、誤差最小化部105は、第1インデックスd1_min、第2インデックスd2_min、第3インデックスd3_minを纏めて符号化し、符号化データとして出力する。
図2は、本実施の形態に係るLSPベクトル逆量子化装置200の主要な構成を示すブロック図である。LSPベクトル逆量子化装置200は、LSPベクトル量子化装置100において出力される符号化データを復号し、量子化LSPベクトルを生成する。
LSPベクトル逆量子化装置200は、分類器201、符号分離部202、スイッチ203、第1コードブック204、スケーリング因子決定部205、第2コードブック(CBb)206、乗算器207、加算器208、第3コードブック(CBc)209、乗算器210、および加算器211を備える。なお、第1コードブック204は、第1コードブック103が備えるサブコードブック(CBa1〜CBan)と同一内容のサブコードブックを備え、スケーリング因子決定部205は、スケーリング因子決定部106が備えるスケーリング因子コードブックと同一内容のスケーリング因子コードブックを備える。また、第2コードブック206は、第2コードブック108が備えるコードブックと同一内容のコードブックを備え、第3コードブック209は、第3コードブック110が備えるコードブックと同一内容のコードブックを備える。
分類器201は、狭帯域LSPベクトルの複数の種類それぞれを示す複数の分類情報からなる分類用コードブックを予め格納しており、ベクトル量子化対象である広帯域LSPベクトルの種類を示す分類情報を分類用コードブックの中から選択し、スイッチ203、およびスケーリング因子決定部205に出力する。具体的には、分類器201は、狭帯域LSPベクトルの各種類に対応するコードベクトルからなる分類用コードブックを内蔵しており、分類用コードブックを探索することにより、図示しない狭帯域LSP量子化器から入力される量子化狭帯域LSPベクトルとの二乗誤差が最小となるコードベクトルを求める。分類器201は、探索により求めたコードベクトルのインデックスを、LSPベクトルの種類を示す分類情報とする。
符号分離部202は、LSPベクトル量子化装置100から送信される符号化データを第1インデックス、第2インデックス、および第3インデックスに分離する。符号分離部202は、第1インデックスを第1コードブック204に指示し、第2インデックスを第2コードブック206に指示し、第3インデックスを第3コードブック209に指示する。
スイッチ203は、分類器201から入力される分類情報に対応するサブコードブック(CBam)を第1コードブック204の中から1つ選び、そのサブコードブックの出力端子を加算器208に接続する。
第1コードブック204は、第1コードブックを構成する複数の第1コードベクトルの中から、符号分離部202により指示された第1インデックスに対応する1つの第1コードベクトルをスイッチ203に出力する。
スケーリング因子決定部205は、分類器201から入力される分類情報に対応するスケーリング因子をスケーリング因子コードブックの中から選択し、乗算器207および乗算器210に出力する。
第2コードブック206は、符号分離部202により指示された第2インデックスに対応する1つの第2コードベクトルを乗算器207に出力する。
乗算器207は、第2コードブック206から入力される第2コードベクトルに、スケーリング因子決定部205から入力されるスケーリング因子を乗じて加算器208に出力する。
加算器208は、乗算器207から入力されるスケーリング因子乗算後の第2コードベクトルと、スイッチ203から入力される第1コードベクトルとを加算し、加算結果となるベクトルを加算器211に出力する。
第3コードブック209は、符号分離部202により指示された第3インデックスに対応する1つの第3コードベクトルを乗算器210に出力する。
乗算器210は、第3コードブック209から入力される第3コードベクトルに、スケーリング因子決定部205から入力されるスケーリング因子を乗じて加算器211に出力する。
加算器211は、乗算器210から入力されるスケーリング因子乗算後の第3コードベクトルと、加算器208から入力されるベクトルとを加算し、加算結果となるベクトルを量子化広帯域LSPベクトルとして出力する。
次に、LSPベクトル逆量子化装置200の動作について説明する。
分類器201は、狭帯域LSPベクトルのn個の種類それぞれに対応するn個のコードベクトルからなる分類用コードブックを内蔵しており、コードベクトルを探索することにより、図示しない狭帯域LSP量子化器から入力される量子化狭帯域LSPベクトルとの二乗誤差が最小となるm番目のコードベクトルを求める。分類器201は、m(1≦m≦n)を分類情報としてスイッチ203、およびスケーリング因子決定部205に出力する。
符号分離部202は、LSPベクトル量子化装置100から送信される符号化データを第1インデックスd1_min、第2インデックスd2_min、および第3インデックスd3_minに分離する。符号分離部202は、第1インデックスd1_minを第1コードブック204に指示し、第2インデックスd2_minを第2コードブック206に指示し、第3インデックスd3_minを第3コードブック209に指示する。
スイッチ203は、分類器201から入力される分類情報mに対応するサブコードブックCBamを第1コードブック204の中から選び、そのサブコードブックの出力端子を加算器208に接続する。
第1コードブック204は、サブコードブックCBamを構成する各第1コードベクトルCODE_1(d1)(i)(d1=0,1,…,D1−1、i=0,1,…,R−1)の中から、符号分離部202からの指示d1_minにより指示された第1コードベクトルCODE_1(d1_min)(i)(i=0,1,…,R−1)をスイッチ203に出力する。
スケーリング因子決定部205は、分類器201から入力される分類情報mに対応するスケーリング因子Scale(m)(i)(i=0,1,…,R−1)をスケーリング因子コードブックの中から選択し、乗算器207および乗算器210に出力する。
第2コードブック206は、第2コードブックを構成する各第2コードベクトルCODE_2(d2)(i)(d2=0,1,…,D2−1、i=0,1,…,R−1)の中から、符号分離部202からの指示d2_minにより指示された第2コードベクトルCODE_2(d2_min)(i)(i=0,1,…,R−1)を乗算器207に出力する。
乗算器207は、下記の式(9)に従って、第2コードブック206から入力される第2コードベクトルCODE_2
(d2_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部205から入力されるスケーリング因子Scale
(m)(i)(i=0,1,…,R−1)を乗じて加算器208に出力する。
加算器208は、下記の式(10)に従って、第1コードブック204から入力される第1コードベクトルCODE_1
(d1_min)(i)(i=0,1,…,R−1)と、乗算器207から入力されるスケーリング因子乗算後の第2コードベクトルSca_CODE_2
(d2_min)(i)(i=0,1,…,R−1)とを加算し、加算結果となるベクトルTMP(i)(i=0,1,…,R−1)を加算器211に出力する。
第3コードブック209は、コードブックを構成する各第3コードベクトルCODE_3(d3)(i)(d3=0,1,…,D3−1、i=0,1,…,R−1)の中から、符号分離部202からの指示d3_minにより指示された第3コードベクトルCODE_3(d3_min)(i)(i=0,1,…,R−1)を乗算器210に出力する。
乗算器210は、下記の式(11)に従って、第3コードブック209から入力される第3コードベクトルCODE_3
(d3_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部205から入力されるスケーリング因子Scale
(m)(i)(i=0,1,…,R−1)を乗じて加算器211に出力する。
加算器211は、下記の式(12)に従って、加算器208から入力されるベクトルTMP(i)(i=0,1,…,R−1)と、乗算器210から入力されるスケーリング因子乗算後の第3コードベクトルSca_CODE_3
(d3_min)(i)(i=0,1,…,R−1)とを加算し、加算結果となるベクトルQ_LSP(i)(i=0,1,…,R−1)を量子化広帯域LSPベクトルとして出力する。
LSPベクトル量子化装置100およびLSPベクトル逆量子化装置200において用いられる第1コードブック、第2コードブック、第3コードブック、スケーリング因子コードブックは、予め学習により設けられたものである。以下、これらのコードブックの学習方法の一例について説明する。
第1コードブック103および第1コードブック204が備える第1コードブックを学習により求めるためには、まず多数の学習用の音声データから得られる多数の、例えばV個のLSPベクトルを用意する。次いで、V個のLSPベクトルを種類(n種類)毎にグループ化し、各グループに属するLSPベクトルを用いて、LBG(Linde Buzo Gray)アルゴリズム等の学習アルゴリズムに従いD1個の第1コードベクトルCODE_1(d1)(i)(d1=0,1,…,D1−1、i=0,1,…,R−1)を求め、n個のサブコードブックを生成する。
第2コードブック108および第2コードブック206が備える第2コードブックを学習により求めるためには、前記方法で求めた第1コードブックを用いて1段目のベクトル量子化を行い、加算器104から出力される第1残差ベクトルErr_1(d1_min)(i)(i=0,1,…,R−1)をV個得る。次いで、V個の第1残差ベクトルErr_1(d1_min)(i)(i=0,1,…,R−1)を用いて、LBGアルゴリズム等の学習アルゴリズムに従いD2個の第2コードベクトルCODE_2(d2)(i)(d2=0,1,…,D1−1、i=0,1,…,R−1)を求め、第2コードブックを生成する。
第3コードブック110および第3コードブック209が備える第3コードブックを学習により求めるためには、前記方法で求めた第1コードブックおよび第2コードブックを用いて1段目と2段目とのベクトル量子化を行い、加算器109から出力される第2残差ベクトルErr_2(d2_min)(i)(i=0,1,…,R−1)をV個得る。次いで、V個の第2残差ベクトルErr_2(d2_min)(i)(i=0,1,…,R−1)を用いて、LBGアルゴリズム等の学習アルゴリズムに従いD3個の第3コードベクトルCODE_3(d3)(i)(d3=0,1,…,D1−1、i=0,1,…,R−1)を求め、第3コードブックを生成する。ここでは、スケーリング因子コードブックはまだ生成されていないため、乗算器107は動作させず、加算器104の出力をそのまま加算器109に入力させる。
スケーリング因子決定部106およびスケーリング因子決定部205が備えるスケーリング因子コードブックを学習により求めるためには、スケーリング因子の値を仮にαとして、前記方法で求めた第1〜第3コードブックを用いて1段目〜3段目のベクトル量子化を行い、V個の量子化LSPを求める。次いで、入力であるV個のLSPベクトルとV個の量子化LSPベクトルとのスペクトル歪み(ケプストラム歪みでも良い)の平均値を求める。この際、αの値を、例えば0.8〜1.2の範囲で徐々に変えながら、それぞれのαに対応するスペクトル歪みを求め、スペクトル歪みが最小となるαの値をスケーリング因子とすれば良い。αの値の決定を狭帯域LSPベクトルの種類毎に行うことにより、各種類に対応するスケーリング因子が決まり、これらのスケーリング因子を用いてスケーリング因子コードブックを生成する。また、スケーリング因子がベクトルである場合は、ベクトルの要素毎に上記の学習を行えば良い。
このように、本実施の形態によれば、広帯域LSPベクトルとの相関を有する狭帯域LSPベクトルの種類により1段目のベクトル量子化のコードブックを切り換え、1段目のベクトル量子化誤差(第1残差ベクトル)の統計的な分散が種類毎に異なる多段ベクトル量子化において、狭帯域LSPベクトルの分類結果に対応するスケーリング因子を1段目の量子化残差ベクトルに乗じるため、2段目および3段目のベクトル量子化対象のベクトルの分散を1段目のベクトル量子化誤差の統計的な分散に応じて変更させることができ、従って広帯域LSPベクトルの量子化精度を向上することができる。
そして、ベクトル逆量子化装置において、量子化精度が向上された量子化方法により生成された広帯域LSPベクトルの符号化データを入力してベクトル逆量子化を行うことにより、高精度な量子化広帯域LSPベクトルを生成することが可能となる。また、このようなベクトル逆量子化装置を音声復号装置に用いれば、高精度な量子化広帯域LSPベクトルを用いて音声を復号することができるため、高品質な復号音声を得ることが可能となる。
なお、本実施の形態では、スケーリング因子決定部106およびスケーリング因子決定部205が備えるスケーリング因子コードブックを構成するスケーリング因子は狭帯域LSPベクトルの種類に対応している場合を例にとって説明したが、本発明はこれに限定されず、スケーリング因子決定部106およびスケーリング因子決定部205が備えるスケーリング因子コードブックを構成するスケーリング因子は、音声の特徴を分類した各種類に対応していても良い。かかる場合、分類器101は、狭帯域LSPベクトルではなく音声の特徴を表すパラメータを音声特徴情報として入力し、入力された音声特徴情報に対応する音声特徴の種類を分類情報としてスイッチ102およびスケーリング因子決定部106に出力する。例えば、VMR−WB(Varialbe-Rate Multimode Wideband Speech Codec)のように、音声の有声性、雑音性等の特徴でエンコーダのタイプを切り換えるというような符号化装置に本発明を適用する場合、エンコーダのタイプの情報をそのまま音声特徴量として用いて良い。
また、本実施の形態では、スケーリング因子決定部106は、分類器101から入力される種類に対応するスケーリング因子の逆数を出力する場合を例にとって説明したが、本発明はこれに限定されず、予めスケーリング因子の逆数を求め、求められたスケーリング因子の逆数をスケーリング因子コードブックに格納しても良い。
また、本実施の形態では、LSPベクトルに対して3段のベクトル量子化を行う場合を例にとって説明したが、本発明はこれに限定されず、2段のベクトル量子化、もしくは、4段以上のベクトル量子化を行う場合にも適用できる。
また、本実施の形態では、LSPベクトルに対して3段の多段ベクトル量子化を行う場合を例にとって説明したが、本発明はこれに限定されず、分割ベクトル量子化と併用してベクトル量子化を行う場合にも適用できる。
また、本実施の形態では、量子化対象として広帯域LSPベクトルを例にとって説明したが、量子化対象はこれに限定されず、広帯域LSPベクトル以外のベクトルであっても良い。
また、本実施の形態では、LSPベクトル逆量子化装置200は、LSPベクトル量子化装置100において出力される符号化データを復号するとしたが、これに限らず、LSPベクトル逆量子化装置200で復号可能な形式の符号化データであれば、LSPベクトル逆量子化装置で受信して復号することが可能であることは言うまでもない。
(実施の形態2)
図3は、本発明の実施の形態2に係るLSPベクトル量子化装置300の主要な構成を示すブロック図である。なお、LSPベクトル量子化装置300は、実施の形態1に示したLSPベクトル量子化装置100(図1参照)と同様の基本的構成を有しており、同一の構成要素には同一の符号を付し、その説明を省略する。
LSPベクトル量子化装置300は、分類器101、スイッチ102、第1コードブック103、加算器304、誤差最小化部105、スケーリング因子決定部306、第2コードブック308、加算器309、第3コードブック310、加算器311、乗算器312、および乗算器313を備える。
加算器304は、ベクトル量子化対象として外部から入力される広帯域LSPベクトルと、スイッチ102から入力される第1コードベクトルとの差を求め、この差を第1残差ベクトルとして誤差最小化部105に出力する。また、加算器304は、すべての第1コードベクトルそれぞれに対応する第1残差ベクトルのうち、誤差最小化部105の探索により最小となると分かった1つを加算器309に出力する。
スケーリング因子決定部306は、狭帯域LSPベクトルの各種類に対応するスケーリング因子からなるスケーリング因子コードブックを予め格納している。スケーリング因子決定部306は、分類器101から入力される分類情報に対応するスケーリング因子を乗算器312および乗算器313に出力する。ここで、スケーリング因子はスカラーであっても良く、ベクトルであっても良い。
第2コードブック(CBb)308は、複数の第2コードベクトルからなり、誤差最小化部105からの指示により指示された第2コードベクトルを乗算器312に出力する。
第3コードブック(CBc)310は、複数の第3コードベクトルからなり、誤差最小化部105からの指示により指示された第3コードベクトルを乗算器313に出力する。
乗算器312は、第2コードブック308から入力された第2コードベクトルに、スケーリング因子決定部306から入力されたスケーリング因子を乗じて加算器309に出力する。
加算器309は、加算器304から入力される第1残差ベクトルと、乗算器312から入力されるスケーリング因子乗算後の第2コードベクトルとの差を求め、この差を第2残差ベクトルとして誤差最小化部105に出力する。また、加算器309は、すべての第2コードベクトルそれぞれに対応する第2残差ベクトルのうち、誤差最小化部105の探索により最小となると分かった1つを加算器311に出力する。
乗算器313は、第3コードブック310から入力された第3コードベクトルに、スケーリング因子決定部306から入力されるスケーリング因子を乗じて加算器311に出力する。
加算器311は、加算器309から入力される第2残差ベクトルと、乗算器313から入力されるスケーリング因子乗算後の第3コードベクトルとの差を求め、この差を第3残差ベクトルとして誤差最小化部105に出力する。
次に、量子化対象となるLSPベクトルの次数がR次である場合を例にとって、LSPベクトル量子化装置300が行う動作について説明する。なお、以下の説明では、LSPベクトルをLSP(i)(i=0,1,…,R−1)と記す。
加算器304は、広帯域LSPベクトルLSP(i)(i=0,1,…,R−1)と、第1コードブック103から入力される第1コードベクトルCODE_1(d1´)(i)(i=0,1,…,R−1)との差を下記の式(13)に従って求め、この差を第1残差ベクトルErr_1(d1´)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。また、加算器304は、d1’=0からd1’=D1−1までのd1’それぞれに対応する第1残差ベクトルErr_1
(d1’)(i)(i=0,1,…,R−1)のうち、誤差最小化部105の探索により最小となると分かった第1残差ベクトルErr_1
(d1_min)(i)(i=0,1,…,R−1)を加算器309に出力する。
スケーリング因子決定部306は、分類情報mに対応するスケーリング因子Scale(m)(i)(i=0,1,…,R−1)をスケーリング因子コードブックの中から選択して乗算器312および乗算器313に出力する。
第2コードブック308は、コードブックを構成する各第2コードベクトルCODE_2(d2)(i)(d2=0,1,…,D2−1、i=0,1,…,R−1)の中から、誤差最小化部105からの指示d2´により指示されたコードベクトルCODE_2(d2´)(i)(i=0,1,…,R−1)を乗算器312に出力する。ここで、D2は第2コードブックのコードベクトルの総数であり、d2はコードベクトルのインデックスである。第2コードブック308は、d2’=0からd2’=D2−1までのd2’の値を順次誤差最小化部105から指示される。
乗算器312は、下記の式(14)に従って、第2コードブック308から入力される第2コードベクトルCODE_2
(d2’)(i)(i=0,1,…,R−1)に、スケーリング因子決定部306から入力されるスケーリング因子Scale
(m)(i)(i=0,1,…,R−1)を乗じて加算器309に出力する。
加算器309は、加算器304から入力される第1残差ベクトルErr_1
(d1_min)(i)(i=0,1,…,R−1)と、乗算器312から入力されるスケーリング因子乗算後の第2コードベクトルSca_CODE_2
(d2’)(i)(i=0,1,…,R−1)との差を下記の式(15)に従って求め、この差を第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。また、加算器309は、d2’=0からd2’=D1−1までのd2’それぞれに対応する第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)のうち、誤差最小化部105の探索により最小となると分かった第2残差ベクトルErr_2
(d2_min)(i)(i=0,1,…,R−1)を加算器311に出力する。
第3コードブック310は、コードブックを構成する各第3コードベクトルCODE_3(d3)(i)(d3=0,1,…,D3−1、i=0,1,…,R−1)の中から、誤差最小化部105からの指示d3´により指示されたコードベクトルCODE_3(d3´)(i)(i=0,1,…,R−1)を乗算器313に出力する。ここで、D3は第3コードブックのコードベクトルの総数であり、d3はコードベクトルのインデックスである。第3コードブック310は、d3’=0からd3’=D3−1までのd3’の値を順次誤差最小化部105から指示される。
乗算器313は、下記の式(16)に従って、第3コードブック310から入力される第3コードベクトルCODE_3
(d3’)(i)(i=0,1,…,R−1)に、スケーリング因子決定部306から入力されるスケーリング因子Scale
(m)(i)(i=0,1,…,R−1)を乗じて加算器311に出力する。
加算器311は、加算器309から入力される第2残差ベクトルErr_2(d2_min)(i)(i=0,1,…,R−1)と、乗算器313から入力されるスケーリング因子乗算後の第3コードベクトルSca_CODE_3(d3’)(i)(i=0,1,…,R−1)との差を下記の式(17)に従って求め、この差を第3残差ベクトルErr_3(d3’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。
このように、本実施の形態によれば、広帯域LSPベクトルとの相関を有する狭帯域LSPベクトルの種類により1段目のベクトル量子化のコードブックを切り換え、1段目のベクトル量子化誤差(第1残差ベクトル)の統計的な分散が種類毎に異なる多段ベクトル量子化において、狭帯域LSPベクトルの分類結果に対応するスケーリング因子を2段目および3段目のベクトル量子化に用いる第2コードブックおよび第2コードブックのコードベクトルに乗じるため、2段目および3段目に用いるコードブックのコードベクトルの分散を1段目のベクトル量子化誤差の統計的な分散に適応して変更させることができ、従って広帯域LSPベクトルの量子化精度を向上することができる。
なお、本実施の形態に係る第2コードブック308は、実施の形態1に係る第2コードブック108と同一内容のコードブックであり、本実施の形態に係る第3コードブック310は、実施の形態1に係る第3コードブック110と同一内容のコードブックであって良い。また、本実施の形態に係るスケーリング因子決定部306は、実施の形態1に係るスケーリング因子決定部106が備えるスケーリング因子コードブックと同一内容のコードブックを備えて良い。
(実施の形態3)
図4は、本発明の実施の形態3に係るLSPベクトル量子化装置400の主要な構成を示すブロック図である。なお、LSPベクトル量子化装置400は、実施の形態1に示したLSPベクトル量子化装置100(図1参照)と同様の基本的構成を有しており、同一の構成要素には同一の符号を付し、その説明を省略する。
LSPベクトル量子化装置400は、分類器101、スイッチ102、第1コードブック103、加算器104、誤差最小化部105、スケーリング因子決定部406、乗算器407、第2コードブック108、加算器409、第3コードブック110、加算器412、および乗算器411を備える。
スケーリング因子決定部406は、狭帯域LSPベクトルの各種類に対応するスケーリング因子からなるスケーリング因子コードブックを予め格納している。スケーリング因子決定部406は、分類器101から入力される分類情報に対応するスケーリング因子を決定する。ここで、スケーリング因子は、加算器104が出力する第1残差ベクトルに対して乗じられるスケーリング因子(第1スケーリング因子)と、加算器409が出力する第1残差ベクトルに対して乗じられるスケーリング因子(第2スケーリング因子)と、から成る。次いで、スケーリング因子決定部406は、第1スケーリング因子を乗算器407に出力し、第2スケーリング因子を乗算器411に出力する。このように、多段ベクトル量子化の各段に適したスケーリング因子を予め用意しておくことにより、コードブックの適応調整をより仔細に行うことができる。
乗算器407は、加算器104から入力される第1残差ベクトルに、スケーリング因子決定部406から入力される第1スケーリング因子の逆数を乗じて加算器409に出力する。
加算器409は、乗算器407から入力される、スケーリング因子の逆数が乗算された第1残差ベクトルと、第2コードブック108から入力される第2コードベクトルとの差を求め、この差を第2残差ベクトルとして誤差最小化部105に出力する。また、加算器409は、すべての第2コードベクトルそれぞれに対応する第2残差ベクトルのうち、誤差最小化部105の探索により最小となると分かった1つを乗算器411に出力する。
乗算器411は、加算器409から入力される第2残差ベクトルに、スケーリング因子決定部406から入力される第2スケーリング因子の逆数を乗じて加算器412に出力する。
加算器412は、乗算器411から入力される、スケーリング因子の逆数が乗算された第2残差ベクトルと、第3コードブック110から入力される第3コードベクトルとの差を求め、この差を第3残差ベクトルとして誤差最小化部105に出力する。
次に、量子化対象となるLSPベクトルの次数がR次である場合を例にとって、LSPベクトル量子化装置400が行う動作について説明する。なお、以下の説明では、LSPベクトルをLSP(i)(i=0,1,…,R−1)と記す。
スケーリング因子決定部406は、分類情報mに対応する第1スケーリング因子Scale_1
(m)(i)(i=0,1,…,R−1)と第2スケーリング因子Scale_2
(m)(i)(i=0,1,…,R−1)とをスケーリング因子コードブックの中から選択し、第1スケーリング因子Scale_1
(m)(i)(i=0,1,…,R−1)の逆数を下記の式(17)に従って求め、乗算器407に出力し、第2スケーリング因子Scale_2
(m)(i)(i=0,1,…,R−1)の逆数を下記の式(18)に従って求め、乗算器411に出力する。
また、ここでは、各スケーリング因子を選択した後に逆数を求める場合について説明したが、前以て各スケーリング因子の逆数を求めておき、各スケーリング因子の逆数をスケーリング因子コードブックに格納しておくことにより、逆数を求める演算を省略することができる。この場合でも、本発明は、同様の効果を得ることができる。
乗算器407は、下記の式(19)に従って、加算器104から入力される第1残差ベクトルErr_1
(d1_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部406から入力される第1スケーリング因子の逆数Rec_Scale_1
(m)(i)(i=0,1,…,R−1)を乗じて加算器409に出力する。
加算器409は、乗算器407から入力される第1スケーリング因子の逆数が乗算された第1残差ベクトルSca_Err_1
(d1_min)(i)(i=0,1,…,R−1)と、第2コードブック108から入力される第2コードベクトルCODE_2
(d2’)(i)(i=0,1,…,R−1)との差を下記の式(20)に従って求め、この差を第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。また、加算器409は、d2’=0からd2’=D1−1までのd2’それぞれに対応する第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)のうち、誤差最小化部105の探索により最小となると分かった第2残差ベクトルErr_2
(d2_min)(i)(i=0,1,…,R−1)を乗算器411に出力する。
乗算器411は、下記の式(21)に従って、加算器409から入力される第2残差ベクトルErr_2
(d2_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部406から入力される第2スケーリング因子の逆数Rec_Scale_2
(m)(i)(i=0,1,…,R−1)を乗じて加算器412に出力する。
加算器412は、乗算器411から入力される第2スケーリング因子の逆数が乗算された第2残差ベクトルSca_Err_2
(d2_min)(i)(i=0,1,…,R−1)と、第3コードブック110から入力される第3コードベクトルCODE_3
(d3’)(i)(i=0,1,…,R−1)との差を下記の式(22)に従って求め、この差を第3残差ベクトルErr_3
(d3’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。
このように、本実施の形態によれば、広帯域LSPベクトルとの相関を有する狭帯域LSPベクトルの種類により1段目のベクトル量子化のコードブックを切り換え、1段目のベクトル量子化誤差(第1残差ベクトル)の統計的な分散が種類毎に異なる多段ベクトル量子化において、狭帯域LSPベクトルの分類結果に対応するスケーリング因子を2段目および3段目のベクトル量子化に用いる第2コードブックおよび第3コードブックのコードベクトルに乗じるため、2段目および3段目に用いるコードブックのコードベクトルの分散を1段目のベクトル量子化誤差の統計的な分散に適応して変更させることができ、従って広帯域LSPベクトルの量子化精度を向上することができる。また、2段目に用いるスケーリング因子と3段目に用いるスケーリング因子とを個別に用意することにより、より仔細な適応を可能とする。
図5は、本実施の形態に係るLSPベクトル逆量子化装置500の主要な構成を示すブロック図である。LSPベクトル逆量子化装置500は、LSPベクトル量子化装置400において出力される符号化データを復号し、量子化LSPベクトルを生成する。なお、LSPベクトル逆量子化装置500は、実施の形態1に示したLSPベクトル逆量子化装置200(図2参照)と同様の基本的構成を有しており、同一の構成要素には同一の符号を付し、その説明を省略する。
LSPベクトル逆量子化装置500は、分類器201、符号分離部202、スイッチ203、第1コードブック204、スケーリング因子決定部505、第2コードブック(CBb)206、乗算器507、加算器208、第3コードブック(CBc)209、乗算器510、および加算器211を備える。なお、第1コードブック204は、第1コードブック103が備えるサブコードブック(CBa1〜CBan)と同一内容のサブコードブックを備え、スケーリング因子決定部505は、スケーリング因子決定部406が備えるスケーリング因子コードブックと同一内容のスケーリング因子コードブックを備える。また、第2コードブック206は、第2コードブック108が備えるコードブックと同一内容のコードブックを備え、第3コードブック209は、第3コードブック110が備えるコードブックと同一内容のコードブックを備える。
スケーリング因子決定部505は、分類器201から入力される分類情報mに対応する第1スケーリング因子Scale_1(m)(i)(i=0,1,…,R−1)と第2スケーリング因子Scale_2(m)(i)(i=0,1,…,R−1)とをスケーリング因子コードブックの中から選択し、第1スケーリング因子Scale_1(m)(i)(i=0,1,…,R−1)を乗算器507と乗算器510とに出力し、第2スケーリング因子Scale_2(m)(i)(i=0,1,…,R−1)を乗算器510に出力する。
乗算器507は、下記の式(23)に従って、第2コードブック206から入力される第2コードベクトルCODE_2
(d2_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部505から入力される第1スケーリング因子Scale_1
(m)(i)(i=0,1,…,R−1)を乗じて加算器208に出力する。
乗算器510は、下記の式(24)に従って、第3コードブック209から入力される第3コードベクトルCODE_3
(d3_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部505から入力される第1スケーリング因子Scale_1
(m)(i)(i=0,1,…,R−1)と第2スケーリング因子Scale_2
(m)(i)(i=0,1,…,R−1)とを乗じて加算器211に出力する。
このように、本実施の形態によれば、LSPベクトル逆量子化装置において、量子化精度が向上された量子化方法により生成された広帯域LSPベクトルの符号化データを入力してベクトル逆量子化を行うことにより、高精度な量子化広帯域LSPベクトルを生成することが可能となる。また、このようなベクトル逆量子化装置を音声復号装置に用いれば、高精度な量子化広帯域LSPベクトルを用いて音声を復号することができるため、高品質な復号音声を得ることが可能となる。
なお、LSPベクトル逆量子化装置500は、LSPベクトル量子化装置400において出力される符号化データを復号するとしたが、これに限らず、LSPベクトル逆量子化装置500で復号可能な形式の符号化データであれば、LSPベクトル逆量子化装置で受信して復号することが可能であることは言うまでもない。
以上、本発明の各実施の形態について説明した。
なお、本発明に係るベクトル量子化装置、ベクトル逆量子化装置、およびこれらの方法は、上記各実施の形態に限定されず、種々変更して実施することが可能である。
たとえば、上記各実施の形態では、ベクトル量子化装置、ベクトル逆量子化装置、およびこれらの方法において、音声信号を対象として説明したが、楽音信号等に適用することも可能である。
また、LSPは、LSF(Line Spectral Frequency)と呼ばれることもあり、LSPをLSFと読み替えてもよい。また、LSPの代わりにISP(Immittance Spectrum Pairs)をスペクトルパラメータとして量子化する場合はLSPをISPに読み替え、ISP量子化/逆量子化装置として本実施の形態を利用することができる。LSPの代わりにISF(Immittance Spectrum Frequency)をスペクトルパラメータとして量子化する場合はLSPをISFに読み替え、ISF量子化/逆量子化装置として本実施の形態を利用することができる。
また、本発明に係るベクトル量子化装置およびベクトル逆量子化装置は、音声信号や楽音信号等の符号化/復号化するCELP符号化装置/CELP復号装置に用いることが可能である。たとえば本発明に係るLSPベクトル量子化装置をCELP型音声符号化装置に適用する場合は、CELP符号化装置において、入力信号を線形予測分析して得られた線形予測係数から変換されたLSPを入力して量子化処理を行い、量子化された量子化LSPを合成フィルタへ出力するとともに、量子化LSPを表す量子化LSP符号を符号化データとして出力するLSP量子化部のところに、本発明によるLSPベクトル量子化装置100を配置する。これにより、ベクトル量子化精度を向上することが可能となるため、復号時の音声品質も向上する。同様に、本発明に係るLSPベクトル逆量子化装置をCELP型音声復号装置に適用する場合は、CELP復号装置において、受信した多重化符号データを分離して得られた量子化LSP符号から量子化LSPを復号し、復号した量子化LSPを合成フィルタへ出力するLSP逆量子化部のところに、本発明によるLSPベクトル逆量子化装置200を配置すればよく、上記と同様の作用効果が得られる。
また、本発明に係るベクトル量子化装置およびベクトル逆量子化装置は、音声や楽音等の伝送を行う移動体通信システムにおける通信端末装置に搭載することが可能であり、これにより上記と同様の作用効果を有する通信端末装置を提供することができる。
また、ここでは、本発明をハードウェアで構成する場合を例にとって説明したが、本発明をソフトウェアで実現することも可能である。例えば、本発明に係るベクトル量子化方法およびベクトル逆量子化方法のアルゴリズムをプログラミング言語によって記述し、このプログラムをメモリに記憶しておいて情報処理手段によって実行させることにより、本発明に係るベクトル量子化装置およびベクトル逆量子化装置と同様の機能を実現することができる。
また、上記各実施の形態の説明に用いた各機能ブロックは、典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されても良いし、一部または全てを含むように1チップ化されても良い。
また、ここではLSIとしたが、集積度の違いによって、IC、システムLSI、スーパーLSI、ウルトラLSI等と呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現しても良い。LSI製造後に、プログラム化することが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続もしくは設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらに、半導体技術の進歩または派生する別技術により、LSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
2007年10月12日出願の特願2007−266922および2007年11月1日出願の特願2007−285602の日本出願に含まれる明細書、図面および要約書の開示内容は、すべて本願に援用される。
以下、本発明の実施の形態について、添付図面を参照して詳細に説明する。なお、本発明に係るベクトル量子化装置、ベクトル逆量子化装置、およびこれらの方法として、LSPベクトル量子化装置、LSPベクトル逆量子化装置、およびこれらの方法を例にとって説明する。
また、本発明の実施の形態では、スケーラブル符号化の広帯域LSP量子化器において、広帯域LSPをベクトル量子化対象とし、ベクトル量子化対象との相関を有する狭帯域LSPの種類を用いて、1段目の量子化に用いるコードブックを切り替える場合を例にとって説明する。なお、狭帯域LSPの代わりに、量子化狭帯域LSP(図示しない狭帯域LSP量子化器によって予め量子化された狭帯域LSP)を用いて1段目の量子化に用いるコードブックを切り替えても良い。また、量子化狭帯域LSPを広帯域形態に変換し、変換後の量子化狭帯域LSPを用いて1段目の量子化に用いるコードブックを切り替えても良い。
(実施の形態1)
図1は、本発明の実施の形態1に係るLSPベクトル量子化装置100の主要な構成を示すブロック図である。ここでは、LPSベクトル量子化装置100において、入力されるLSPベクトルを3段階の多段ベクトル量子化により量子化する場合を例にとって説明する。
図1において、LSPベクトル量子化装置100は、分類器101、スイッチ102、第1コードブック103、加算器104、誤差最小化部105、スケーリング因子決定部106、乗算器107、第2コードブック108、加算器109、第3コードブック110、および加算器111を備える。
分類器101は、狭帯域LSPベクトルの複数の種類それぞれを示す複数の分類情報か
らなる分類用コードブックを予め格納しており、ベクトル量子化対象である広帯域LSPベクトルの種類を示す分類情報を分類用コードブックの中から選択し、スイッチ102、およびスケーリング因子決定部106に出力する。具体的には、分類器101は、狭帯域LSPベクトルの各種類に対応するコードベクトルからなる分類用コードブックを内蔵しており、分類用コードブックを探索することにより、入力される狭帯域LSPベクトルとの二乗誤差が最小となるコードベクトルを求める。分類器101は、探索により求めたコードベクトルのインデックスを、LSPベクトルの種類を示す分類情報とする。
スイッチ102は、分類器101から入力される分類情報に対応するサブコードブックを第1コードブック103の中から1つ選び、そのサブコードブックの出力端子を加算器104に接続する。
第1コードブック103は、狭帯域LSPの各種類に対応したサブコードブック(CBa1〜CBan)を予め格納している。すなわち、例えば狭帯域LSPの種類の総数がnである場合、第1コードブック103を構成するサブコードブックの数もnとなる。第1コードブック103は、第1コードブックを構成する複数の第1コードベクトルの中から、誤差最小化部105からの指示により指示された第1コードベクトルをスイッチ102に出力する。
加算器104は、ベクトル量子化対象として入力される広帯域LSPベクトルと、スイッチ102から入力されるコードベクトルとの差を求め、この差を第1残差ベクトルとして誤差最小化部105に出力する。また、加算器104は、すべての第1コードベクトルそれぞれに対応する第1残差ベクトルのうち、誤差最小化部105の探索により最小となると分かった1つを乗算器107に出力する。
誤差最小化部105は、加算器104から入力される第1残差ベクトルを二乗した結果を広帯域LSPベクトルと第1コードベクトルとの二乗誤差とし、第1コードブックを探索することによりこの二乗誤差が最小となる第1コードベクトルを求める。同様に、誤差最小化部105は、加算器109から入力される第2残差ベクトルを二乗した結果を第1残差ベクトルと第2コードベクトルとの二乗誤差とし、第2コードブックを探索することによりこの二乗誤差が最小となる第2コードベクトルを得る。同様に、誤差最小化部105は、加算器111から入力される第3残差ベクトルを二乗した結果を第2残差ベクトルと第3コードベクトルとの二乗誤差とし、第3コードブックを探索することによりこの二乗誤差が最小となる第3コードベクトルを得る。誤差最小化部105は、探索により得られた3つのコードベクトルに付与されているインデックスを纏めて符号化し、符号化データとして出力する。
スケーリング因子決定部106は、狭帯域LSPベクトルの各種類に対応するスケーリング因子からなるスケーリング因子コードブックを予め格納している。スケーリング因子決定部106は、分類器101から入力される分類情報に対応するスケーリング因子をスケーリング因子コードブックの中から選択し、選択されたスケーリング因子の逆数を乗算器107に出力する。ここで、スケーリング因子はスカラーであっても良く、ベクトルであっても良い。
乗算器107は、加算器104から入力された第1残差ベクトルに、スケーリング因子決定部106から入力されるスケーリング因子の逆数を乗じて加算器109に出力する。
第2コードブック(CBb)108は、複数の第2コードベクトルからなり、誤差最小化部105からの指示により指示された第2コードベクトルを加算器109に出力する。
加算器109は、乗算器107から入力される、スケーリング因子の逆数が乗算された第1残差ベクトルと、第2コードブック108から入力される第2コードベクトルとの差を求め、この差を第2残差ベクトルとして誤差最小化部105に出力する。また、加算器109は、すべての第2コードベクトルそれぞれに対応する第2残差ベクトルのうち、誤差最小化部105の探索により最小となると分かった1つを加算器111に出力する。
第3コードブック110(CBc)は、複数の第3コードベクトルからなり、誤差最小化部105からの指示により指示された第3コードベクトルを加算器111に出力する。
加算器111は、加算器109から入力される第2残差ベクトルと、第3コードブック110から入力される第3コードベクトルとの差を求め、この差を第3残差ベクトルとして誤差最小化部105に出力する。
次に、量子化対象となる広帯域LSPベクトルの次数がR次である場合を例にとって、LSPベクトル量子化装置100が行う動作について説明する。なお、以下の説明では、広帯域LSPベクトルをLSP(i)(i=0,1,…,R−1)と記す。
分類器101は、狭帯域LSPベクトルのn個の種類それぞれに対応するn個のコードベクトルからなる分類用コードブックを内蔵しており、コードベクトルを探索することにより、入力される狭帯域LSPベクトルとの二乗誤差が最小となるm番目のコードベクトルを求める。分類器101は、m(1≦m≦n)を分類情報としてスイッチ102、およびスケーリング因子決定部106に出力する。
スイッチ102は、分類情報mに対応するサブコードブックCBamを第1コードブック103の中から選択し、そのサブコードブックの出力端子を加算器104に接続する。
第1コードブック103は、n個のサブコードブックCBa1〜CBanのうち、CBamを構成する各第1コードベクトルCODE_1(d1)(i)(d1=0,1,…,D1−1、i=0,1,…,R−1)の中から、誤差最小化部105からの指示d1’により指示された第1コードベクトルCODE_1(d1’)(i)(i=0,1,…,R−1)を、スイッチ102に出力する。ここで、D1は第1コードブックのコードベクトルの総数であり、d1は第1コードベクトルのインデックスである。ここで、第1コードブック103は、d1’=0からd1’=D1−1までのd1’の値を順次誤差最小化部105から指示される。
加算器104は、ベクトル量子化対象として入力される広帯域LSPベクトルLSP(i)(i=0,1,…,R−1)と、第1コードブック103から入力される第1コードベクトルCODE_1(d1’)(i)(i=0,1,…,R−1)との差を下記の式(1)に従って求め、この差を第1残差ベクトルErr_1
(d1’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。また、加算器104は、d1’=0からd1’=D1−1までのd1’それぞれに対応する第1残差ベクトルErr_1
(d1’)(i)(i=0,1,…,R−1)のうち、誤差最小化部105の探索により最小となると分かった第1残差ベクトルErr_1
(d1_min)(i)(i=0,1,…,R−1)を乗算器107に出力する。
誤差最小化部105は、d1’=0からd1’=D1−1までのd1’の値を順次第1コードブック103に指示し、d1’=0からd1’=D1−1までのd1’それぞれに
対して、加算器104から入力される第1残差ベクトルErr_1
(d1’)(i)(i=0,1,…,R−1)を下記の式(2)に従って二乗し、二乗誤差Errを求める。
誤差最小化部105は、二乗誤差Errが最小となる第1コードベクトルのインデックスd1’を第1インデックスd1_minとして記憶する。
スケーリング因子決定部106は、分類情報mに対応するスケーリング因子Scale
(m)(i)(i=0,1,…,R−1)をスケーリング因子コードブックの中から選択し、そのスケーリング因子の逆数Rec_Scale
(m)(i)を下記の式(3)に従って求めて乗算器107に出力する。
乗算器107は、下記の式(4)に従って、加算器104から入力される第1残差ベクトルErr_1
(d1_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部106から入力されるスケーリング因子の逆数Rec_Scale
(m)(i)(i=0,1,…,R−1)を乗じて加算器109に出力する。
第2コードブック108は、コードブックを構成する各第2コードベクトルCODE_2(d2)(i)(d2=0,1,…,D2−1、i=0,1,…,R−1)の中から、誤差最小化部105からの指示d2’により指示されたコードベクトルCODE_2(d2’)(i)(i=0,1,…,R−1)を加算器109に出力する。ここで、D2は第2コードブックのコードベクトルの総数であり、d2はコードベクトルのインデックスである。第2コードブック108は、d2’=0からd2’=D2−1までのd2’の値を順次誤差最小化部105から指示される。
加算器109は、乗算器107から入力されるスケーリング因子の逆数が乗算された第1残差ベクトルSca_Err_1
(d1_min)(i)(i=0,1,…,R−1)と、第2コードブック108から入力される第2コードベクトルCODE_2
(d2’)(i)(i=0,1,…,R−1)との差を下記の式(5)に従って求め、この差を第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。また、加算器109は、d2’=0からd2’=D1−1までのd2’それぞれに対応する第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)のうち、誤差最小化部105の探索により最小となると分かった第2残差ベクトルErr_2
(d2_min)(i)(i=0,1,…,R−1)を加算器111に出力する。
ここで、誤差最小化部105は、d2’=0からd2’=D2−1までのd2’の値を
順次第2コードブック108に指示し、d2’=0からd2’=D2−1までのd2’それぞれに対して、加算器109から入力される第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)を下記の式(6)に従って二乗し、二乗誤差Errを求める。
誤差最小化部105は、二乗誤差Errが最小となる第2コードベクトルのインデックスd2’を第2インデックスd2_minとして記憶する。
第3コードブック110は、コードブックを構成する各第3コードベクトルCODE_3(d3)(i)(d3=0,1,…,D3−1、i=0,1,…,R−1)の中から、誤差最小化部105からの指示d3’により指示された第3コードベクトルCODE_3(d3’)(i)(i=0,1,…,R−1)を加算器111に出力する。ここで、D3は第3コードブックのコードベクトルの総数であり、d3はコードベクトルのインデックスである。第3コードブック110は、d3’=0からd3’=D3−1までのd3’の値を順次誤差最小化部105から指示される。
加算器111は、加算器109から入力される第2残差ベクトルErr_2
(d2_min)(i)(i=0,1,…,R−1)と、第3コードブック110から入力されるコードベクトルCODE_3
(d3’)(i)(i=0,1,…,R−1)との差を下記の式(7)に従って求め、この差を第3残差ベクトルErr_3
(d3’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。
ここで、誤差最小化部105は、d3’=0からd3’=D3−1までのd3’の値を順次第3コードブック110に指示し、d3’=0からd3’=D3−1までのd3’それぞれに対して、加算器111から入力される第3残差ベクトルErr_3
(d3’)(i)(i=0,1,…,R−1)を下記の式(8)に従って二乗し、二乗誤差Errを求める。
次いで、誤差最小化部105は、二乗誤差Errが最小となる第3コードベクトルのインデックスd3’を第3インデックスd3_minとして記憶する。そして、誤差最小化部105は、第1インデックスd1_min、第2インデックスd2_min、第3インデックスd3_minを纏めて符号化し、符号化データとして出力する。
図2は、本実施の形態に係るLSPベクトル逆量子化装置200の主要な構成を示すブロック図である。LSPベクトル逆量子化装置200は、LSPベクトル量子化装置100において出力される符号化データを復号し、量子化LSPベクトルを生成する。
LSPベクトル逆量子化装置200は、分類器201、符号分離部202、スイッチ203、第1コードブック204、スケーリング因子決定部205、第2コードブック(C
Bb)206、乗算器207、加算器208、第3コードブック(CBc)209、乗算器210、および加算器211を備える。なお、第1コードブック204は、第1コードブック103が備えるサブコードブック(CBa1〜CBan)と同一内容のサブコードブックを備え、スケーリング因子決定部205は、スケーリング因子決定部106が備えるスケーリング因子コードブックと同一内容のスケーリング因子コードブックを備える。また、第2コードブック206は、第2コードブック108が備えるコードブックと同一内容のコードブックを備え、第3コードブック209は、第3コードブック110が備えるコードブックと同一内容のコードブックを備える。
分類器201は、狭帯域LSPベクトルの複数の種類それぞれを示す複数の分類情報からなる分類用コードブックを予め格納しており、ベクトル量子化対象である広帯域LSPベクトルの種類を示す分類情報を分類用コードブックの中から選択し、スイッチ203、およびスケーリング因子決定部205に出力する。具体的には、分類器201は、狭帯域LSPベクトルの各種類に対応するコードベクトルからなる分類用コードブックを内蔵しており、分類用コードブックを探索することにより、図示しない狭帯域LSP量子化器から入力される量子化狭帯域LSPベクトルとの二乗誤差が最小となるコードベクトルを求める。分類器201は、探索により求めたコードベクトルのインデックスを、LSPベクトルの種類を示す分類情報とする。
符号分離部202は、LSPベクトル量子化装置100から送信される符号化データを第1インデックス、第2インデックス、および第3インデックスに分離する。符号分離部202は、第1インデックスを第1コードブック204に指示し、第2インデックスを第2コードブック206に指示し、第3インデックスを第3コードブック209に指示する。
スイッチ203は、分類器201から入力される分類情報に対応するサブコードブック(CBam)を第1コードブック204の中から1つ選び、そのサブコードブックの出力端子を加算器208に接続する。
第1コードブック204は、第1コードブックを構成する複数の第1コードベクトルの中から、符号分離部202により指示された第1インデックスに対応する1つの第1コードベクトルをスイッチ203に出力する。
スケーリング因子決定部205は、分類器201から入力される分類情報に対応するスケーリング因子をスケーリング因子コードブックの中から選択し、乗算器207および乗算器210に出力する。
第2コードブック206は、符号分離部202により指示された第2インデックスに対応する1つの第2コードベクトルを乗算器207に出力する。
乗算器207は、第2コードブック206から入力される第2コードベクトルに、スケーリング因子決定部205から入力されるスケーリング因子を乗じて加算器208に出力する。
加算器208は、乗算器207から入力されるスケーリング因子乗算後の第2コードベクトルと、スイッチ203から入力される第1コードベクトルとを加算し、加算結果となるベクトルを加算器211に出力する。
第3コードブック209は、符号分離部202により指示された第3インデックスに対応する1つの第3コードベクトルを乗算器210に出力する。
乗算器210は、第3コードブック209から入力される第3コードベクトルに、スケーリング因子決定部205から入力されるスケーリング因子を乗じて加算器211に出力する。
加算器211は、乗算器210から入力されるスケーリング因子乗算後の第3コードベクトルと、加算器208から入力されるベクトルとを加算し、加算結果となるベクトルを量子化広帯域LSPベクトルとして出力する。
次に、LSPベクトル逆量子化装置200の動作について説明する。
分類器201は、狭帯域LSPベクトルのn個の種類それぞれに対応するn個のコードベクトルからなる分類用コードブックを内蔵しており、コードベクトルを探索することにより、図示しない狭帯域LSP量子化器から入力される量子化狭帯域LSPベクトルとの二乗誤差が最小となるm番目のコードベクトルを求める。分類器201は、m(1≦m≦n)を分類情報としてスイッチ203、およびスケーリング因子決定部205に出力する。
符号分離部202は、LSPベクトル量子化装置100から送信される符号化データを第1インデックスd1_min、第2インデックスd2_min、および第3インデックスd3_minに分離する。符号分離部202は、第1インデックスd1_minを第1コードブック204に指示し、第2インデックスd2_minを第2コードブック206に指示し、第3インデックスd3_minを第3コードブック209に指示する。
スイッチ203は、分類器201から入力される分類情報mに対応するサブコードブックCBamを第1コードブック204の中から選び、そのサブコードブックの出力端子を加算器208に接続する。
第1コードブック204は、サブコードブックCBamを構成する各第1コードベクトルCODE_1(d1)(i)(d1=0,1,…,D1−1、i=0,1,…,R−1)の中から、符号分離部202からの指示d1_minにより指示された第1コードベクトルCODE_1(d1_min)(i)(i=0,1,…,R−1)をスイッチ203に出力する。
スケーリング因子決定部205は、分類器201から入力される分類情報mに対応するスケーリング因子Scale(m)(i)(i=0,1,…,R−1)をスケーリング因子コードブックの中から選択し、乗算器207および乗算器210に出力する。
第2コードブック206は、第2コードブックを構成する各第2コードベクトルCODE_2(d2)(i)(d2=0,1,…,D2−1、i=0,1,…,R−1)の中から、符号分離部202からの指示d2_minにより指示された第2コードベクトルCODE_2(d2_min)(i)(i=0,1,…,R−1)を乗算器207に出力する。
乗算器207は、下記の式(9)に従って、第2コードブック206から入力される第2コードベクトルCODE_2
(d2_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部205から入力されるスケーリング因子Scale
(m)(i)(i=0,1,…,R−1)を乗じて加算器208に出力する。
加算器208は、下記の式(10)に従って、第1コードブック204から入力される第1コードベクトルCODE_1
(d1_min)(i)(i=0,1,…,R−1)と、乗算器207から入力されるスケーリング因子乗算後の第2コードベクトルSca_CODE_2
(d2_min)(i)(i=0,1,…,R−1)とを加算し、加算結果となるベクトルTMP(i)(i=0,1,…,R−1)を加算器211に出力する。
第3コードブック209は、コードブックを構成する各第3コードベクトルCODE_3(d3)(i)(d3=0,1,…,D3−1、i=0,1,…,R−1)の中から、符号分離部202からの指示d3_minにより指示された第3コードベクトルCODE_3(d3_min)(i)(i=0,1,…,R−1)を乗算器210に出力する。
乗算器210は、下記の式(11)に従って、第3コードブック209から入力される第3コードベクトルCODE_3
(d3_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部205から入力されるスケーリング因子Scale
(m)(i)(i=0,1,…,R−1)を乗じて加算器211に出力する。
加算器211は、下記の式(12)に従って、加算器208から入力されるベクトルTMP(i)(i=0,1,…,R−1)と、乗算器210から入力されるスケーリング因子乗算後の第3コードベクトルSca_CODE_3
(d3_min)(i)(i=0,1,…,R−1)とを加算し、加算結果となるベクトルQ_LSP(i)(i=0,1,…,R−1)を量子化広帯域LSPベクトルとして出力する。
LSPベクトル量子化装置100およびLSPベクトル逆量子化装置200において用いられる第1コードブック、第2コードブック、第3コードブック、スケーリング因子コードブックは、予め学習により設けられたものである。以下、これらのコードブックの学習方法の一例について説明する。
第1コードブック103および第1コードブック204が備える第1コードブックを学習により求めるためには、まず多数の学習用の音声データから得られる多数の、例えばV個のLSPベクトルを用意する。次いで、V個のLSPベクトルを種類(n種類)毎にグループ化し、各グループに属するLSPベクトルを用いて、LBG(Linde Buzo Gray)アルゴリズム等の学習アルゴリズムに従いD1個の第1コードベクトルCODE_1(d1)(i)(d1=0,1,…,D1−1、i=0,1,…,R−1)を求め、n個のサブコードブックを生成する。
第2コードブック108および第2コードブック206が備える第2コードブックを学習により求めるためには、前記方法で求めた第1コードブックを用いて1段目のベクトル
量子化を行い、加算器104から出力される第1残差ベクトルErr_1(d1_min)(i)(i=0,1,…,R−1)をV個得る。次いで、V個の第1残差ベクトルErr_1(d1_min)(i)(i=0,1,…,R−1)を用いて、LBGアルゴリズム等の学習アルゴリズムに従いD2個の第2コードベクトルCODE_2(d2)(i)(d2=0,1,…,D1−1、i=0,1,…,R−1)を求め、第2コードブックを生成する。
第3コードブック110および第3コードブック209が備える第3コードブックを学習により求めるためには、前記方法で求めた第1コードブックおよび第2コードブックを用いて1段目と2段目とのベクトル量子化を行い、加算器109から出力される第2残差ベクトルErr_2(d2_min)(i)(i=0,1,…,R−1)をV個得る。次いで、V個の第2残差ベクトルErr_2(d2_min)(i)(i=0,1,…,R−1)を用いて、LBGアルゴリズム等の学習アルゴリズムに従いD3個の第3コードベクトルCODE_3(d3)(i)(d3=0,1,…,D1−1、i=0,1,…,R−1)を求め、第3コードブックを生成する。ここでは、スケーリング因子コードブックはまだ生成されていないため、乗算器107は動作させず、加算器104の出力をそのまま加算器109に入力させる。
スケーリング因子決定部106およびスケーリング因子決定部205が備えるスケーリング因子コードブックを学習により求めるためには、スケーリング因子の値を仮にαとして、前記方法で求めた第1〜第3コードブックを用いて1段目〜3段目のベクトル量子化を行い、V個の量子化LSPを求める。次いで、入力であるV個のLSPベクトルとV個の量子化LSPベクトルとのスペクトル歪み(ケプストラム歪みでも良い)の平均値を求める。この際、αの値を、例えば0.8〜1.2の範囲で徐々に変えながら、それぞれのαに対応するスペクトル歪みを求め、スペクトル歪みが最小となるαの値をスケーリング因子とすれば良い。αの値の決定を狭帯域LSPベクトルの種類毎に行うことにより、各種類に対応するスケーリング因子が決まり、これらのスケーリング因子を用いてスケーリング因子コードブックを生成する。また、スケーリング因子がベクトルである場合は、ベクトルの要素毎に上記の学習を行えば良い。
このように、本実施の形態によれば、広帯域LSPベクトルとの相関を有する狭帯域LSPベクトルの種類により1段目のベクトル量子化のコードブックを切り換え、1段目のベクトル量子化誤差(第1残差ベクトル)の統計的な分散が種類毎に異なる多段ベクトル量子化において、狭帯域LSPベクトルの分類結果に対応するスケーリング因子を1段目の量子化残差ベクトルに乗じるため、2段目および3段目のベクトル量子化対象のベクトルの分散を1段目のベクトル量子化誤差の統計的な分散に応じて変更させることができ、従って広帯域LSPベクトルの量子化精度を向上することができる。
そして、ベクトル逆量子化装置において、量子化精度が向上された量子化方法により生成された広帯域LSPベクトルの符号化データを入力してベクトル逆量子化を行うことにより、高精度な量子化広帯域LSPベクトルを生成することが可能となる。また、このようなベクトル逆量子化装置を音声復号装置に用いれば、高精度な量子化広帯域LSPベクトルを用いて音声を復号することができるため、高品質な復号音声を得ることが可能となる。
なお、本実施の形態では、スケーリング因子決定部106およびスケーリング因子決定部205が備えるスケーリング因子コードブックを構成するスケーリング因子は狭帯域LSPベクトルの種類に対応している場合を例にとって説明したが、本発明はこれに限定されず、スケーリング因子決定部106およびスケーリング因子決定部205が備えるスケーリング因子コードブックを構成するスケーリング因子は、音声の特徴を分類した各種類
に対応していても良い。かかる場合、分類器101は、狭帯域LSPベクトルではなく音声の特徴を表すパラメータを音声特徴情報として入力し、入力された音声特徴情報に対応する音声特徴の種類を分類情報としてスイッチ102およびスケーリング因子決定部106に出力する。例えば、VMR−WB(Varialbe-Rate Multimode Wideband Speech Codec)のように、音声の有声性、雑音性等の特徴でエンコーダのタイプを切り換えるというような符号化装置に本発明を適用する場合、エンコーダのタイプの情報をそのまま音声特徴量として用いて良い。
また、本実施の形態では、スケーリング因子決定部106は、分類器101から入力される種類に対応するスケーリング因子の逆数を出力する場合を例にとって説明したが、本発明はこれに限定されず、予めスケーリング因子の逆数を求め、求められたスケーリング因子の逆数をスケーリング因子コードブックに格納しても良い。
また、本実施の形態では、LSPベクトルに対して3段のベクトル量子化を行う場合を例にとって説明したが、本発明はこれに限定されず、2段のベクトル量子化、もしくは、4段以上のベクトル量子化を行う場合にも適用できる。
また、本実施の形態では、LSPベクトルに対して3段の多段ベクトル量子化を行う場合を例にとって説明したが、本発明はこれに限定されず、分割ベクトル量子化と併用してベクトル量子化を行う場合にも適用できる。
また、本実施の形態では、量子化対象として広帯域LSPベクトルを例にとって説明したが、量子化対象はこれに限定されず、広帯域LSPベクトル以外のベクトルであっても良い。
また、本実施の形態では、LSPベクトル逆量子化装置200は、LSPベクトル量子化装置100において出力される符号化データを復号するとしたが、これに限らず、LSPベクトル逆量子化装置200で復号可能な形式の符号化データであれば、LSPベクトル逆量子化装置で受信して復号することが可能であることは言うまでもない。
(実施の形態2)
図3は、本発明の実施の形態2に係るLSPベクトル量子化装置300の主要な構成を示すブロック図である。なお、LSPベクトル量子化装置300は、実施の形態1に示したLSPベクトル量子化装置100(図1参照)と同様の基本的構成を有しており、同一の構成要素には同一の符号を付し、その説明を省略する。
LSPベクトル量子化装置300は、分類器101、スイッチ102、第1コードブック103、加算器304、誤差最小化部105、スケーリング因子決定部306、第2コードブック308、加算器309、第3コードブック310、加算器311、乗算器312、および乗算器313を備える。
加算器304は、ベクトル量子化対象として外部から入力される広帯域LSPベクトルと、スイッチ102から入力される第1コードベクトルとの差を求め、この差を第1残差ベクトルとして誤差最小化部105に出力する。また、加算器304は、すべての第1コードベクトルそれぞれに対応する第1残差ベクトルのうち、誤差最小化部105の探索により最小となると分かった1つを加算器309に出力する。
スケーリング因子決定部306は、狭帯域LSPベクトルの各種類に対応するスケーリング因子からなるスケーリング因子コードブックを予め格納している。スケーリング因子決定部306は、分類器101から入力される分類情報に対応するスケーリング因子を乗
算器312および乗算器313に出力する。ここで、スケーリング因子はスカラーであっても良く、ベクトルであっても良い。
第2コードブック(CBb)308は、複数の第2コードベクトルからなり、誤差最小化部105からの指示により指示された第2コードベクトルを乗算器312に出力する。
第3コードブック(CBc)310は、複数の第3コードベクトルからなり、誤差最小化部105からの指示により指示された第3コードベクトルを乗算器313に出力する。
乗算器312は、第2コードブック308から入力された第2コードベクトルに、スケーリング因子決定部306から入力されたスケーリング因子を乗じて加算器309に出力する。
加算器309は、加算器304から入力される第1残差ベクトルと、乗算器312から入力されるスケーリング因子乗算後の第2コードベクトルとの差を求め、この差を第2残差ベクトルとして誤差最小化部105に出力する。また、加算器309は、すべての第2コードベクトルそれぞれに対応する第2残差ベクトルのうち、誤差最小化部105の探索により最小となると分かった1つを加算器311に出力する。
乗算器313は、第3コードブック310から入力された第3コードベクトルに、スケーリング因子決定部306から入力されるスケーリング因子を乗じて加算器311に出力する。
加算器311は、加算器309から入力される第2残差ベクトルと、乗算器313から入力されるスケーリング因子乗算後の第3コードベクトルとの差を求め、この差を第3残差ベクトルとして誤差最小化部105に出力する。
次に、量子化対象となるLSPベクトルの次数がR次である場合を例にとって、LSPベクトル量子化装置300が行う動作について説明する。なお、以下の説明では、LSPベクトルをLSP(i)(i=0,1,…,R−1)と記す。
加算器304は、広帯域LSPベクトルLSP(i)(i=0,1,…,R−1)と、第1コードブック103から入力される第1コードベクトルCODE_1(d1´)(i)(i=0,1,…,R−1)との差を下記の式(13)に従って求め、この差を第1残差ベクトルErr_1(d1´)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。また、加算器304は、d1’=0からd1’=D1−1までのd1’それぞれに対応する第1残差ベクトルErr_1
(d1’)(i)(i=0,1,…,R−1)のうち、誤差最小化部105の探索により最小となると分かった第1残差ベクトルErr_1
(d1_min)(i)(i=0,1,…,R−1)を加算器309に出力する。
スケーリング因子決定部306は、分類情報mに対応するスケーリング因子Scale(m)(i)(i=0,1,…,R−1)をスケーリング因子コードブックの中から選択して乗算器312および乗算器313に出力する。
第2コードブック308は、コードブックを構成する各第2コードベクトルCODE_2(d2)(i)(d2=0,1,…,D2−1、i=0,1,…,R−1)の中から、
誤差最小化部105からの指示d2´により指示されたコードベクトルCODE_2(d2´)(i)(i=0,1,…,R−1)を乗算器312に出力する。ここで、D2は第2コードブックのコードベクトルの総数であり、d2はコードベクトルのインデックスである。第2コードブック308は、d2’=0からd2’=D2−1までのd2’の値を順次誤差最小化部105から指示される。
乗算器312は、下記の式(14)に従って、第2コードブック308から入力される第2コードベクトルCODE_2
(d2’)(i)(i=0,1,…,R−1)に、スケーリング因子決定部306から入力されるスケーリング因子Scale
(m)(i)(i=0,1,…,R−1)を乗じて加算器309に出力する。
加算器309は、加算器304から入力される第1残差ベクトルErr_1
(d1_min)(i)(i=0,1,…,R−1)と、乗算器312から入力されるスケーリング因子乗算後の第2コードベクトルSca_CODE_2
(d2’)(i)(i=0,1,…,R−1)との差を下記の式(15)に従って求め、この差を第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。また、加算器309は、d2’=0からd2’=D1−1までのd2’それぞれに対応する第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)のうち、誤差最小化部105の探索により最小となると分かった第2残差ベクトルErr_2
(d2_min)(i)(i=0,1,…,R−1)を加算器311に出力する。
第3コードブック310は、コードブックを構成する各第3コードベクトルCODE_3(d3)(i)(d3=0,1,…,D3−1、i=0,1,…,R−1)の中から、誤差最小化部105からの指示d3´により指示されたコードベクトルCODE_3(d3´)(i)(i=0,1,…,R−1)を乗算器313に出力する。ここで、D3は第3コードブックのコードベクトルの総数であり、d3はコードベクトルのインデックスである。第3コードブック310は、d3’=0からd3’=D3−1までのd3’の値を順次誤差最小化部105から指示される。
乗算器313は、下記の式(16)に従って、第3コードブック310から入力される第3コードベクトルCODE_3
(d3’)(i)(i=0,1,…,R−1)に、スケーリング因子決定部306から入力されるスケーリング因子Scale
(m)(i)(i=0,1,…,R−1)を乗じて加算器311に出力する。
加算器311は、加算器309から入力される第2残差ベクトルErr_2(d2_min)(i)(i=0,1,…,R−1)と、乗算器313から入力されるスケーリング因子乗算後の第3コードベクトルSca_CODE_3(d3’)(i)(i=0,1,…,R−1)との差を下記の式(17)に従って求め、この差を第3残差ベクトルErr_3(d3’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。
このように、本実施の形態によれば、広帯域LSPベクトルとの相関を有する狭帯域LSPベクトルの種類により1段目のベクトル量子化のコードブックを切り換え、1段目のベクトル量子化誤差(第1残差ベクトル)の統計的な分散が種類毎に異なる多段ベクトル量子化において、狭帯域LSPベクトルの分類結果に対応するスケーリング因子を2段目および3段目のベクトル量子化に用いる第2コードブックおよび第2コードブックのコードベクトルに乗じるため、2段目および3段目に用いるコードブックのコードベクトルの分散を1段目のベクトル量子化誤差の統計的な分散に適応して変更させることができ、従って広帯域LSPベクトルの量子化精度を向上することができる。
なお、本実施の形態に係る第2コードブック308は、実施の形態1に係る第2コードブック108と同一内容のコードブックであり、本実施の形態に係る第3コードブック310は、実施の形態1に係る第3コードブック110と同一内容のコードブックであって良い。また、本実施の形態に係るスケーリング因子決定部306は、実施の形態1に係るスケーリング因子決定部106が備えるスケーリング因子コードブックと同一内容のコードブックを備えて良い。
(実施の形態3)
図4は、本発明の実施の形態3に係るLSPベクトル量子化装置400の主要な構成を示すブロック図である。なお、LSPベクトル量子化装置400は、実施の形態1に示したLSPベクトル量子化装置100(図1参照)と同様の基本的構成を有しており、同一の構成要素には同一の符号を付し、その説明を省略する。
LSPベクトル量子化装置400は、分類器101、スイッチ102、第1コードブック103、加算器104、誤差最小化部105、スケーリング因子決定部406、乗算器407、第2コードブック108、加算器409、第3コードブック110、加算器412、および乗算器411を備える。
スケーリング因子決定部406は、狭帯域LSPベクトルの各種類に対応するスケーリング因子からなるスケーリング因子コードブックを予め格納している。スケーリング因子決定部406は、分類器101から入力される分類情報に対応するスケーリング因子を決定する。ここで、スケーリング因子は、加算器104が出力する第1残差ベクトルに対して乗じられるスケーリング因子(第1スケーリング因子)と、加算器409が出力する第1残差ベクトルに対して乗じられるスケーリング因子(第2スケーリング因子)と、から成る。次いで、スケーリング因子決定部406は、第1スケーリング因子を乗算器407に出力し、第2スケーリング因子を乗算器411に出力する。このように、多段ベクトル量子化の各段に適したスケーリング因子を予め用意しておくことにより、コードブックの適応調整をより仔細に行うことができる。
乗算器407は、加算器104から入力される第1残差ベクトルに、スケーリング因子決定部406から入力される第1スケーリング因子の逆数を乗じて加算器409に出力する。
加算器409は、乗算器407から入力される、スケーリング因子の逆数が乗算された第1残差ベクトルと、第2コードブック108から入力される第2コードベクトルとの差を求め、この差を第2残差ベクトルとして誤差最小化部105に出力する。また、加算器409は、すべての第2コードベクトルそれぞれに対応する第2残差ベクトルのうち、誤差最小化部105の探索により最小となると分かった1つを乗算器411に出力する。
乗算器411は、加算器409から入力される第2残差ベクトルに、スケーリング因子決定部406から入力される第2スケーリング因子の逆数を乗じて加算器412に出力す
る。
加算器412は、乗算器411から入力される、スケーリング因子の逆数が乗算された第2残差ベクトルと、第3コードブック110から入力される第3コードベクトルとの差を求め、この差を第3残差ベクトルとして誤差最小化部105に出力する。
次に、量子化対象となるLSPベクトルの次数がR次である場合を例にとって、LSPベクトル量子化装置400が行う動作について説明する。なお、以下の説明では、LSPベクトルをLSP(i)(i=0,1,…,R−1)と記す。
スケーリング因子決定部406は、分類情報mに対応する第1スケーリング因子Scale_1
(m)(i)(i=0,1,…,R−1)と第2スケーリング因子Scale_2
(m)(i)(i=0,1,…,R−1)とをスケーリング因子コードブックの中から選択し、第1スケーリング因子Scale_1
(m)(i)(i=0,1,…,R−1)の逆数を下記の式(17)に従って求め、乗算器407に出力し、第2スケーリング因子Scale_2
(m)(i)(i=0,1,…,R−1)の逆数を下記の式(18)に従って求め、乗算器411に出力する。
また、ここでは、各スケーリング因子を選択した後に逆数を求める場合について説明したが、前以て各スケーリング因子の逆数を求めておき、各スケーリング因子の逆数をスケーリング因子コードブックに格納しておくことにより、逆数を求める演算を省略することができる。この場合でも、本発明は、同様の効果を得ることができる。
乗算器407は、下記の式(19)に従って、加算器104から入力される第1残差ベクトルErr_1
(d1_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部406から入力される第1スケーリング因子の逆数Rec_Scale_1
(m)(i)(i=0,1,…,R−1)を乗じて加算器409に出力する。
加算器409は、乗算器407から入力される第1スケーリング因子の逆数が乗算された第1残差ベクトルSca_Err_1
(d1_min)(i)(i=0,1,…,R−1)と、第2コードブック108から入力される第2コードベクトルCODE_2
(d2’)(i)(i=0,1,…,R−1)との差を下記の式(20)に従って求め、この差を第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。また、加算器409は、d2’=0からd2’=D1−1までのd2’それぞれに対応する第2残差ベクトルErr_2
(d2’)(i)(i=0,1,…,R−1)のうち、誤差最小化部105の探索により最小となると分かった第2残差ベクトルErr_2
(d2_min)(i)(i=0,1,…,R−1)を乗算器411に出力する。
乗算器411は、下記の式(21)に従って、加算器409から入力される第2残差ベクトルErr_2
(d2_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部406から入力される第2スケーリング因子の逆数Rec_Scale_2
(m)(i)(i=0,1,…,R−1)を乗じて加算器412に出力する。
加算器412は、乗算器411から入力される第2スケーリング因子の逆数が乗算された第2残差ベクトルSca_Err_2
(d2_min)(i)(i=0,1,…,R−1)と、第3コードブック110から入力される第3コードベクトルCODE_3
(d3’)(i)(i=0,1,…,R−1)との差を下記の式(22)に従って求め、この差を第3残差ベクトルErr_3
(d3’)(i)(i=0,1,…,R−1)として誤差最小化部105に出力する。
このように、本実施の形態によれば、広帯域LSPベクトルとの相関を有する狭帯域LSPベクトルの種類により1段目のベクトル量子化のコードブックを切り換え、1段目のベクトル量子化誤差(第1残差ベクトル)の統計的な分散が種類毎に異なる多段ベクトル量子化において、狭帯域LSPベクトルの分類結果に対応するスケーリング因子を2段目および3段目のベクトル量子化に用いる第2コードブックおよび第3コードブックのコードベクトルに乗じるため、2段目および3段目に用いるコードブックのコードベクトルの分散を1段目のベクトル量子化誤差の統計的な分散に適応して変更させることができ、従って広帯域LSPベクトルの量子化精度を向上することができる。また、2段目に用いるスケーリング因子と3段目に用いるスケーリング因子とを個別に用意することにより、より仔細な適応を可能とする。
図5は、本実施の形態に係るLSPベクトル逆量子化装置500の主要な構成を示すブロック図である。LSPベクトル逆量子化装置500は、LSPベクトル量子化装置400において出力される符号化データを復号し、量子化LSPベクトルを生成する。なお、LSPベクトル逆量子化装置500は、実施の形態1に示したLSPベクトル逆量子化装置200(図2参照)と同様の基本的構成を有しており、同一の構成要素には同一の符号を付し、その説明を省略する。
LSPベクトル逆量子化装置500は、分類器201、符号分離部202、スイッチ203、第1コードブック204、スケーリング因子決定部505、第2コードブック(CBb)206、乗算器507、加算器208、第3コードブック(CBc)209、乗算器510、および加算器211を備える。なお、第1コードブック204は、第1コードブック103が備えるサブコードブック(CBa1〜CBan)と同一内容のサブコードブックを備え、スケーリング因子決定部505は、スケーリング因子決定部406が備えるスケーリング因子コードブックと同一内容のスケーリング因子コードブックを備える。
また、第2コードブック206は、第2コードブック108が備えるコードブックと同一内容のコードブックを備え、第3コードブック209は、第3コードブック110が備えるコードブックと同一内容のコードブックを備える。
スケーリング因子決定部505は、分類器201から入力される分類情報mに対応する第1スケーリング因子Scale_1(m)(i)(i=0,1,…,R−1)と第2スケーリング因子Scale_2(m)(i)(i=0,1,…,R−1)とをスケーリング因子コードブックの中から選択し、第1スケーリング因子Scale_1(m)(i)(i=0,1,…,R−1)を乗算器507と乗算器510とに出力し、第2スケーリング因子Scale_2(m)(i)(i=0,1,…,R−1)を乗算器510に出力する。
乗算器507は、下記の式(23)に従って、第2コードブック206から入力される第2コードベクトルCODE_2
(d2_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部505から入力される第1スケーリング因子Scale_1
(m)(i)(i=0,1,…,R−1)を乗じて加算器208に出力する。
乗算器510は、下記の式(24)に従って、第3コードブック209から入力される第3コードベクトルCODE_3
(d3_min)(i)(i=0,1,…,R−1)に、スケーリング因子決定部505から入力される第1スケーリング因子Scale_1
(m)(i)(i=0,1,…,R−1)と第2スケーリング因子Scale_2
(m)(i)(i=0,1,…,R−1)とを乗じて加算器211に出力する。
このように、本実施の形態によれば、LSPベクトル逆量子化装置において、量子化精度が向上された量子化方法により生成された広帯域LSPベクトルの符号化データを入力してベクトル逆量子化を行うことにより、高精度な量子化広帯域LSPベクトルを生成することが可能となる。また、このようなベクトル逆量子化装置を音声復号装置に用いれば、高精度な量子化広帯域LSPベクトルを用いて音声を復号することができるため、高品質な復号音声を得ることが可能となる。
なお、LSPベクトル逆量子化装置500は、LSPベクトル量子化装置400において出力される符号化データを復号するとしたが、これに限らず、LSPベクトル逆量子化装置500で復号可能な形式の符号化データであれば、LSPベクトル逆量子化装置で受信して復号することが可能であることは言うまでもない。
以上、本発明の各実施の形態について説明した。
なお、本発明に係るベクトル量子化装置、ベクトル逆量子化装置、およびこれらの方法は、上記各実施の形態に限定されず、種々変更して実施することが可能である。
たとえば、上記各実施の形態では、ベクトル量子化装置、ベクトル逆量子化装置、およびこれらの方法において、音声信号を対象として説明したが、楽音信号等に適用すること
も可能である。
また、LSPは、LSF(Line Spectral Frequency)と呼ばれることもあり、LSPをLSFと読み替えてもよい。また、LSPの代わりにISP(Immittance Spectrum Pairs)をスペクトルパラメータとして量子化する場合はLSPをISPに読み替え、ISP量子化/逆量子化装置として本実施の形態を利用することができる。LSPの代わりにISF(Immittance Spectrum Frequency)をスペクトルパラメータとして量子化する場合はLSPをISFに読み替え、ISF量子化/逆量子化装置として本実施の形態を利用することができる。
また、本発明に係るベクトル量子化装置およびベクトル逆量子化装置は、音声信号や楽音信号等の符号化/復号化するCELP符号化装置/CELP復号装置に用いることが可能である。たとえば本発明に係るLSPベクトル量子化装置をCELP型音声符号化装置に適用する場合は、CELP符号化装置において、入力信号を線形予測分析して得られた線形予測係数から変換されたLSPを入力して量子化処理を行い、量子化された量子化LSPを合成フィルタへ出力するとともに、量子化LSPを表す量子化LSP符号を符号化データとして出力するLSP量子化部のところに、本発明によるLSPベクトル量子化装置100を配置する。これにより、ベクトル量子化精度を向上することが可能となるため、復号時の音声品質も向上する。同様に、本発明に係るLSPベクトル逆量子化装置をCELP型音声復号装置に適用する場合は、CELP復号装置において、受信した多重化符号データを分離して得られた量子化LSP符号から量子化LSPを復号し、復号した量子化LSPを合成フィルタへ出力するLSP逆量子化部のところに、本発明によるLSPベクトル逆量子化装置200を配置すればよく、上記と同様の作用効果が得られる。
また、本発明に係るベクトル量子化装置およびベクトル逆量子化装置は、音声や楽音等の伝送を行う移動体通信システムにおける通信端末装置に搭載することが可能であり、これにより上記と同様の作用効果を有する通信端末装置を提供することができる。
また、ここでは、本発明をハードウェアで構成する場合を例にとって説明したが、本発明をソフトウェアで実現することも可能である。例えば、本発明に係るベクトル量子化方法およびベクトル逆量子化方法のアルゴリズムをプログラミング言語によって記述し、このプログラムをメモリに記憶しておいて情報処理手段によって実行させることにより、本発明に係るベクトル量子化装置およびベクトル逆量子化装置と同様の機能を実現することができる。
また、上記各実施の形態の説明に用いた各機能ブロックは、典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されても良いし、一部または全てを含むように1チップ化されても良い。
また、ここではLSIとしたが、集積度の違いによって、IC、システムLSI、スーパーLSI、ウルトラLSI等と呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現しても良い。LSI製造後に、プログラム化することが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続もしくは設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらに、半導体技術の進歩または派生する別技術により、LSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行っても良い。バイオ技術の適用等が可能性としてあり得る。
2007年10月12日出願の特願2007−266922および2007年11月1日出願の特願2007−285602の日本出願に含まれる明細書、図面および要約書の開示内容は、すべて本願に援用される。