(58)【調査した分野】(Int.Cl.,DB名)
【背景技術】
【0002】
移動体通信においては伝送帯域の有効利用のために音声または画像のディジタル情報の圧縮符号化が必須である。その中でも、携帯電話で広く利用されている音声コーデック技術に対する期待は大きく、圧縮率の高い従来の高効率符号化に対して、更によりよい音質の要求が強まっている。また、公衆で使用されるために標準化が必須であり、それに伴う知財権の強さゆえに世界の各社で研究開発が盛んに行われている。
【0003】
近年では、音声と音楽の双方を符号化できるコーデックの標準化がITU−T及びMPEGで検討されており、より効率的で高品質の音声コーデックが求められている。
【0004】
20年前に確立された音声の発声機構をモデル化してベクトル量子化を巧みに応用した基本方式であるCELP(Code Excited Linear Prediction)によって音声符号化技術は大きく性能を向上させた。ITU−T(International Telecommunication Union - Telecommunication Standardization Sector)標準G.729、ITU−T標準G.722.2、ETSI(European Telecommunications Standards Institute)標準AMR(Adaptive Multiple Rate Coding)、ETSI標準AMR−WB(Adaptive Multiple Rate Coding - Wide Band)または3GPP(3rd Generation Partnership Project)2標準VMR−WB(Variable Multiple rate - Wide Band)等の国際規格において、CELPは多くの標準方式として採用されている。
【0005】
図1は、CELP符号化装置の構成を示すブロック図である。
図1では、CELPにおけるスペクトルパラメータ(LSPまたはISP等)の量子化を行うものである。
【0006】
図1より、LPC分析部101は、音声信号に対して線形予測分析(LPC分析)を施し、スペクトル包絡情報であるLPCパラメータを求め、求めたLPCパラメータをLPC量子化部102及び聴感重み付け部111に出力する。
【0007】
LPC量子化部102は、LPC分析部101から出力されたLPCパラメータを量子化する。そして、LPC量子化部102は、得られた量子化LPCパラメータをLPC合成フィルタ109に出力し、量子化LPCパラメータのインデックス(符号)をCELP符号化装置100の外部へ出力する。
【0008】
一方、適応符号帳103は、LPC合成フィルタ109で使用された過去の駆動音源を記憶しており、後述する歪み最小化部112から指示されたインデックスに対応する適応符号帳ラグに従って、記憶している駆動音源から1サブフレーム分の音源ベクトルを生成する。この音源ベクトルは、適応符号帳ベクトルとして乗算器106に出力される。
【0009】
固定符号帳104は、音源符号化(「音源量子化」または「音源ベクトル符号化」とも呼ばれる)の符号帳である。固定符号帳104は、所定形状の音源ベクトルを複数個予め記憶しており、歪み最小化部112から指示されたインデックスに対応する音源ベクトルを、固定符号帳ベクトルとして乗算器107に出力する。ここで、固定符号帳104は代数的音源であり、代数的符号帳を用いた場合について説明する。代数的音源とは、多くの標準コーデックに採用されている音源である。
【0010】
なお、上記の適応符号帳103は、有声音のように周期性の強い成分を表現するために使われる。一方、固定符号帳104は、白色雑音のように周期性の弱い成分を表現するために使われる。
【0011】
ゲイン符号帳105は、歪み最小化部112からの指示に従って、適応符号帳103から出力される適応符号帳ベクトル用のゲイン(適応符号帳ゲイン)、及び固定符号帳104から出力される固定符号帳ベクトル用のゲイン(固定符号帳ゲイン)を生成し、それぞれ乗算器106、107に出力する。
【0012】
乗算器106は、ゲイン符号帳105から出力された適応符号帳ゲインを、適応符号帳103から出力された適応符号帳ベクトルに乗じ、乗算後の適応符号帳ベクトルを加算器108に出力する。
【0013】
乗算器107は、ゲイン符号帳105から出力された固定符号帳ゲインを、固定符号帳104から出力された固定符号帳ベクトルに乗じ、乗算後の固定符号帳ベクトルを加算器108に出力する。
【0014】
加算器108は、乗算器106から出力された適応符号帳ベクトルと、乗算器107から出力された固定符号帳ベクトルとを加算し、加算後の音源ベクトルを駆動音源としてLPC合成フィルタ109に出力する。
【0015】
LPC合成フィルタ109は、LPC量子化部102から出力された量子化LPCパラメータをフィルタ係数とし、適応符号帳103及び固定符号帳104で生成される音源ベクトルを駆動音源としたフィルタ関数、すなわち、LPC合成フィルタを用いて合成信号を生成する。この合成信号は、加算器110に出力される。
【0016】
加算器110は、LPC合成フィルタ109で生成された合成信号を音声信号から減算することによって誤差信号を算出し、この誤差信号を聴感重み付け部111に出力する。なお、この誤差信号が符号化歪みに相当する。
【0017】
聴感重み付け部111は、LPC分析部101から入力されるLPCパラメータを用いて、加算器110から出力された符号化歪みに対して聴感的な重み付けを施し、歪み最小化部112に出力する。
【0018】
歪み最小化部112は、聴感重み付け部111から出力された符号化歪みが最小となるような、適応符号帳103、固定符号帳104及びゲイン符号帳105の各インデックス(符号)をサブフレームごとに求め、これらのインデックスを符号化情報としてCELP符号化装置100の外部に出力する。より詳細には、上記の適応符号帳103及び固定符号帳104に基づいて合成信号を生成し、この信号の符号化歪みを求める一連の処理は閉ループ制御(帰還制御)となっており、歪み最小化部112は、各符号帳に指示するインデックスを1サブフレーム内において様々に変化させることによって各符号帳を探索し、最終的に得られる、符号化歪みを最小とする各符号帳のインデックスを出力する。
【0019】
固定符号帳(「確率的符号帳」とも呼ぶ)として使用される代数的符号帳(Algebraic Codebook)では、限られた計算量で更に良好な符号化性能が得られるようになった。代数的符号帳は、上記のITU−T標準G.729、ITU−T標準G.722.2、ETSI標準AMRまたはETSI標準AMR−WB等で広く使用されている。
【0020】
ここで、固定符号帳探索の基本的アルゴリズムの原理について説明する。
【0021】
まず、音源ベクトル(「符号帳ベクトル」または「コードベクトル」とも呼ぶ)の探索と符号の導出とは以下の(1)式の符号化歪を最小化する音源ベクトルを探索することにより行う。
【数1】
【0022】
一般的に、適応符号帳ベクトルと固定符号帳ベクトルとは逐次最適化で(別々のループで)探索されるので、固定符号帳104の符号の導出は以下の(2)式の符号化歪を最小化する固定符号帳ベクトルを探索することにより行う。
【数2】
【0023】
ここで、ゲインp、qは音源の符号を探索した後で決定するので、ここでは理想ゲイン(「最適ゲイン」とも呼ばれる)で探索を進めることとする。理想ゲインは、符号化歪を最も小さくするゲインを意味する。これより、上記の(2)式は以下の(3)式のように表すことができる。
【数3】
【0024】
符号化歪を示す(3)式を最小化することは、以下の(4)式のコスト関数Cを最大化することと同じである。
【数4】
【0025】
よって、代数的符号帳のような少数パルスからなる固定符号帳ベクトルsの探索の場合は、v
tHとH
tHとを予め計算しておけば、少ない計算量で上記のコスト関数Cを算出することができる。すなわち、代数的符号帳の符号化は、パルスの本数のチャネル(「トラック」とも呼ぶ)の多重ループにより、上記のコスト関数Cを最も大きくする位置と極性とを探索するアルゴリズムにより行われる。
【0026】
また、そのパルス音源の場合は、v
tHの値の正負で極性を予め予備選択してしまうと同時に、v
tHの値とH
tHの値とに極性を乗ずることによって、パルス位置探索の際に極性探索を省略することができる。この極性の予備選択により計算量は指数的に節約できる。
【0027】
そして、近年では、より高品質のニーズに対応するために、広帯域信号(16kHzサンプリング)及び超広帯域信号(32kHzサンプリング)を符号化するコーデックが求められており、ITU−T、MPEG(Moving Picture Experts Group)または3GPP等で標準化が進んでいる。広帯域及び超広帯域のディジタル信号を符号化するためにビットレートが高くなるのに伴って、音源を符号化する固定符号帳の情報ビット数も多くなる。代数的符号帳は、同時最適化(多重ループ)での探索により高性能を得ることができるので、ビット数が多くなる(パルス数が増える)と指数的に計算量が増えてしまう。
【0028】
そこで高品質コーデックにおいては、探索するパルス(チャネルまたはトラック)をいくつかのグループに分け、グループ内を同時最適化探索で探索し、グループ間は逐次最適化で探索するという方法が広く採用されている。例えば、4本のパルスで1つのパルスの立つ位置の候補が32であった場合、32の4乗で1048576回のマッチングを行わなくてはならない。しかしながら、4本のパルスを2本ずつ2つのグループに分けて探索すると、32の2乗の計算を2回行うことにより、2048回のマッチングで済む。この際、逐次最適化探索であるため、完全な同時最適化探索よりも性能は多少落ちるが、グループ内がクローズドなので、大きな劣化はない。そのために、近年はこのグループ化による探索が行われるようになった。
【0029】
このパルス探索の例として、グループのサイズを2パルスとし、探索を行った例を
図2を用いて説明する。
図2は、従来の固定符号帳探索処理の流れを示す概念図である。固定符号帳の探索処理の流れは、簡易的には
図2のように表すことができる。
図2に示すように、求めるべきパルスの本数が探索されるまで、2パルス探索を必要な回数だけ行う。それぞれの2パルス探索により求められた結果(パルス)は、パルス列にまとめられる(図示省略)。この2パルス探索の結果をまとめる方法については様々なものがある。例えば、ITU−T標準G.718では、4トラック構成についてパルスを2本ずつ探索しながら本数を増やすというアルゴリズムを用いている(非特許文献1参照)。ここではその説明は省略する。
【0030】
図3は、従来のグループ化によるパルスの位置の探索のアルゴリズムを模式的に示す図である。
図3は、
図2における2パルス探索の一つに対応する。
【0031】
探索を始める前に、前処理として、入力されるターゲット等を用いて、探索に必要なパラメータを求めておく。ここで、ターゲットはベクトルにより表すことができ、前述の、固定符号帳探索のターゲットベクトルvに対応する。パラメータとしては、ターゲットの時間逆順合成ベクトル(極性の予備選択済み)v
tH、パルスの合成ベクトル同士の相関行列(極性の予備選択済み)H
tH、トラック番号、及び各トラックのパルス候補位置の間隔、等が用意される。
【0032】
これらのパラメータを用いて、トラック0の探索ループの中でトラック1の探索ループが実行される。すなわち、トラック0の探索ループとトラック1の探索ループとで多重ループになっている。この多重ループによる探索を行うことにより、各トラックの探索された位置、この探索までの総合的分子項の基になる相関値、及びこの探索までの総合的分母項、が得られる。
【0033】
図4は、従来のグループ化によるパルスの位置の探索のアルゴリズムを示すフロー図である。
図4は
図3を具体的に示したものである。
【0034】
図4において、d[n]は、ターゲットの時間逆順合成ベクトル(極性の予備選択済み)である。c[n][m]は、パルスの合成ベクトル同士の相関行列(極性の予備選択済み)であり、n≠mであるとともに、n、mの値は2倍されている。x、yは、パルスの候補位置である。xx、yyは、最終的に探索されたパルスの位置である。track0、track1は、トラック番号(
図2では0、1、2、3のいずれか)である。ps_tは、探索を行う前までのコスト関数Cの分子項の元である。alp_tは、探索を行う前までのコスト関数Cの分母項の総合値である。Lは、サブフレーム長である。stepは、各トラックのパルスの候補位置の間隔(
図4では「4」)である。
【0035】
図4において、まず、前述の必要なパラメータが入力されることでフローがスタートする。そして、パルスの候補位置xを探索するために、コスト関数Cの分子項sqkを「−1.0」とし、分母項alpkを「1.0」とする(ステップST11)。
【0036】
次に、パルスの候補位置xがサブフレーム長Lよりも小さいか否かを判定する(ステップST12)。
【0037】
パルスの候補位置xがサブフレーム長Lよりも小さい場合(ステップST12:yes)には、ps0=ps_t+d[x]及びalp0=alp_t+c[x][x]の計算を行う(ステップST13)。
【0038】
次に、パルスの候補位置yの探索を開始し(ステップST14)、パルスの候補位置yがサブフレーム長Lよりも小さいか否かを判定する(ステップST15)。
【0039】
パルスの候補位置yがサブフレーム長L以上の場合(ステップST15:no)には、次の候補位置を選択し(x=x+step)(ステップST16)、ステップST12に処理を戻す。
【0040】
一方、パルスの候補位置yがサブフレーム長Lよりも小さい場合(ステップST15:yes)には、ps1=ps0+d[y]、alp1=alp0+c[y][y]+c[x][y]及びsq=ps1*ps1の計算を行う(ステップST17)。
【0041】
次に、(alpk*sq)の値が(sqk*alp1)の値よりも大きいか否かを判定する(ステップST18)。
【0042】
(alpk*sq)の値が(sqk*alp1)の値以下の場合(ステップST18:no)には、次の候補位置を選択し(y=y+step)(ステップST19)、ステップST15に処理を戻す。
【0043】
一方、(alpk*sq)の値が(sqk*alp1)の値よりも大きい場合(ステップST18:yes)には、コスト関数Cの分母項及び分子項を確定して、最終的な探索したパルスの位置xx、yyを確定し(ステップST20)、ステップST19に処理を戻す。
【0044】
また、ステップST12において、パルスの候補位置xがサブフレーム長L以上の場合(ステップST12:no)には、ps_t=ps_t+d[xx]+d[yy]の計算を行うとともに、探索を行う前のコスト関数Cの分母項をコスト関数Cの最終的な分母項とする(ステップST21)。
【0045】
次に、最終的なパルスの位置xx、yy及びその際のコスト関数Cの分母項の総合値alp_t及びコスト関数Cの分子項ps_tの値を出力する(ステップST22)。
【0046】
図4において、(4)式のコスト関数Cの分子項がsqであり、分母項がalplである。コスト関数Cは、分子項を分母項で除算することによって得られるが、除算は計算量が多くなるので、コスト関数Cの大小の判定においてはたすき掛けの掛け算を採用する。
【0047】
しかしながら、上記のグループ化を用いても、ビット数が更に増えると膨大な計算量になってくる。そこで、ITU−T標準G.718では、パルスの探索において、パルスの位置の予備選択を取り入れている(非特許文献1参照)。パルスの位置の予備選択とは、パルスの候補位置のうち、予めパルスが立ち易く、パルスが立つと予想される位置を選択し、次のループに入るパルスの候補位置の数を削減するものである。
【0048】
G.718で採用されているパルス位置の予備選択を用いた固定符号帳の探索処理の流れの概要を、
図5を用いて説明する。
図5は、従来の固定符号帳探索処理の流れを示す概念図である。なお、上記に示したように、2パルス探索の結果をまとめる方法については様々なものがあり、G.718では4トラック構成について2本ずつ探索しながら本数を増やすというアルゴリズムを用いている。ここではその説明は省略する。
【0049】
この固定符号帳の探索処理は、
図5に示すように、
図2と同様、2パルス探索を必要な回数だけ行うが、それぞれの2パルス探索において予備選択を行う。このとき、それぞれの2パルス探索の予備選択数には、昇順の大きさの関係が設定される。
【0050】
図6は、G.718で採用されているパルスの位置の予備選択を行う場合のパルスの位置の探索のアルゴリズムを模式的に示す図である。
図6は、
図5に示す2パルス探索の一つに対応する。
【0051】
図3と同様、探索を始める前に、前処理として、入力されるターゲット等を用いて、探索に必要なパラメータを求めておく。ここで、ターゲットはベクトルにより表すことができ、前述の、固定符号帳探索のターゲットベクトルvに対応する。パラメータとしては、ターゲットの時間逆順合成ベクトル(極性の予備選択済み)v
tH、パルスの合成ベクトル同士の相関行列(極性の予備選択済み)H
tH、トラック番号、及び各トラックのパルス候補位置の間隔、等が用意される。
【0052】
これらのパラメータを用いて、トラック0の探索ループの中でトラック0の予備選択を行うことにより、トラック0の探索ループの中でトラック1の探索ループに入る数を制限する。
図6の場合も、
図3の場合と同様に、トラック0の探索ループとトラック1の探索ループとで多重ループになっている。この多重ループによる探索を行うことにより、各トラックの探索された位置、この探索までの総合的分子項の基になる相関値、及びこの探索までの総合的分母項、が得られる。
【0053】
図7は、G.718で採用されているパルスの位置の予備選択を行う場合のパルスの位置の探索のアルゴリズムを示すフロー図である。
図7は、
図6を具体的に示したものである。なお、
図7において、
図4と同一処理である部分には同一符号を付して、その説明を省略する。
【0054】
図7において、pick[n]は、各パルス位置にその採用される順位が記載されている配列である。thresは、指定された候補位置xの候補数から得られる値である。また、pick[n]がthresの値より小さい値の場合のみの探索により指定された候補数だけ探索する。なお、その他の記号の意味は、
図4と同様であるので、その説明を省略する。
【0055】
図7において、パルスの候補位置xがサブフレーム長Lよりも小さい場合(ステップST12:yes)には、pick[x]がthresの値より小さいか否かを判定する(ステップST50)。
【0056】
pick[x]がthresの値より小さい場合(ステップST50:yes)には、ps0=ps_t+d[x]及びalp0=alp_t+c[x][x]の計算を行う(ステップST13)。
【0057】
一方、pick[x]がthresの値以上の場合(ステップST50:no)には、次の候補位置を選択し(ステップST16)、ステップST12に処理を戻す。
【0058】
図8は、上記従来のパルス探索方法により固定符号帳のパルス探索を行うことができる固定符号帳探索装置300の構成を示すブロック図である。
【0059】
前処理部301は、ターゲット信号を入力とし、パルス探索に必要なパラメータを求める。計算により生成されるパラメータとしては、各パルス位置の極性予備選択を行って結果を反映した「ターゲットの時間逆順合成ベクトル」(数4のv
tHに相当)、及び極性予備選択の結果を反映し対角項以外の値を2倍した「パルスの合成ベクトル同士の相関行列」(数4のH
tHに相当)、などがある。また、設定するパラメータとしては、探索するトラック番号、前記番号のトラックのパルス位置候補の間隔、サブフレーム長、及び予備選択数、などがある。前処理部301は、これらのパラメータを制御部302に送る。
【0060】
制御部302は、総ビット数を入力とし、後述するパルス列符号化部304からのタイミング信号に応じて、パルス探索に必要なパラメータを多重ループ探索部303に送り、多重ループ探索部303でパルスの探索を行うように制御する。多重ループ探索部303に送るパラメータとしては、前処理部301から送られてきたパラメータに加えて、各パルス位置にその採用される順位が記載されている配列、探索を行う前までの分子項の総合値及び分母項の総合値、などがある。なお、制御部302は、前記探索を行う前までの分子項の総合値及び分母項の総合値を、最初に多重ループ探索部303を駆動するときには初期化し、次回以降の段階の2パルス探索を行う際には、パルス列符号化部304から送られてきたものを多重ループ探索部303に送る。
【0061】
多重ループ探索部303は、パルスの位置を多重ループを用いて探索する。この際、多重ループ探索部303は、一番外側のループにおいて、前記予備選択数と前記各パルス位置にその採用される順位が記載されている配列とを用いて予備選択を行い、探索されたパルス位置と、そのパルス位置において計算された分子項の総合値及び分母項の総合値とをパルス列符号化部304に出力する。
【0062】
パルス列符号化部304は、多重ループ探索部303で探索されたパルス位置と、分子項の総合値及び分母項の総合値とを用いてパルスの符号化を行う。この固定符号帳としてのパルスの符号化は、複数回動作する多重ループ探索部303の結果を用いて行われるものである。そしてパルス列符号化部304は、分子項の総合値及び分母項の総合値を制御部302に送るとともに、次の多重ループ探索部303の動作を促すためにタイミング信号を制御部302に送る。そして、パルス列符号化部304は、最後に固定符号帳としての符号を出力する。
【0063】
ここで、パルス探索方法として
図2の探索処理を用いる場合には、多重ループ探索部303には、予備選択を行う構成は含まれない。パルス探索方法として
図5の探索処理を用いる場合には、多重ループ探索部303は、予備選択を行うように構成される。
【0064】
このように、従来、高ビットレートの固定符号帳探索に対応するために、代数的符号帳においてチャネル(トラック)のグループ化を行うことにより、探索を少数パルス単位で行うこととし、個別の少数パルスの探索をクローズドで行う方法、更にその時の外側のループで位置の予備選択を行って更に計算量を下げる方法が発明され、計算量を抑えながら高品質の音声または音楽を符号化できるようになった。
【発明を実施するための形態】
【0072】
本発明は、多数のパルスの探索を、複数の少数パルスの探索を組み合わせて符号化を行う量子化に関するものである。少数パルスの探索は、予備選択を行う(すなわち探索対象を最初に限定する)チャネル(トラックまたはパルスとも呼ぶ)のループを用いるものと、予備選択を行わない(すなわち全候補を探索対象とする)チャネルのループを用いるものとがある。本発明は、これらのループを多重ループ化せず、それぞれのループを順次行う逐次最適化探索を行うことを特徴とする。この、少数パルスの探索に用いる逐次最適化探索には、予備選択が行われるループを複数回用いるのが好適である。特に、ループを実行する順序は、少なくとも最初のループ及び最後のループとして、予備選択が行われるループを用いるのが、より好適である。本発明は、少数パルスの探索を、このようなパルス位置探索方法で行うパルス位置探索装置に関するものである。
【0073】
上記パルス位置探索装置の逐次最適化探索を、予備選択数が十分少ない場合について用いれば、従来の予備選択ありの同時最適化探索の性能から大きく落ちることがない。さらに、多重ループではないので計算量を大きく削減できる。
【0074】
したがって、符号化装置に対して、本発明のパルス位置探索装置によるパルスの逐次最適化探索を、予備選択数が十分少ない場合に用いることにより、符号化性能を落とさずに計算量を更に削減することができる。
【0075】
本実施の形態では、音声符号化技術であるCELPにおける固定符号帳の量子化に本発明を用いた場合について説明を行う。CELPについては上記で説明を行ったのでこれを省略する。
【0076】
背景技術で述べたように、G.718においてはクローズド多重ループによる2パルス探索を複数回用いることによって、計算量を抑えながら多数のパルスの探索を行っている。その中で、外側のトラック0のループにおいて予備選択により内側のループに入る回数を制限することにより、更に計算量を削減している。更に、最初は大きく絞り込み、次第に候補数を増やすことで性能がそれほど落ちないようにしている。これは、後半を精度よく探索すれば、前半の探索は探索候補を予備選択により大きく絞っても性能がそれほど落ちないという傾向を利用している。
【0077】
そこで、本発明の発明者は、十分に予備選択数が少ない場合には、予備選択が行われるループを複数回用いる逐次最適化探索を用いれば同時最適化探索を用いるのと同様の性能が得られ、かつ大きく計算量が削減できると考えた。
【0078】
また、逐次最適化探索においては、同時最適化探索における探索結果と異なるパルス位置が探索される場合(「位置の誤り」と呼ぶ)がある。このことは、そのまま性能の劣化に繋がる可能性がある。このため、本実施の形態においては、予備選択が行われるループによる探索を最初に行うことで確率的に最初のループで位置を誤る確率を減らし、次に別のトラックの探索を行なった後で再度、予備選択が行われるループによる探索を行う。これにより、最初のループによる探索の結果が必ずしも最適でなかったとしても、最終的に正しい位置が探索される確率を向上させている。
【0079】
また、最初のループにおいては、前述のコスト関数の分母項として新たに追加するパルスの合成ベクトルのパワ(「同じパルス位置同士の相関値」と同値)と、それまで探索されているパルスの合成ベクトル同士の相関値との2つを、探索を行う前までの分母項の総合値に加算する必要があるが、この相関値の計算を省略してパワだけにすることにより、前処理に必要な計算量を省略している。
【0080】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。ここでは、一例として、CELP符号化装置における、代数的符号帳で構成された固定符号帳でのパルスの位置の探索を、パルスを2本ずつグループ化して行うパルス位置探索装置について説明する。このパルス位置探索装置はCELP符号化装置に含まれる固定符号帳探索装置に適用され、このパルス位置探索装置により探索されたパルスは固定符号帳探索装置においてパルス列にまとめられて符号化される。なお、CELP符号化装置は、例えば、音声、音楽、あるいはこれらが混在する信号等を対象とする。また、パルス位置探索装置は、CELP符号化装置に限らず、パルス位置探索を行う必要がある符号化装置には用いることができる。
【0081】
(実施の形態)
本実施の形態の固定符号帳の探索処理の流れについて、
図9を用いて説明する。
図9は、本発明の実施の形態における固定符号帳探索処理の流れを示す概念図である。
【0082】
図9に示すように、本実施の形態の固定符号帳の探索処理は、予備選択数が小さいパルスの探索から、予備選択数が大きい方に向かって、2パルスずつ段階的に探索が行われ、求めるべきパルスの本数が探索されるまで必要な回数だけ実行される(予備選択数は同じであってもよい)。それぞれの段階の探索において求められた結果(パルス)は、パルス列にまとめられる(図示省略)。探索されたパルスをパルス列にまとめる方法については説明を省略する。また、本実施の形態においては、各段階において、代数的符号帳のトラック0とトラック1とにおいてパルス探索を行うものとする。
【0083】
図5における探索処理と
図9における探索処理との違いは、最初の段階で2パルス探索を行う点は同様であるが、次の段階以降は、本発明によるパルス位置探索方法による逐次最適化探索を行う点である。ここで「2パルス探索」とは、背景技術において説明した、
図7における、予備選択を行う同時最適化探索(クローズドループ探索)のことである。また、この例では、最後の段階で、再度2パルス探索を行うこととしている。
【0084】
本実施の形態において、予備選択数が最も少ないN0である最初の探索の段階で2パルス探索(クローズドループ探索)を採用したのは、現実的には、N0があまりに小さいと、本発明の逐次最適化探索よりも、クローズドループ探索の方が、この段階における計算量が小さくなる可能性があり得るためである。また、予備選択数が最も多いNmである最後の探索の段階でも2パルス探索を採用したのは、本発明の性能が十分に発揮されるのが、前述したように十分に予備選択数が少ない場合であるので、予備選択数がもっとも多い最後の段階では、本発明の性能が低下する可能性を考慮したものである。なお、本実施の形態では、このように最初の段階と最後の段階とを2パルス探索としたが、必ずしもこの構成としなくてもよい。
【0085】
図9の例においては、2段目等のパルスの探索は、本発明によるパルス位置探索方法による逐次最適化探索を行う。すなわち、この段階においては十分に予備選択数が少ないものとし、予備選択を行うトラック0の探索を最初に行い、次に、トラック0で探索されたパルスの位置を固定してトラック1の探索を予備選択せずに行い、最後に、トラック1で探索された位置を固定して、予備選択を行うトラック0の探索を再度行う。
【0086】
図10は、本実施の形態におけるパルスの位置の探索のアルゴリズムを模式的に示す図である。
図10は、
図9に示す2段目等のパルス探索に対応する。
【0087】
図3及び
図6と同様、探索を始める前に、前処理として、入力されるターゲット等を用いて、探索に必要なパラメータを求めておく。ここで、ターゲットはベクトルにより表すことができ、前述の、固定符号帳探索のターゲットベクトルvに対応する。パラメータとしては、ターゲットの時間逆順合成ベクトル(極性の予備選択済み)v
tH、パルスの合成ベクトル同士の相関行列(極性の予備選択済み)H
tH、トラック番号、及び各トラックのパルス候補位置の間隔、等が用意される。
【0088】
これらのパラメータを用いて、予備選択を行うトラック0の探索ループR1を最初に実行し、次に、トラック0で探索されたパルスの位置を固定してトラック1の探索ループR2を予備選択せずに実行し、最後に、トラック1で探索された位置を固定して、予備選択を行うトラック0の探索ループR3を再度実行する。この処理により、各トラックの探索された位置、この探索までの総合的分子項の基になる相関値、及びこの探索までの総合的分母項、が得られる。
【0089】
すなわち本実施の形態では、
図10に示すように、
図3及び
図6に示す従来のアルゴリムズと異なり、多重ループを採用せずに、トラック0の探索ループとトラック1の探索ループとを上記の順序で行うアルゴリズムを用いるので、パルスの位置探索に伴う計算量を削減することができる。
【0090】
図11は、本発明の実施の形態に係るパルス位置探索装置400の構成を示すブロック図である。
図11は、
図10に示す逐次最適化探索に対応する。
【0091】
パルス位置探索装置400は、予備選択を行うトラック0の探索ループR1を実行する第1探索部401、トラック1の探索ループR2を予備選択せずに実行する第2探索部402、及び予備選択を行うトラック0の探索ループR3を実行する第3探索部403を有する。探索により求めるべきパルスの本数は2本である。
【0092】
第1探索部401は、入力信号として、極性の予備選択済みであるターゲットの時間逆順合成ベクトル、パルスの合成ベクトル同士の相関行列、トラック番号、及び各トラックのパルス位置候補間隔等のパラメータを入力し、これらを用いてパルスの位置の予備選択をしながら1つのパルスの位置を探索する。第1探索部401は、探索結果を第2探索部402に出力する。
【0093】
第2探索部402は、第1探索部401から探索結果として入力したパルスの位置を固定し、パルスの位置の予備選択をせずに、次のトラック1におけるパルスの位置を探索する。第2探索部402は、探索結果を第3探索部403に出力する。
【0094】
第3探索部403は、第2探索部402から探索結果として入力したパルスの位置を固定し、トラック0におけるパルスの位置について、パルスの位置の予備選択をしながら再度パルスを探索する。第3探索部403は、再度の探索により求めた、各トラックの探索された位置、この探索までのコスト関数Cの総合的分子項の元になる相関値、及びこの探索までのコスト関数Cの総合的分母項を出力信号として出力する。
【0095】
図12は、本実施の形態におけるパルスの位置の探索方法を示すフロー図である。
図12は
図11のパルス位置探索装置400の動作を具体的に示したものである。
【0096】
図12において、d[n]は、ターゲットの時間逆順合成ベクトル(極性の予備選択済み)である。c[n][m]は、パルスの合成ベクトル同士の相関行列(極性の予備選択済み)であり、n≠mであるとともに、n、mの値は2倍されている。x、yは、パルスの候補位置である。xx、yyは、最終的に探索された位置である。track0、track1は、トラック番号(本実施の形態では0、1、2、3のいずれか)である。ps_tは、探索を行う前までのコスト関数Cの分子項の元である。alp_tは、探索を行う前までのコスト関数Cの分母項の総合値である。Lは、サブフレーム長である。stepは、各トラックのパルスの候補位置の間隔(本実施の形態では「4」)である。pick[n]は、各パルスの候補位置にその採用される順位が記載されている配列である。thresは、指定された候補位置xの候補数から得られる値である。また、pick[n]がthresの値より小さい値の場合のみの探索により指定された候補数だけ探索する。
【0097】
図12より、まず、第1探索部401は、パルスの候補位置xを探索するために、コスト関数Cの分子項sqkを「−1.0」とし、分母項alpkを「1.0」とする(ステップST201)。
【0098】
次に、第1探索部401は、パルスの候補位置xがサブフレーム長Lよりも小さいか否かを判定する(ステップST202)。
【0099】
パルスの候補位置xがサブフレーム長Lよりも小さい場合(ステップST202:yes)には、第1探索部401は、pick[x]がthresの値より小さいか否かを判定する(ステップST203)。
【0100】
pick[x]がthresの値以上の場合(ステップST203:no)には、第1探索部401は、次の候補位置xの探索に移行し(x=x+step)(ステップST204)、ステップST202に処理を戻す。
【0101】
一方、pick[x]がthresの値より小さい場合(ステップST203:yes)には、第1探索部401は、ps0=ps_t+d[x]、alp0=alp_t+c[x][x]及びsq=ps0*ps0の計算を行う(ステップST205)。ここで、コスト関数Cの分母項として新たに追加するパルスの合成ベクトルのパワc〔x〕〔x〕(同じパルス位置同士の相関値と同値)と、それまでに探索されているパルスの合成ベクトル同士の相関値c〔x〕〔*〕とを、探索を行う前までのコスト関数Cの分母項の総合値に加算する必要があるが、この相関値c〔x〕〔*〕の計算を省略して、パワc〔x〕〔x〕だけにすることにより前処理に必要な計算量を省略している。
【0102】
また、第1探索部401は、(alpk*sq)の値が(sqk*alp0)の値より大きいか否かを判定する(ステップST206)。
【0103】
(alpk*sq)の値が(sqk*alp0)の値以下の場合(ステップST206:no)には、第1探索部401は、次の候補位置xの探索に移行し(x=x+step)(ステップST204)、ステップST202に処理を戻す。
【0104】
一方、(alpk*sq)の値が(sqk*alp0)の値より大きい場合(ステップST206:yes)には、第1探索部401は、コスト関数Cの分母項及び分子項を確定して、最終的なパルスの位置xxを確定する(ステップST207)。
【0105】
また、ステップST202において、パルスの候補位置xがサブフレーム長L以上の場合(ステップST202:no)には、第2探索部402は、コスト関数Cの分子項sqkを「−1.0」とし、分母項alpkを「1.0」とするとともに、ps0=ps_t+d[xx]及びalp0=alp_t+c[xx][xx]の計算を行う(ステップST208)。
【0106】
次に、第2探索部402は、パルスの候補位置yがサブフレーム長Lよりも小さいか否かを判定する(ステップST209)。
【0107】
パルスの候補位置yがサブフレーム長Lよりも小さい場合(ステップST209:yes)には、第2探索部402は、ps1=ps0+d[y]、alp1=alp0+c[y][y]+c[xx][y]及びsq=ps1*ps1の計算を行う(ステップST210)。
【0108】
次に、第2探索部402は、(alpk*sq)の値が(sqk*alp1)の値より大きいか否かを判定する(ステップST211)。
【0109】
(alpk*sq)の値が(sqk*alp1)の値以下の場合(ステップST211:no)には、第2探索部402は、次の候補位置yの探索に移行し(y=y+step)(ステップST212)、ステップST209に処理を戻す。
【0110】
一方、(alpk*sq)の値が(sqk*alp1)の値より大きい場合(ステップST211:yes)には、第2探索部402は、コスト関数Cの分母項及び分子項を確定して、最終的なパルスの位置yyを確定する(ステップST213)。
【0111】
また、ステップST209において、パルスの候補位置yがサブフレーム長L以上の場合(ステップST209:no)には、第3探索部403は、ps1=ps_t+d[yy]及びalp1=alp_t+c[yy][yy]の計算を行う(ステップST214)。
【0112】
次に、第3探索部403は、パルスの候補位置xがサブフレーム長Lよりも小さいか否かを判定する(ステップST215)。
【0113】
パルスの候補位置xがサブフレーム長Lよりも小さい場合(ステップST215:yes)には、第3探索部403は、pick[x]がthresの値より小さいか否かを判定する(ステップST216)。
【0114】
pick[x]がthresの値以上の場合(ステップST216:no)には、第3探索部403は、次の候補位置xの探索に移行し(x=x+step)(ステップST217)、ステップST215に処理を戻す。
【0115】
一方、pick[x]がthresの値より小さい場合(ステップST216:yes)には、第3探索部403は、ps0=ps1+d[x]、alp0=alp1+c[x][x]+c[x][yy]及びsq=ps0*ps0の計算を行う(ステップST218)。
【0116】
次に、第3探索部403は、(alpk*sq)の値が(sqk*alp0)の値より大きいか否かを判定する(ステップST219)。
【0117】
(alpk*sq)の値が(sqk*alp0)の値以下の場合(ステップST219:no)には、第3探索部403は、次の候補位置xの探索に移行し(x=x+step)(ステップST217)、ステップST215に処理を戻す。
【0118】
一方、(alpk*sq)の値が(sqk*alp0)の値より大きい場合(ステップST219:yes)には、第3探索部403は、コスト関数Cの分母項及び分子項を確定して、最終的なパルスの位置xxを確定する(ステップST220)。
【0119】
また、ステップST215において、パルスの候補位置xがサブフレーム長L以上の場合(ステップST215:no)には、第3探索部403は、ps_t=ps_t+d[xx]+d[yy]及びalp_t=alpkの計算を行う(ステップST221)。
【0120】
次に、第3探索部403は、最終的なパルスの位置xx、yy及びその際のコスト関数Cの分母項の総合値alp_t及びコスト関数Cの分子項ps_tの値を出力する(ステップST222)。
【0121】
図10において、トラック0の探索ループR1は、
図12のステップST201〜ステップST208における処理に相当し、トラック1の探索ループR2は、
図12のステップST208〜ステップST214に相当し、トラック0の探索ループR3は、
図12のステップST214〜ステップST221に相当する。
【0122】
図13は、本実施の形態におけるパルス探索方法により固定符号帳のパルス探索を行うことができる固定符号帳探索装置500の構成を示すブロック図である。
【0123】
前処理部501は、ターゲット信号を入力とし、パルス探索に必要なパラメータを求める。計算により生成されるパラメータとしては、各パルス位置の極性予備選択を行って結果を反映した「ターゲットの時間逆順合成ベクトル」(数4のv
tHに相当)、及び極性予備選択の結果を反映し対角項以外の値を2倍した「パルスの合成ベクトル同士の相関行列」(数4のH
tHに相当)、などがある。また、設定するパラメータとしては、探索するトラック番号、前記番号のトラックのパルス位置候補の間隔、サブフレーム長、及び予備選択数、などがある。前処理部501は、これらのパラメータを制御部502に送る。
【0124】
制御部502は、総ビット数を入力とし、後述するパルス列符号化部504からのタイミング信号に応じて、パルス探索に必要なパラメータを、多重ループ探索部503あるいはパルス位置探索装置600に送り、多重ループ探索部503あるいはパルス位置探索装置600でパルスの探索を行うように制御する。本実施の形態では、最初の段階と最後の段階とでは多重ループ探索部503を駆動するように制御し、それ以外の段階ではパルス位置探索装置600を駆動するように制御する。
【0125】
多重ループ探索部503あるいはパルス位置探索装置600に送るパラメータとしては、前処理部501から送られてきたパラメータに加えて、各パルス位置にその採用される順位が記載されている配列、探索を行う前までの分子項の総合値、及び分母項の総合値、などがある。なお、制御部502は、前記探索を行う前までの分子項の総合値及び分母項の総合値を、最初の段階で多重ループ探索部503を最初に駆動するときには初期化し、次回以降の段階において2パルス探索(クローズドループ探索)を行う場合(
図9の例では最後の段階)には、パルス列符号化部504から送られてきたものを多重ループ探索部503に送る。
【0126】
多重ループ探索部503は、パルスの位置を、2パルス探索すなわち多重ループによるクローズドループ探索を用いて探索する。この際、多重ループ探索部503は、一番外側のループにおいて、前記予備選択数と前記各パルス位置にその採用される順位が記載されている配列とを用いて予備選択を行い、探索されたパルス位置と、そのパルス位置において計算された分子項の総合値及び分母項の総合値とをパルス列符号化部504に出力する。
【0127】
パルス位置探索装置600は、
図11に示すパルス位置探索装置400に対応する。したがって、第1探索部401は第1探索部601に、第2探索部402は第2探索部602に、第3探索部403は第3探索部603に、それぞれ対応し、同一の構成を有する。このため、パルス位置探索装置600の詳細な説明は省略する。
【0128】
パルス列符号化部504は、多重ループ探索部503あるいはパルス位置探索装置600で探索されたパルス位置と、分子項の総合値及び分母項の総合値とを用いてパルスの符号化を行う。この固定符号帳としてのパルスの符号化は、多重ループ探索部503の結果とパルス位置探索装置600の結果とを用いて行われる。そしてパルス列符号化部504は、分子項の総合値及び分母項の総合値を制御部502に送るとともに、次のパルス位置探索装置600の動作あるいは多重ループ探索部503の動作を促すために、制御部502にタイミング信号を送る。そして、パルス列符号化部504は、最後に固定符号帳としての符号を出力する。
【0129】
このように、本実施の形態によるパルス位置探索装置によれば、少数パルスの探索において、多重ループを採用せずに、予備選択を行うトラック0の探索ループ、予備選択を行わないトラック1の探索ループ、予備選択を行うトラック0の探索ループ、の順でループを順次実行する逐次最適化探索を行うことにより、パルスの位置探索に伴う計算量を従来以上に削減することができる。また、このパルス位置探索装置を固定符号帳探索装置に適用すれば、固定符号帳において探索するべきパルス数が多くなった場合でも、符号化性能を落とさずに、パルスの位置探索に伴う計算量を削減することができる。そして、このような固定符号帳探索装置を符号化装置に適用すれば、復号装置において符号を復号する際に、高品質な復号信号を生成することができる。
【0130】
また、本実施の形態によれば、パルス位置探索装置において最初にパルスの位置の予備選択ありのトラック0の探索を行うことにより、従来の多重ループで探索した場合の結果と異なる結果が得られる可能性を小さくすることができる。
【0131】
また、本実施の形態によれば、パルス位置探索装置においてパルスの位置の予備選択ありのトラック0の探索をトラック1の探索の後に再度行うことにより、従来の多重ループで探索した場合の結果と異なる結果が得られる可能性を小さくすることができる。
【0132】
また、本実施の形態によれば、パルス位置探索装置において最初に用いるパルスの位置の予備選択ありのトラック0の探索において用いるコスト関数の分母項を、分母項の総合値にパルスの合成ベクトルのパワのみを加算して算出することにより、相関値の算出に必要な計算量を節約することができ、計算量をさらに削減することができる。
【0133】
なお、本実施の形態において、2本のパルス毎に探索を行ったが、これは従来例であるG.718と比較するためであり、3本のパルスまたは4本のパルス等の任意の本数のパルス毎に探索を行うことができる。
【0134】
また、本実施の形態の固定符号帳探索装置は、最初の段階と最後の段階とを従来の同時最適化探索(クローズドループ探索)としたが、必ずしもこの構成としなくてもよい。
【0135】
また、本実施の形態の固定符号帳探索装置は、最後の段階のパルス群の探索においては、前記総ビット数にかかわらず、同時最適化探索(クローズドループ探索)を用いてパルス位置探索を行うように、制御部で判断するようにしてもよい。
【0136】
また、本実施の形態において、本発明の逐次最適化探索をトラック0の探索(予備選択あり)、トラック1の探索(予備選択なし)及びトラック0の探索(予備選択あり)の3ループ構成としたが、本発明はこれに限らず、計算量は大きく削減することができるので、更にループ数を増やしてもよい。
【0137】
また、本実施の形態において、固定符号帳として代数的符号帳を用いたが、本発明はこれに限らず、代数的符号帳以外の他の符号帳に用いることができる。
【0138】
また、本実施の形態において、G.718を例に挙げて予備選択を用いた探索を行ったが、本発明はこれに限らず、少数パルスの探索を複数用いる任意の符号化に用いることができる。本発明は、パルスの位置探索に関する発明であり、G.718規格の他の構成に拠らないからである。
【0139】
また、本実施の形態において、符号化方式としてCELPを用いたが、本発明はこれに限らず、ベクトル量子化に利用出来るので、CELP以外の符号化方式にも適用することができる。例えば、MDCT(Modified Discrete Cosine Transform)またはQMF(Quadrature Mirror Filter)を利用したスペクトルの量子化にも利用でき、帯域拡張技術における低周波数領域のスペクトルの中から似たスペクトル形状を探索するアルゴリズムにも応用できる。
【0140】
また、本実施の形態において、パルス位置探索装置は、音声、音楽、あるいはこれらが混在する信号を対象とした符号化装置に応用した例を示したが、本発明はこれに限らず、音声認識、画像認識または画像符号化等に用いられる量子化にも応用することができる。本発明は、パルスの位置探索に関する発明であり、アルゴリズム全体の目的に依存しないからである。
【0141】
また、上記実施の形態では、本発明をハードウェアで構成する場合を例にとって説明したが、本発明はハードウェアとの連携においてソフトウェアでも実現することも可能である。
【0142】
また、上記実施の形態の説明に用いた各機能ブロックは、典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部または全てを含むように1チップ化されてもよい。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
【0143】
また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル/プロセッサを利用してもよい。
【0144】
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
【0145】
2011年6月15日出願の特願2011−133750の日本出願に含まれる明細書、図面及び要約書の開示内容は、すべて本願に援用される。