本発明は、音声符号化装置および音声符号化方法に関し、特に固定符号帳探索を行う音声符号化装置および音声符号化方法に関する。
移動体通信においては、伝送帯域の有効利用のために音声や画像のディジタル情報の圧縮符号化が必須である。その中でも携帯電話で広く利用される音声コーデック(符号化/復号)技術に対する期待は大きく、圧縮率の高い従来の高効率符号化に対してさらなる音質の要求が強まっている。
近年、多層構造を有するスケーラブルコーデックの標準化がITU−T(International Telecommunication Union Telecommunication Standardization Sector)、MPEG(Moving Picture Expert Group)等で検討されており、より効率的で高品質な音声コーデックが求められている。
音声の発声機構をモデル化してベクトル量子化を巧みに応用した基本方式「CELP」(Code Excited Linear Prediction)によって大きく性能を向上させた音声符号化技術は、非特許文献1に記載の代数的符号帳(Algebraic Codebook)のような少数パルスによる固定音源の技術により、一段とその性能を向上させた。ITU−T標準G.729や、ETSI(European Telecommunications Standards Institute)標準AMR(Adaptive Multi-Rate)は、代数的符号帳を用いたCELPの代表的なコーデックであり、世界で広く使用されている。
代数的符号帳を用いて音声符号化を行う場合、代数的符号帳を構成する1つ1つのパルスの相互の影響を考慮し、全てのパルスの組み合わせを探索する(以下、全探索と称す)ことが望ましい。しかし、パルス数が多くなると探索に必要な計算量が指数関数的に増加してしまう。これに対し、非特許文献2には、全探索の場合の性能をほぼ維持しながら計算量を大幅に低減できる代数的符号帳の探索方法として、分割探索、枝刈探索、ビタビ探索などを開示している。
その中でも分割探索は最も簡単でかつ計算量削減の効果が大きい方法である。分割探索とは、1つの閉ループ探索を複数のより小さい閉ループに分割して、複数の閉ループ探索の開ループ探索にする方法である。分割探索においては、分割数に応じて大きく計算量を下げることが出来る。分割探索は国際標準方式でも使用されており、第3世代携帯電話の標準コーデックであるETSI標準AMRの代数的符号帳の探索においては、4本のパルスを2つのサブセットに分けて分割探索を行う。
例えば、8つの位置候補を持つパルスが4本ある場合を考えると、4本のパルスをすべて1つの閉ループで探索するには、評価しなければならないパルスの組み合わせが8の4乗で4096通りとなる。これに対し、ETSI標準AMRは、4本のパルスを2本と2本の2つのサブセットに分割して、それぞれを閉ループで探索する。従って、ETSI標準AMRにおいて評価しなければならないパルスの組み合わせは8の2乗の2倍で128通りとなり、全探索の場合と比べて32分の1の計算量となる。さらに、ETSI標準AMRにおける各評価は、4パルスよりも少ない2パルスに対して行われるため、計算量はさらに低減される。
Salami, Laflamme, Adoul,"8kbit/s ACELP Coding of Speech with 10ms Speech-Frame:aCandidate for CCITT Standardization",IEEE Proc. ICASSP94,pp.II-97n
野村ほか、「CELPにおけるパルス励振源の効果的な探索法」、日本音響学会春季講演論文集2−P−5、平成8年3月、pp.311-312
しかしながら、代数的符号帳の分割探索による音声符号化の性能は、概して全探索の場合に比べ低い。なぜなら最初に決まる2本のパルスの位置が最適であるとは限らないからである。
従って、分割探索では先に探索するサブセットを構成するパルスとして何を選ぶかによって、音声符号化の性能を改善する余地がある。例えば、4本のパルスの中でランダムに2つを選んで探索することを複数回行い、そのうち符号化性能が一番良い結果を得る方法が考えられる。例えば、サブセットのペアを4種類用意し、4種類のペアに対してそれぞれ探索を行うことによって、音声符号化の性能を全探索による符号化性能に近づけることが出来る。この場合、128(8の2乗の2倍)の4倍で512通りの計算が必要になるものの、それでも全探索の場合の計算量の1/8である。ただし、上記例ではサブセットを任意に構成しており、また4種類のペアのいずれにも特に先に探索する理由はない。従って、複数のケースについて探索を行う場合に得られる符号化性能はバラツキがあり、総合的に符号化性能は十分ではない。
本発明の目的は、代数的符号帳に対して分割探索を行いつつ、符号化性能を向上することができる音声符号化装置および音声符号化方法を提供することである。
本発明の音声符号化装置は、固定符号帳を構成する複数のパルスそれぞれとターゲット信号とを用いてパルス候補位置それぞれにおける相関値を算出し、パルス毎に、前記相関値の最大値を用いてパルスに関する代表値を算出する算出手段と、パルス毎に得られた前記代表値をソーティングし、ソーティングした前記代表値に対応するそれぞれのパルスを、予め設定された複数のサブセットにグルーピングし、前記複数のサブセットから、最初に探索する第1のサブセットを決定するソーティング手段と、前記第1のサブセットを用いて前記固定符号帳を探索し、符号化歪みが最小となる前記複数のパルスの位置および極性を示す符号を得る探索手段と、を具備する構成をとる。
本発明の音声符号化方法は、固定符号帳を構成する複数のパルスそれぞれとターゲット信号とを用いてパルス候補位置それぞれにおける相関値を算出し、パルス毎に、前記相関値の最大値を用いてパルスに関する代表値を算出するステップと、パルス毎に得られた前記代表値をソーティングし、ソーティングした前記代表値に対応するそれぞれのパルスを、予め設定された複数のサブセットにグルーピングし、前記複数のサブセットから、最初に探索する第1のサブセットを決定するステップと、前記第1のサブセットを用いて前記固定符号帳を探索し、符号化歪みが最小となる前記複数のパルスの位置および極性を示す符号を生成するステップと、を有するようにした。
本発明によれば、音声符号化において固定符号帳の分割探索を行う際、たとえば最大相関値のような、パルスに関する代表値を用いて、先に探索するサブセットを決定するため、代数的符号帳に対して分割探索を行いつつ、符号化性能を向上することができる。
本発明の実施の形態1に係るCELP符号化装置の構成を示すブロック図
本発明の実施の形態1に係る歪み最小化部の内部構成を示すブロック図
本発明の実施の形態1に係る最大相関値算出部における各パルスの最大相関値の算出手順を示すフロー図
本発明の実施の形態1に係るソーティング部における、各パルスの最大相関値に対するソーティング処理の手順を示すフロー図
本発明の実施の形態1に係る探索部における固定符号帳の分割探索の手順を示すフロー図
本発明の実施の形態1に係る探索部における固定符号帳の分割探索の手順を示すフロー図
本発明の実施の形態2に係るソーティング部における、各パルスの最大相関値に対するソーティング処理の手順を示すフロー図
本発明の実施の形態3に係るソーティング部における、各パルスの最大相関値に対するソーティング処理の手順を示すフロー図
本発明の実施の形態3に係るソーティング部における、パルスの順番の並べ替え処理の手順を示すフロー図
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(実施の形態1)
図1は、本発明の実施の形態1に係るCELP符号化装置100の構成を示すブロック図である。ここでは、本発明に係る音声符号化装置としてCELP方式の符号化装置を例にとって説明する。
図1において、CELP符号化装置100は、声道情報と音源情報とからなる音声信号S11を、声道情報については、LPCパラメータ(線形予測係数)を求めることにより符号化し、音源情報については、予め記憶されている音声モデルのいずれを用いるかを特定するインデックスを求めることにより符号化する。すなわち、音源情報については、適応符号帳103および固定符号帳104でどのような音源ベクトル(コードベクトル)を生成するかを特定するインデックスを求めることにより符号化する。
具体的には、CELP符号化装置100の各部は以下の動作を行う。
LPC分析部101は、音声信号S11に対して線形予測分析を施し、スペクトル包絡情報であるLPCパラメータを求め、求めたLPCパラメータをLPC量子化部102および聴感重み付け部111に出力する。
LPC量子化部102は、LPC分析部101から出力されたLPCパラメータを量子化し、得られた量子化LPCパラメータをLPC合成フィルタ109に、量子化LPCパラメータのインデックスをCELP符号化装置100の外部へ出力する。
一方、適応符号帳103は、LPC合成フィルタ109で使用された過去の駆動音源を記憶しており、後述する歪み最小化部112から指示されたインデックスに対応する適応符号帳ラグに従って、記憶している駆動音源から1サブフレーム分の音源ベクトルを生成する。この音源ベクトルは、適応符号帳ベクトルとして乗算器106に出力される。
固定符号帳104は、所定形状の音源ベクトルを複数個予め記憶しており、歪み最小化部112から指示されたインデックスに対応する音源ベクトルを、固定符号帳ベクトルとして乗算器107に出力する。ここで、固定符号帳104は代数的音源であり、代数的符号帳を用いた場合について説明する。代数的音源とは、多くの標準コーデックに採用されている音源である。
なお、上記の適応符号帳103は、有声音のように周期性の強い成分を表現するために使われ、一方、固定符号帳104は、白色雑音のように周期性の弱い成分を表現するために使われる。
ゲイン符号帳105は、歪み最小化部112からの指示に従って、適応符号帳103から出力される適応符号帳ベクトル用のゲイン(適応符号帳ゲイン)、および固定符号帳104から出力される固定符号帳ベクトル用のゲイン(固定符号帳ゲイン)を生成し、それぞれ乗算器106、107に出力する。
乗算器106は、ゲイン符号帳105から出力された適応符号帳ゲインを、適応符号帳103から出力された適応符号帳ベクトルに乗じ、加算器108に出力する。
乗算器107は、ゲイン符号帳105から出力された固定符号帳ゲインを、固定符号帳104から出力された固定符号帳ベクトルに乗じ、加算器108に出力する。
加算器108は、乗算器106から出力された適応符号帳ベクトルと、乗算器107から出力された固定符号帳ベクトルとを加算し、加算後の音源ベクトルを駆動音源としてLPC合成フィルタ109に出力する。
LPC合成フィルタ109は、LPC量子化部102から出力された量子化LPCパラメータをフィルタ係数とし、適応符号帳103および固定符号帳104で生成される音源ベクトルを駆動音源としたフィルタ関数、すなわち、LPC合成フィルタを用いて合成信号を生成する。この合成信号は、加算器110に出力される。
加算器110は、LPC合成フィルタ109で生成された合成信号を音声信号S11から減算することによって誤差信号を算出し、この誤差信号を聴感重み付け部111に出力する。なお、この誤差信号が符号化歪みに相当する。
聴感重み付け部111は、加算器110から出力された符号化歪みに対して聴感的な重み付けを施し、歪み最小化部112に出力する。
歪み最小化部112は、聴感重み付け部111から出力された符号化歪みが最小となるような、適応符号帳103、固定符号帳104およびゲイン符号帳105の各インデックスをサブフレームごとに求め、これらのインデックスを符号化情報としてCELP符号化装置100の外部に出力する。より詳細には、上記の適応符号帳103および固定符号帳104に基づいて合成信号を生成し、この信号の符号化歪みを求める一連の処理は閉ループ制御(帰還制御)となっており、歪み最小化部112は、各符号帳に指示するインデックスを1サブフレーム内において様々に変化させることによって各符号帳を探索し、最終的に得られる、符号化歪みを最小とする各符号帳のインデックスを出力する。
なお、符号化歪みが最小となる際の駆動音源は、サブフレームごとに適応符号帳103へフィードバックされる。適応符号帳103は、このフィードバックにより、記憶されている駆動音源を更新する。
ここで、固定符号帳104の探索方法について説明する。まず、音源ベクトルの探索と符号の導出は以下の式(1)の符号化歪を最小化する音源ベクトルを探索することにより行われる。
E:符号化歪、x:符号化ターゲット、p:適応符号帳ベクトルのゲイン、H:聴感重み付け合成フィルタ、a:適応符号帳ベクトル、q:固定符号帳ベクトルのゲイン、s:固定符号帳ベクトル
一般的に、適応符号帳ベクトルと固定符号帳ベクトルとはオープンループで(別々のループで)探索されるので、固定符号帳104の符号の導出は以下の式(2)の符号化歪を最小化する固定符号帳ベクトルを探索することにより行われる。
E:符号化歪、x:符号化ターゲット(聴感重み付け音声信号)、p:適応符号帳ベクトルの最適ゲイン、H:聴感重み付け合成フィルタ、a:適応符号帳ベクトル、q:固定符号帳ベクトルのゲイン、s:固定符号帳ベクトル、y:固定符号帳探索のターゲットベクトル
ここで、ゲインp、qは音源の符号を探索した後で決定するので、ここでは最適ゲインで探索を進めることとする。すると、上式(2)は以下の式(3)と書ける。
そして、この歪の式を最小化することは、以下の式(4)の関数Cを最大化することと同値であることがわかる。
よって、代数的符号帳の音源のような少数パルスからなる音源の探索の場合は、yHとHHを予め計算しておけば、少ない計算量で上記関数Cを算出できる。ここで、ベクトルyHの要素は、パルス単独の相関値に相当する。すなわち、ターゲットyに対して時間逆順合成を施したyHの要素の1つはその位置に立つパルスの合成信号とターゲット信号との相関値と等しくなる。
図2は、本実施の形態に係る歪み最小化部112の内部構成を示すブロック図である。ここでは、歪み最小化部112の固定符号帳探索において代数的符号帳を構成する4本のパルスを2本と2本のサブセットに分割して探索する場合を例にとって説明する。また、各パルスが8つの位置候補を備えるとする。
図2において、歪み最小化部112は、適応符号帳探索部201、固定符号帳探索部202、およびゲイン符号帳探索部203を備える。固定符号帳探索部202は、最大相関値算出部221、ソーティング部222、前処理部223、および探索部224を備える。
適応符号帳探索部201は、聴感重み付け部111において聴感的な重み付けが施された符号化歪みを用いて、適応符号帳103の探索を行う。適応符号帳探索部201は、探索過程で得られる適応符号帳ベクトルの符号を適応符号帳103に出力し、探索結果として得られた適応符号帳ベクトルの符号を固定符号帳探索部202の最大相関値算出部221に出力するとともに、CELP符号化装置100の外部へ出力する。
固定符号帳探索部202は、聴感重み付け部111において聴感的な重み付けが施された符号化歪み、および適応符号帳探索部201から入力される適応符号帳ベクトルの符号を用いて固定符号帳の分割探索を行う。固定符号帳探索部202は、探索過程で得られる固定符号帳ベクトルの符号を固定符号帳104に出力し、探索結果として得られた固定符号帳ベクトルの符号をCELP符号化装置100の外部に出力するとともにゲイン符号帳探索部203に出力する。
ゲイン符号帳探索部203は、固定符号帳探索部202の探索部224から入力される固定符号帳ベクトルの符号、聴感重み付け部111において聴感的な重み付けが施された符号化歪み、および適応符号帳探索部201から入力される適応符号帳ベクトルの符号に基づき、ゲイン符号帳を探索する。そして、ゲイン符号帳探索部203は、探索過程で得られる適応符号帳ゲインおよび固定符号帳ゲインをゲイン符号帳105に出力し、探索結果として得られた適応符号帳ゲインおよび固定符号帳ゲインをCELP符号化装置100の外部に出力する。
最大相関値算出部221は、適応符号帳探索部201から入力される適応符号帳ベクトルの符号を用いて適応符号帳ベクトルを求め、式(2)に示すターゲットベクトルyを計算する。また、最大相関値算出部221は、聴感重み付け部111における合成フィルタの係数Hを用いて、各候補位置における各パルス単独の相関値yHを算出して前処理部223に出力する。そして、最大相関値算出部221は、各候補位置における各パルス単独の相関値yHを用いて、各パルスの最大相関値を求め、ソーティング部222に出力する。なお、最大相関値算出部221における最大相関値の算出の詳細については後述する。
ソーティング部222は、最大相関値算出部221から入力される各パルスの最大相関値を大きい方から順番に並べる(以下、ソーティング処理と称す)。また、ソーティング部222は、ソーティング結果に基づき、4本のパルスを2本ずつの2つのサブセットに分割し、分割結果を探索部224に出力する。なお、ソーティング部222におけるソーティング処理の詳細については後述する。
前処理部223は、聴感重み付け部111における合成フィルタの係数Hを用いてマトリクスHHを算出する。また、前処理部223は、最大相関値算出部221から入力されるベクトルyHの要素の極性(+−)から、パルスの極性polを決めて、探索部224に出力する。具体的には、前処理部223は、各位置に立つパルスの極性をyHのその位置の値の極性に合わせることとし、yHの値の極性を別の配列に格納しておく。前処理部223は、各位置の極性を別の配列に格納した後、yHの値に対し全て絶対値をとり正の値に変換しておく。また、前処理部223は、格納した各位置の極性に合わせて、HHの値に対しても極性を乗ずることによって変換しておく。求められたyHおよびHHは、探索部224に出力される。
探索部224は、ソーティング部222から入力される分割結果、聴感重み付け部111において聴感的な重み付けが施された符号化歪み、および前処理部223から入力されるyHおよびHHを用いて固定符号帳の分割探索を行う。探索部224は、探索過程で得られる固定符号帳ベクトルの符号を固定符号帳104に出力し、探索結果として得られた固定符号帳ベクトルの符号をCELP符号化装置100の外部に出力するとともに、ゲイン符号帳探索部203に出力する。なお、探索部224における固定符号帳の分割探索の詳細については後述する。
次いで、最大相関値算出部221において各パルスの最大相関値を算出する処理について詳細に説明する。
図3は、最大相関値算出部221における各パルスの最大相関値の算出手順を示すフロー図である。ここでは、最大相関値算出部221においてパルス0の相関値(yH)の値が最も大きくなる2つの候補位置を求め、これに基づきパルス0の最大相関値を算出する処理を例にとって説明する。
まず、最大相関値算出部221は、予め定められたパルス0の候補位置の配列ici0[8]、および探索に用いる相関値yHを正値に変換して得られる配列yH[32]を確保する(ST1010)。
次いで、最大相関値算出部221は、最大値max00、準最大値(2番目に大きい値)max01、およびカウンタiの初期化を行い(ST1020)、ST1030〜ST1080からなるループに移行する。
このループにおいて、最大相関値算出部221は、カウンタiの値が「8」以上である場合(ST1040:「YES」)には、各候補位置に対応する全てのループ処理が終わったと判断し、処理を終了する。一方、カウンタiの値が「8」より小さい場合(ST1040:「NO」)には、最大相関値算出部221は、全てのループ処理が終わっていないと判断し、処理をST1050に移行する。
次いで、カウンタiが示す位置の相関値yH[ici0[i]]が最大値max00より大きい場合(ST1050:「YES」)には、最大相関値算出部221は、最大値max00を準最大値max01として保存し、カウンタiが示す位置の相関値yH[ici0[i]]を最大値max00に代入してから(ST1060)、処理をST1030に戻す。カウンタiが示す位置の相関値yH[ici0[i]]が最大値max00以下である場合(ST1050:「NO」)には、最大相関値算出部221は処理をST1070に移行する。
次いで、カウンタiが示す位置の相関値yH[ici0[i]]が準最大値max01より大きい場合(ST1070:「YES」)には、最大相関値算出部221は、カウンタiが示す位置の相関値yH[ici0[i]]を準最大値max01に代入し、処理をST1030に戻す(ST1080)。一方、カウンタiが示す位置の相関値yH[ici0[i]]が準最大値max01以下である場合(ST1070:「NO」)には、最大相関値算出部221は、処理をST1030に戻す。
次いで、ST1030において、最大相関値算出部221は、カウンタiを1インクリメントしてから、処理をST1040に戻す。
このようにして、最大相関値算出部221は各候補位置におけるパルス0単独の相関値の最大値max00および準最大値max01を求める。そして、最大相関値算出部221は、図3に示した手順を流用して、パルス1,2,3単独の相関値(yH)の値が最も大きくなる候補位置を2つずつ求める。すなわち、最大相関値算出部221は、パルス1,2,3それぞれの単独の相関値の最大値および準最大値max10,max11,max20,max21,max30,max31を求める。
次いで、最大相関値算出部221は、パルス0,1,2,3それぞれの単独の相関値の最大値および準最大値を用いて下記の式(5)従い、各パルスの最大相関値S[0],S[1],S[2],S[3]を求める。式(5)に示すように、最大相関値算出部221は、各パルス単独の相関値の最大値に準最大値を所定の割合で加算することにより、各パルスに対応する安定した最大相関値を得る。
S[0]=max00+max01×0.05
S[1]=max10+max11×0.05
S[2]=max20+max21×0.05
S[3]=max30+max31×0.05 …(5)
次いで、ソーティング部222における、各パルスの最大相関値に対するソーティング処理について詳細に説明する。
図4は、ソーティング部222における、各パルスの最大相関値に対するソーティング処理の手順を示すフロー図である。
まず、ソーティング部222は、最大相関値算出部221から各パルスの最大相関値S[j](j=0,1,2,3)を入力し、何位までソーティングしたかを示すカウンタiを「0」にリセットする(ST2010)。
次いで、ソーティング部222は、カウンタiの値が「4」以上である場合(ST2030:「YES」)には、全てのソーティングが終ったと判断し、処理をST2100に移行する。一方、カウンタiの値が4より小さい場合(ST2030:「NO」)には、ソーティング部222は、パルス番号N[i]に「0」を代入し、i位の最大相関値S[N[i]]を探索するためのループの回数をカウントするカウンタjを「0」にリセットし、最大値を格納する変数maxを「0」にリセットする(ST2040)。
次いで、カウンタjが4より小さい場合(ST2060:「NO」)には、ソーティング部222は処理をST2070に移行する。
次いで、最大相関値S[j]が変数maxより大きい場合(ST2070:「YES」)には、ソーティング部222は、最大相関値S[j]を変数maxに代入し、カウンタjの値を、i位の最大相関値S[N[i]]に対応するパルス番号N[i]に代入し(ST2080)、処理をST2050に移行する。一方、最大相関値S[j]が変数max以下である場合(ST2070:「NO」)には、ソーティング部222は処理をST2050に移行する。次いで、ST2050において、ソーティング部222はカウンタjを1インクリメントし、処理をST2060に戻す。
一方、ST2060においてカウンタjが4以上である場合(ST2060:「YES」)には、ソーティング部222は、i位の最大相関値S[N[i]]を探索するための、ST2050〜ST2080からなるループが終わったと判断し、i位の最大相関値S[N[i]]に「−1」を代入する(ST2090)。これにより、i位の最大相関値S[N[i]]を、i+1位の最大相関値S[N[i+1]]を探索するためのループ処理の対象から排除する。次いで、ソーティング部222は、ST2020において、カウンタiを1インクリメントし、処理をST2030に戻す。
このようにして、ソーティング部222は、各パルスの最大相関値S[0]、S[1]、S[2]、S[3]を大きい方から順番に並べ、ソーティング結果を示すN[i]を得る。以下、ソーティング部222においてN[i]={2,0,3,1}を得た場合を例にとって説明する。すなわち、1番大きい最大相関値S[N[0]]に対応するパルスの番号N[0]の値が2であり、次の値は順次0,3,1であると仮定する。
次いで、ST2100において、ソーティング部222は、ソーティングされた最大相関値に対応する4本のパルス番号N[i]を、予め設定された2つのサブセットの分割パターンにグルーピングして、パルスの探索順序を決定し、得られた探索順序を探索部224に出力する。すなわち、ソーティング部222は、探索部224の固定符号帳の分割探索において、先に探索する2パルスの番号および後に探索する2パルスの番号を決める。ソーティング部222では、予め下記の式(6)に示す3通りの探索順の候補が設定されている。
{ 第1サブセット } { 第2サブセット }
第1候補 {N[0], N[1]} {N[2], N[3]}
第2候補 {N[0], N[2]} {N[3], N[1]}
第3候補 {N[0], N[3]} {N[1], N[2]}
…(6)
分割探索において、先に探索するサブセット(第1サブセット)および後に探索するサブセット(第2サブセット)の分割パターンは、多種存在する。そのうち、式(6)に示すように、最大相関値が最も大きいパルスN[0]を、先に探索するサブセット(第1サブセット)に含ませる分割パターンを採用すると、良好な符号化性能が得られる。
式(6)の各探索順候補においては、先に探索するサブセット(第1サブセット)、次に、後で探索するサブセット(第2サブセット)という順番で探索が行われる。
式(6)中のN[i]を、ソーティングにより得られた具体的な値で表すと、下記の式(7)が得られ、第1候補、第2候補、第3候補の順に探索が行われる。
{第1サブセット} {第2サブセット}
第1候補 {2, 0} {3, 1}
第2候補 {2, 3} {1, 0}
第3候補 {2, 1} {0, 3} …(7)
式(7)に示す3つの探索順は、下記の式(8)に示すM[3][4]にまとめることができる。ここでM[3][4]は、パルス4本に対して分割探索を3回行う場合のパルスの探索順を示す。
M[3][4]={{2,0,3,1},{2,3,1,0},{2,1,0,3}} …(8)
すなわちソーティング部222は、探索順序としてM[3][4]を探索部224に出力する。
次いで、探索部224における固定符号帳の分割探索について詳細に説明する。
図5および図6は、探索部224における固定符号帳の分割探索の手順を示すフロー図である。ここでは、代数的符号帳の条件を以下に示す。
(1)ビット数:16ビット
(2)処理単位(サブフレーム長):32
(3)パルス本数:4本
この条件のもと、以下のような代数的符号帳が設計できる。ici0[8]={0,4,8,12,16,20,24,28}ici1[8]={1,5,9,13,17,21,25,29}ici2[8]={2,6,10,14,18,22,26,30}ici3[8]={3,7,11,15,19,23,27,31}
まず、探索部224は、ST3010において、固定符号帳の4本のパルスそれぞれの候補位置を示す配列ici0[8]、ici1[8]、ici2[8]、ici3[8]を用意し、yHを正値に変換して得られた配列yH[32]、HHの極性を調整して得られた配列HH[32][32]、およびyHを正値に変換する前のyHの極性値(−1,+1)を格納したベクトルpol[32]を作成する。次いで、ST3020において、後続の探索ループに用いる変数の初期化が行われる。
探索部224は、ST3030においてjと数値「3」とを比較し、jが3以上の場合は探索を終了するためにST3250の処理へ進み、jが3より小さい場合はST3050の初期化へ進む。ST3040においてはjを1インクリメントする。これにより、探索部224は、ソーティング部222から入力される探索順M[3][4]が示す3つの探索順に対応して、2つのサブセットからなる分割探索を3回行う。
ST3050〜ST3130は、第1サブセットの探索ループ処理を示す。具体的には、ST3050においては、第1サブセットの探索ループの初期化が行われる。次いで、探索部224は、判定ST3060においてi0と数値「8」とを比較し、i0が8以上の場合は次の探索ループの初期化ST3140へ進み、i0が8より小さい場合は処理ST3070へ進む。ST3070においてM[j][0](j=0,1,2)が示すパルスの相関値sy0および音源パワsh0を算出する。また、カウンタi1を0に初期化する。また、ST3080においては、i0を1インクリメントする。これにより、探索部224は、M[j][0](j=0,1,2)が示すパルスの8つの候補位置に対応して、8回のループ処理を行う。同様に、ST3090〜ST3130において、探索部224は、M[j][1](j=0,1,2)が示すパルスの8つの候補位置に対応して、8回のループ処理を行う。
まず、判定ST3090においてi1と数値「8」とを比較し、i1が8以上の場合はインクリメント処理ST3080へ進み、i1が8より小さい場合は処理ST3100へ進む。ST3100においては、探索部224は、前処理部223から入力されるyHおよびHHに加え、ST3070において算出された相関値sy0および音源パワsh0を用いて、M[j][1](j=0,1,2)が示すパルスの相関値sy1および音源パワsh1を算出する。
ST3120において、探索部224は、第1サブセットの処理対象となる各パルスの相関値と音源パワとを用いて式(4)に従い関数Cの値を算出および比較し、より大きい関数値を示す場合のi0、i1をii0、ii1に上書き格納し、また関数Cの分子項、分母項を上書き格納する(ST3130)。なお、ST3120においては計算量の多い除算を避け、分母項と分子項のたすき掛けの乗算により算出および比較を行っている。上記判定において、より小さい場合、またより大きい場合で処理ST3130を行った場合はインクリメント処理ST3110へ進む。インクリメント処理ST3110においては、i1を1インクリメントする。
ST3140〜ST3220は、第2サブセットの探索ループ処理を示す。なお、第2サブセットの探索ループ処理は、ST3050〜ST3130に示した第1サブセットの探索ループ処理と基本的に同様なステップを有する。ここでは、第1サブセットの探索ループ処理との相違点のみについて説明する。まず、ST3140における、第2サブセットの探索ループ処理の初期化は、第1サブセットの探索ループ処理の結果を用いて行われる。また、第2サブセットの探索ループ処理の処理対象は、M[j][2](j=0,1,2)およびM[j][3](j=0,1,2)それぞれが示すパルスである。また処理ST3160においては、第1サブセットの探索ループで探索され、格納されたカウンタ情報ii0、ii1を用いてパルス2に対する相関値sy2および音源パワsh2を算出する。また、同様に、処理ST3190においては、第1サブセットの探索ループで探索され、格納されたカウンタ情報ii0、ii1を用いてパルス3に対する相関値sy3および音源パワsh3を算出する。
次いで、ST3230およびST3240において、探索部224は、分割探索全体において関数Cの値が最も大きくなるパルスの位置の組合せを求める。
次いで、ST3250において、探索部224は、ii0、ii1、ii2、ii3を各パルスの位置情報とする。また、配列polの値が極性(±1)であり、探索部224は、極性p0、p1、p2、p3を下記の式(9)に従って0または1に変換して1ビットで符号化する。
p0=(pol[ichi0[ii0]]+1)/2
p1=(pol[ichi1[ii1]]+1)/2
p2=(pol[ichi2[ii2]]+1)/2
p3=(pol[ichi3[ii3]]+1)/2 …(9)
ここで、位置情報および極性に対する復号方法としては、ichi0[ii0]、ichi1[ii1]、ichi2[ii2]、ichi3[ii3]によりパルスの位置が復号され、復号した位置と極性を用いて固定符号帳ベクトルが復号される。
図5および図6に示すように、探索部224は、2つのサブセットからなる分割探索を行うため、全探索の場合に比べて計算量を大きく削減できる。具体的には、全探索においては8の4乗で4096回のループ処理を行うのに対し、図5および図6に示す方法によれば2つのサブセットの探索それぞれにおいては、8の2乗で64回ずつのループ処理を行う。そして、M[3][4]に対応して2つのサブセットからなる分割探索を3回行うため、64×2サブセット×3倍で合計384回のループ処理を行う。これは全探索の約1/10の計算量である。
このように、本実施の形態によれば、固定符号帳に対して分割探索を行うため、固定符号帳に対して全探索を行う場合に比べ、計算量を削減することができる。
さらに、本実施の形態によれば、分割探索において固定符号帳を構成するパルスを、先に探索するサブセットおよび後に探索するサブセットに分割する際に、最大相関値が最も大きいパルスを用いて先に探索するサブセットを構成するため、分割探索による符号化歪みを抑えることができる。すなわち、全探索を行う場合でも、最大相関値が高い位置のパルスは採用される可能性が高く、分割探索において先に探索することにより符号化歪みを抑えることができる。
なお、本実施の形態ではパルス数が4であり、分割数が2である場合について説明したが、本発明はパルス数または分割数に依存せず、各パルスの最大相関値をソーティングした結果に基づいて探索するパルスの順番を決めれば、本実施の形態と同様な効果を得ることができる。
また、本実施の形態では、最大相関値算出部221は、各パルス単独の相関値の最大値に準最大値を所定の割合で加算して最大相関値を算出する場合を例にとって説明した。しかし、本発明はこれに限定されず、さらに各パルスの3番目に大きい単独の相関値を所定の割合で加算して最大相関値を算出しても良く、または、各パルス単独の相関値の最大値をそのまま最大相関値としても良い。
また、本実施の形態では各パルスの候補位置の予備選択を行わない場合を例にとって説明したが、本発明はこれに限定されず、各パルスの候補位置の予備選択を行ってからソーティングを行っても良い。これにより、ソーティングの効率を向上することができる。
また、本実施の形態では固定符号帳として代数的符号帳を用いる場合を例にとって説明したが、本発明はこれに限定されず、固定符号帳としてマルチパルス符号帳を用いても良い。すなわち、マルチパルスの位置情報および極性情報を用いて本実施の形態に適用することが可能である。
また、本実施の形態では音声符号化方法としてCELP符号化方式を用いる場合を例にとって説明したが、本発明はこれに限定されず、音声符号化方法として、本数が分かる音源ベクトルが格納されている符号帳を用いる符号化方式であれば良い。これは、本発明に係る分割探索は、固定符号帳の探索のみに対して行われ、適応符号帳の有無や、スペクトル包絡の分析方法がLPC、FFT、またはフィルタバンクであるか否かに依存しないからである。
(実施の形態2)
本発明の実施の形態2は、実施の形態1と基本的に同様であり、ソーティング部222におけるソーティング処理(図4参照)のみ実施の形態1と相違する。以下、図2において、ソーティング部222に代えて、本実施の形態に係るソーティング部を「422」という符号を付して配置し、ソーティング部422(図示せず)におけるソーティング処理のみについて説明する。
図7は、本実施の形態に係るソーティング部422における、各パルスの最大相関値に対するソーティング処理の手順を示すフロー図である。なお、図7に示す手順は、図4に示した手順と基本的に同様なステップを有しており、同一のステップには同一の符号を付し、その説明を省略する。
ST4040において、ソーティング部422は、パルス番号N[i]に「0」を代入し、i位の最大相関値S[N[i]]を探索するためのループの回数をカウントするカウンタjを「0」にリセットし、最大値を格納する変数maxを「0」にリセットし、i位の最大相関値S[N[i]]を保存するための変数L[i]に「0」を代入する。
ST4090において、ソーティング部422は、i位の最大相関値S[N[i]]をL[i]に代入し、S[N[i]]に「−1」を代入する。これにより、i位の最大相関値S[N[i]]をL[i]に保存し、また、i位の最大相関値S[N[i]]を、i+1位の最大相関値S[N[i+1]]を探索するためのループ処理の対象から排除する。
ST2010〜ST4090までの処理によって、ソーティング部422は、各パルスの最大相関値S[0]、S[1]、S[2]、S[3]を大きい方から順番に並べ、ソーティング結果を示すN[i]、およびL[i]を得る。
ST4100において、ソーティング部422は、ソーティングされた最大相関値に対応する4本のパルス番号N[i]を、予め設定された2つのサブセットの分割パターンにグルーピングして、パルスの探索順序を決定し、得られた探索順序を探索部224に出力する。すなわち、ソーティング部422は、探索部224の固定符号帳の分割探索において、先に探索する2パルスの番号および後に探索する2パルスの番号を決める。ソーティング部422では、予め3通りの探索順の候補が設定されている。ここで実施の形態1のソーティング部222と異なるのは、第3候補において、最大相関値が格納されたL[i]を用いて探索順を決定する点である。
具体的には、ソーティング部422は、まず、ソーティング結果N[i]を用いた、下記の式(10)に示す第1候補と第2候補との2つの探索順候補が設定されている。すなわちソーティング部422は、式(10)に示すように、第1候補と第2候補とにおいて最大相関値が最も大きいパルスを先に探索するサブセットに含ませ、符号化性能を向上する。
{ 第1サブセット } { 第2サブセット }
第1候補 {N[0], N[1]} {N[2], N[3]}
第2候補 {N[0], N[2]} {N[3], N[1]} …(10)
次いで、ソーティング部422は、以下のようにソーティング結果N[i]およびL[i]を用いて3つ目の探索順候補が設定されている。すなわち、ソーティング部422は、L[2]+L[3]が(L[0]+L[1])×0.91以上であるか否かを判断し、L[2]+L[3]が(L[0]+L[1])×0.91以上である場合には、第3候補として{N[2], N[3]} {N[0], N[1]}が適用される。L[2]+L[3]が(L[0]+L[1])×0.91より小さい場合には、ソーティング部422は続けて、L[1]+L[3]が(L[0]+L[2])×0.94以上であるか否かを判断する。L[1]+L[3]が(L[0]+L[2])×0.94以上である場合には、ソーティング部422は、第3候補として{N[1], N[3]} {N[2], N[0]}が適用される。L[1]+L[3]が(L[0]+L[2])×0.94より小さい場合には、ソーティング部422は続けて、L[0]+L[3]がL[1]+L[2]以上であるか否かを判断する。ソーティング部422は、L[0]+L[3]がL[1]+L[2]以上である場合に、第3候補として{N[0], N[3]} {N[1], N[2]}を生成し、L[0]+L[3]がL[1]+L[2]より小さい場合に、第3候補として{N[1], N[2]} {N[3], N[0]}が適用される。
ソーティング部422は、第3候補の探索順を適用する際に、後程探索部224の探索における冗長性を低減するために、各パルスの最大相関値の差がわずかである場合には、必ずしも最大相関値が最も大きいパルスを含まず先に探索するサブセットを構成する。すなわち、ソーティング部442は、ソーティング結果N[i]に基づき各パルスの最大相関値の組合せを複数個構成し、構成された複数個の組合せに係数を掛けて比較した結果に基づき、4つのパルスを2つずつのサブセットにグルーピングする。
例えば、ソーティング結果としてN[i]={2,0,3,1}、L[i]={9.5, 9.0, 8.5, 8.0}が得られた場合に、L[2]+L[3]が(L[0]+L[1])×0.91より小さく、L[1]+L[3]が(L[0]+L[2])×0.94以上となる。従って、ソーティング部422は、第3候補として{N[1], N[3]} {N[2], N[0]}を適用する。
N[i]を具体的な値で表すと、第1候補、第2候補、第3候補は下記の式(11)で表される。
{第1サブセット}{第2サブセット}
第1候補 {2,0} {3,1}
第2候補 {2,3} {1,0}
第3候補 {0,1} {3,2} …(11)
式(11)に示す3つの探索順候補を下記の式(12)に示すM[3][4]にまとめることができる。
M[3][4]={{2,0,3,1},{2,3,1,0},{0,1,3,2}} …(12)
ソーティング部422は、探索順候補としてM[3][4]を探索部224に出力する。
このように、本実施の形態によれば、分割探索において固定符号帳を構成するパルスを、先に探索するサブセットおよび後に探索するサブセットに分割する際に、各パルスの最大相関値の順位だけではなく、各パルスの最大相関値の値に基づき、必ずしも最大相関値が最も大きいパルスを含まず先に探索するサブセットを構成する。これにより、分割探索における探索の冗長性を低減することができる。
なお、本実施の形態では、3番目の探索順候補を適用する際に0.91、0.94などの係数を用いる場合を例にとって説明したが、本発明はこれに限定されず、統計により予め決められたほかの係数を用いても良い。
また、本実施の形態では、3番目の探索順候補を適用する際にN[i]に加えL[i]をさらに用いる場合を例にとって説明したが、本発明はこれに限定されず、1番目の探索順候補または2番目の探索順候補を適用する際でも、N[i]およびL[i]の両方を用いても良い。
(実施の形態3)
本発明の実施の形態3は、実施の形態1と基本的に同様であり、各サブセットにグルーピングしたパルスをさらに所定の順番に従って並び替える点のみが実施の形態1と相違する。すなわち、本実施の形態は、図4に示したソーティング処理の一部のみにおいて実施の形態1と相違する。以下、図2において、ソーティング部222に代えて、本実施の形態に係るソーティング部を「522」という符号を付して配置し、ソーティング部522(図示せず)におけるソーティング処理のみについて説明する。
図8は、本実施の形態に係るソーティング部522において各パルスの最大相関値に対してソーティング処理を行う手順を示すフロー図である。なお、図8に示す手順は、図4に示した手順と基本的に同様なステップを有しており、同一のステップには同一の符号を付し、その説明を省略する。
図8に示すST5100においてソーティング部522は、実施の形態1に係るソーティング部222が図4に示したST2100において行った処理と基本的に同様な処理を行うが、得られたM[3][4]をすぐには探索部224に出力せず、以下のST5110の処理を行ってから、探索部224へ出力する点において相違する。
ST5110においてソーティング部522は、M[3][4]に含まれる要素を2つずつまとめてM’[6][2]を構成し、M’[6][2]に含まれる2つずつのパルスの順番を{0,1}、{1,2}、{2,3}、{3,0}、{0,2}、{1,3}の何れかに並べ替えるという調整を行う。
図9は、図8に示したST5110におけるソーティング部522の処理手順を詳細に示すフロー図である。
まず、ST6010において、ソーティング部522は変数「i」を「0」に初期化する。
次いで、ST6020において、ソーティング部522は「i」が「6」に等しいか否かを判定する。
ST6020において「i」が「6」と等しいと判定した場合(ST6020:「YES」)には、ソーティング部522は図9に示した処理(すなわちST5110の処理)を終了する。
一方、ST6020において「i」が「6」と等しくないと判定した場合(ST6020:「NO」)には、ソーティング部522は処理をST6030に移行する。
ST6030において、ソーティング部522はM’[i][1]=「2」であって、かつM’[i][2]=「1」であるか否かを判定する。
ST6030において、M’[i][1]=「2」であって、かつM’[i][2]=「1」であると判定した場合(ST6030:「YES」)には、ソーティング部522はST6040においてM’[i][1]を「1」に設定し、M’[i][2]を「2」に設定してから処理をST6150に移行する。
一方、ST6030において、M’[i][1]=「2」であって、かつM’[i][2]=「1」であるという2つの条件が同時に成立しないと判定した場合(ST6030:「NO」)には、ソーティング部522は処理をST6050に移行する。
ST6050において、ソーティング部522はM’[i][1]=「3」であって、かつM’[i][2]=「2」であるか否かを判定する。
ST6050において、M’[i][1]=「3」であって、かつM’[i][2]=「2」であると判定した場合(ST6050:「YES」)には、ソーティング部522はST6060においてM’[i][1]を「2」に設定し、M’[i][2]を「3」に設定してから処理をST6150に移行する。
一方、ST6050において、M’[i][1]=「3」であって、かつM’[i][2]=「2」であるという2つの条件が同時に成立しないと判定した場合(ST6050:「NO」)には、ソーティング部522は処理をST6070に移行する。
ST6070において、ソーティング部522はM’[i][1]=「4」であって、かつM’[i][2]=「3」であるか否かを判定する。
ST6070において、M’[i][1]=「4」であって、かつM’[i][2]=「3」であると判定した場合(ST6070:「YES」)には、ソーティング部522はST6080においてM’[i][1]を「3」に設定し、M’[i][2]を「4」に設定してから処理をST6150に移行する。
一方、ST6070において、M’[i][1]=「4」であって、かつM’[i][2]=「3」であるという2つの条件が同時に成立しないと判定した場合(ST6070:「NO」)には、ソーティング部522は処理をST6090に移行する。
ST6090において、ソーティング部522はM’[i][1]=「1」であって、かつM’[i][2]=「4」であるか否かを判定する。
ST6090において、M’[i][1]=「1」であって、かつM’[i][2]=「4」であると判定した場合(ST6090:「YES」)には、ソーティング部522はST6100においてM’[i][1]を「4」に設定し、M’[i][2]を「1」に設定してから処理をST6150に移行する。
一方、ST6090において、M’[i][1]=「1」であって、かつM’[i][2]=「4」であるという2つの条件が同時に成立しないと判定した場合(ST6090:「NO」)には、ソーティング部522は処理をST6110に移行する。
ST6110において、ソーティング部522はM’[i][1]=「3」であって、かつM’[i][2]=「1」であるか否かを判定する。
ST6110において、M’[i][1]=「3」であって、かつM’[i][2]=「1」であると判定した場合(ST6110:「YES」)には、ソーティング部522はST6120においてM’[i][1]を「1」に設定し、M’[i][2]を「3」に設定してから処理をST6150に移行する。
一方、ST6110において、M’[i][1]=「3」であって、かつM’[i][2]=「1」であるという2つの条件が同時に成立しないと判定した場合(ST6110:「NO」)には、ソーティング部522は処理をST6130に移行する。
ST6130において、ソーティング部522はM’[i][1]=「4」であって、かつM’[i][2]=「2」であるか否かを判定する。
ST6130において、M’[i][1]=「4」であって、かつM’[i][2]=「2」であると判定した場合(ST6130:「YES」)には、ソーティング部522はST6140においてM’[i][1]を「2」に設定し、M’[i][2]を「4」に設定してから処理をST6150に移行する。
一方、ST6130において、M’[i][1]=「4」であって、かつM’[i][2]=「2」であるという2つの条件が同時に成立しないと判定した場合(ST6130:「NO」)には、ソーティング部522は処理をST6150に移行する。
ST6150において、ソーティング部522は、「i」を1インクリメントしてから処理をST6020に移行する。
例えばソーティング部522は、M[3][4]={{2,0,3,1},{2,3,1,0},{2,1,0,3}}を用いてM’[6][2]={{2,0},{3,1},{2,3},{1,0},{2,1},{0,3}}を構成した場合、さらに図9に示した手順に従ってM’[6][2]に含まれる2つずつのパルスの順番を調整すると、M’[6][2]={{0,2},{1,3},{2,3},{0,1},{1,2},{3,0}}が得られる。ソーティング部522は、調整により得られたM’[6][2]={{0,2},{1,3},{2,3},{0,1},{1,2},{3,0}}を用いて再びM[3][4]={{0,2,1,3},{2,3,0,1},{1,2,3,0}}を構成して探索部224に出力する。
以下、図9に示したソーティング部522における調整処理の効果について説明する。
固定符号帳を構成するパルスの探索は上記の式(4)の関数Cを最も大きくするパルス位置および極性を探索することにより行われる。従って、探索の際には式(4)の分母項の「HH」のマトリクスに対応するメモリ(RAM:Random Access Memory)が必要になる。例えば音源ベクトルの長さが32である場合には、32×32の対角ベクトルを含む半分のマトリクスに対応するメモリが必要になる。すなわち(32×32/2+16)バイト=528バイトのメモリが必要になる。ただし、計算の際に指定のインデックスにアクセスする計算量を少なくするためにはフルマトリクス(32×32バイト=1024バイト)に対応するメモリが必要になるため、さらに大きなメモリが必要になる。
これに対し、本発明のように、固定符号帳を構成するパルスを先に探索するサブセットおよび後に探索するサブセット(ペア)に分割し、ペア毎にパルスの探索を行うと、1ペア当たりのエントリ数の2乗である8×8のマトリクスがあれば良いため、メモリを8×8×6バイト=384バイトに節約することができる。ただし、このマトリクスは対称行列ではないため、パルスの番号の順番が逆になるとマトリクスが異なるようになり、逆のマトリクスを別途用意する(メモリが倍になってしまう)か、探索の際のアクセス方法を変える(計算量が増えてしまう)か、ペアの組み合わせ毎にプログラムを用意する(メモリと計算量が増えてしまう)必要がある。そこで、本実施の形態においては、ペア毎の探索を行う際にパルスの順番を並べ替え、すべての探索を6つのペアに限定する。これにより、パルス探索に必要なメモリを上記384バイトに限定することができ、計算量も削減することができる。
このように、本実施の形態によれば、固定符号帳を構成するパルスをペアにグルーピングする際に、グルーピングされるパルスを所定の順番に並び替え、ペア毎にパルスの探索を行うため、固定符号帳の探索に必要なメモリと計算量を削減することができる。
なお、本実施の形態では、パルスを探索するペアを{0,1}、{1,2}、{2,3}、{3,0}、{0,2}、{1,3}の6通りに限定する場合を例にとって説明したが、本発明はこれに限定されず、上記の各ペアに含まれるパルスの順番を逆にしても良く、これによりパルス探索の平均的性能が変わることはない。
以上、本発明の各実施の形態について説明した。
なお、上記各実施の形態に係る固定符号帳は、雑音符号帳、確率符号帳(stochastic codebook)、または乱数符号帳(random codebook)と呼ばれることもある。
また、適応符号帳は、適応音源符号帳と呼ばれることもあり、固定符号帳は、固定音源符号帳と呼ばれることもある。
また、LSPは、LSF(Line Spectral Frequency)と呼ばれることもあり、LSPをLSFと読み替えてもよい。また、LSPの代わりにISP(ImmittanceSpectrum Pairs)をスペクトルパラメータとして符号化する場合もあるが、この場合はLSPをISPに読み替えればISP符号化装置として上記各実施の形態を利用することができる。
また、上記各実施の形態では、本発明をハードウェアで構成する場合を例にとって説明したが、本発明はソフトウェアで実現することも可能である。
また、上記各実施の形態の説明に用いた各機能ブロックは、典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部または全てを含むように1チップ化されてもよい。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用してもよい。
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
2007年7月27日出願の特願2007−196782、2007年10月3日出願の特願2007−260426および2008年1月16日出願の特願2008−007418の日本出願に含まれる明細書、図面および要約書の開示内容は、すべて本願に援用される。
本発明にかかる音声符号化装置及び音声符号化方法は、ビットを有効に利用した固定符号帳により音声符号化を行うことができ、例えば、移動体通信システムにおける携帯電話等に適用できる。
本発明は、音声符号化装置および音声符号化方法に関し、特に固定符号帳探索を行う音声符号化装置および音声符号化方法に関する。
移動体通信においては、伝送帯域の有効利用のために音声や画像のディジタル情報の圧縮符号化が必須である。その中でも携帯電話で広く利用される音声コーデック(符号化/復号)技術に対する期待は大きく、圧縮率の高い従来の高効率符号化に対してさらなる音質の要求が強まっている。
近年、多層構造を有するスケーラブルコーデックの標準化がITU−T(International
Telecommunication Union Telecommunication Standardization Sector)、MPEG(Moving Picture Expert Group)等で検討されており、より効率的で高品質な音声コーデックが求められている。
音声の発声機構をモデル化してベクトル量子化を巧みに応用した基本方式「CELP」(Code Excited Linear Prediction)によって大きく性能を向上させた音声符号化技術は、非特許文献1に記載の代数的符号帳(Algebraic Codebook)のような少数パルスによる固定音源の技術により、一段とその性能を向上させた。ITU−T標準G.729や、ETSI(European Telecommunications Standards Institute)標準AMR(Adaptive Multi-Rate)は、代数的符号帳を用いたCELPの代表的なコーデックであり、世界で広く使用されている。
代数的符号帳を用いて音声符号化を行う場合、代数的符号帳を構成する1つ1つのパルスの相互の影響を考慮し、全てのパルスの組み合わせを探索する(以下、全探索と称す)ことが望ましい。しかし、パルス数が多くなると探索に必要な計算量が指数関数的に増加してしまう。これに対し、非特許文献2には、全探索の場合の性能をほぼ維持しながら計算量を大幅に低減できる代数的符号帳の探索方法として、分割探索、枝刈探索、ビタビ探索などを開示している。
その中でも分割探索は最も簡単でかつ計算量削減の効果が大きい方法である。分割探索とは、1つの閉ループ探索を複数のより小さい閉ループに分割して、複数の閉ループ探索の開ループ探索にする方法である。分割探索においては、分割数に応じて大きく計算量を下げることが出来る。分割探索は国際標準方式でも使用されており、第3世代携帯電話の標準コーデックであるETSI標準AMRの代数的符号帳の探索においては、4本のパルスを2つのサブセットに分けて分割探索を行う。
例えば、8つの位置候補を持つパルスが4本ある場合を考えると、4本のパルスをすべて1つの閉ループで探索するには、評価しなければならないパルスの組み合わせが8の4乗で4096通りとなる。これに対し、ETSI標準AMRは、4本のパルスを2本と2本の2つのサブセットに分割して、それぞれを閉ループで探索する。従って、ETSI標準AMRにおいて評価しなければならないパルスの組み合わせは8の2乗の2倍で128通りとなり、全探索の場合と比べて32分の1の計算量となる。さらに、ETSI標準AMRにおける各評価は、4パルスよりも少ない2パルスに対して行われるため、計算量はさらに低減される。
Salami, Laflamme, Adoul,"8kbit/s ACELP Coding of Speech with 10ms Speech-Frame:aCandidate for CCITT Standardization",IEEE Proc. ICASSP94,pp.II-97n
野村ほか、「CELPにおけるパルス励振源の効果的な探索法」、日本音響学会春季講演論文集2−P−5、平成8年3月、pp.311-312
しかしながら、代数的符号帳の分割探索による音声符号化の性能は、概して全探索の場合に比べ低い。なぜなら最初に決まる2本のパルスの位置が最適であるとは限らないからである。
従って、分割探索では先に探索するサブセットを構成するパルスとして何を選ぶかによって、音声符号化の性能を改善する余地がある。例えば、4本のパルスの中でランダムに2つを選んで探索することを複数回行い、そのうち符号化性能が一番良い結果を得る方法が考えられる。例えば、サブセットのペアを4種類用意し、4種類のペアに対してそれぞれ探索を行うことによって、音声符号化の性能を全探索による符号化性能に近づけることが出来る。この場合、128(8の2乗の2倍)の4倍で512通りの計算が必要になるものの、それでも全探索の場合の計算量の1/8である。ただし、上記例ではサブセットを任意に構成しており、また4種類のペアのいずれにも特に先に探索する理由はない。従って、複数のケースについて探索を行う場合に得られる符号化性能はバラツキがあり、総合的に符号化性能は十分ではない。
本発明の目的は、代数的符号帳に対して分割探索を行いつつ、符号化性能を向上することができる音声符号化装置および音声符号化方法を提供することである。
本発明の音声符号化装置は、固定符号帳を構成する複数のパルスそれぞれとターゲット信号とを用いてパルス候補位置それぞれにおける相関値を算出し、パルス毎に、前記相関値の最大値を用いてパルスに関する代表値を算出する算出手段と、パルス毎に得られた前記代表値をソーティングし、ソーティングした前記代表値に対応するそれぞれのパルスを、予め設定された複数のサブセットにグルーピングし、前記複数のサブセットから、最初に探索する第1のサブセットを決定するソーティング手段と、前記第1のサブセットを用いて前記固定符号帳を探索し、符号化歪みが最小となる前記複数のパルスの位置および極性を示す符号を得る探索手段と、を具備する構成をとる。
本発明の音声符号化方法は、固定符号帳を構成する複数のパルスそれぞれとターゲット信号とを用いてパルス候補位置それぞれにおける相関値を算出し、パルス毎に、前記相関値の最大値を用いてパルスに関する代表値を算出するステップと、パルス毎に得られた前記代表値をソーティングし、ソーティングした前記代表値に対応するそれぞれのパルスを、予め設定された複数のサブセットにグルーピングし、前記複数のサブセットから、最初に探索する第1のサブセットを決定するステップと、前記第1のサブセットを用いて前記固定符号帳を探索し、符号化歪みが最小となる前記複数のパルスの位置および極性を示す符号を生成するステップと、を有するようにした。
本発明によれば、音声符号化において固定符号帳の分割探索を行う際、たとえば最大相関値のような、パルスに関する代表値を用いて、先に探索するサブセットを決定するため、代数的符号帳に対して分割探索を行いつつ、符号化性能を向上することができる。
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
(実施の形態1)
図1は、本発明の実施の形態1に係るCELP符号化装置100の構成を示すブロック図である。ここでは、本発明に係る音声符号化装置としてCELP方式の符号化装置を例にとって説明する。
図1において、CELP符号化装置100は、声道情報と音源情報とからなる音声信号S11を、声道情報については、LPCパラメータ(線形予測係数)を求めることにより符号化し、音源情報については、予め記憶されている音声モデルのいずれを用いるかを特定するインデックスを求めることにより符号化する。すなわち、音源情報については、適応符号帳103および固定符号帳104でどのような音源ベクトル(コードベクトル)を生成するかを特定するインデックスを求めることにより符号化する。
具体的には、CELP符号化装置100の各部は以下の動作を行う。
LPC分析部101は、音声信号S11に対して線形予測分析を施し、スペクトル包絡情報であるLPCパラメータを求め、求めたLPCパラメータをLPC量子化部102および聴感重み付け部111に出力する。
LPC量子化部102は、LPC分析部101から出力されたLPCパラメータを量子化し、得られた量子化LPCパラメータをLPC合成フィルタ109に、量子化LPCパラメータのインデックスをCELP符号化装置100の外部へ出力する。
一方、適応符号帳103は、LPC合成フィルタ109で使用された過去の駆動音源を記憶しており、後述する歪み最小化部112から指示されたインデックスに対応する適応符号帳ラグに従って、記憶している駆動音源から1サブフレーム分の音源ベクトルを生成する。この音源ベクトルは、適応符号帳ベクトルとして乗算器106に出力される。
固定符号帳104は、所定形状の音源ベクトルを複数個予め記憶しており、歪み最小化部112から指示されたインデックスに対応する音源ベクトルを、固定符号帳ベクトルとして乗算器107に出力する。ここで、固定符号帳104は代数的音源であり、代数的符号帳を用いた場合について説明する。代数的音源とは、多くの標準コーデックに採用され
ている音源である。
なお、上記の適応符号帳103は、有声音のように周期性の強い成分を表現するために使われ、一方、固定符号帳104は、白色雑音のように周期性の弱い成分を表現するために使われる。
ゲイン符号帳105は、歪み最小化部112からの指示に従って、適応符号帳103から出力される適応符号帳ベクトル用のゲイン(適応符号帳ゲイン)、および固定符号帳104から出力される固定符号帳ベクトル用のゲイン(固定符号帳ゲイン)を生成し、それぞれ乗算器106、107に出力する。
乗算器106は、ゲイン符号帳105から出力された適応符号帳ゲインを、適応符号帳103から出力された適応符号帳ベクトルに乗じ、加算器108に出力する。
乗算器107は、ゲイン符号帳105から出力された固定符号帳ゲインを、固定符号帳104から出力された固定符号帳ベクトルに乗じ、加算器108に出力する。
加算器108は、乗算器106から出力された適応符号帳ベクトルと、乗算器107から出力された固定符号帳ベクトルとを加算し、加算後の音源ベクトルを駆動音源としてLPC合成フィルタ109に出力する。
LPC合成フィルタ109は、LPC量子化部102から出力された量子化LPCパラメータをフィルタ係数とし、適応符号帳103および固定符号帳104で生成される音源ベクトルを駆動音源としたフィルタ関数、すなわち、LPC合成フィルタを用いて合成信号を生成する。この合成信号は、加算器110に出力される。
加算器110は、LPC合成フィルタ109で生成された合成信号を音声信号S11から減算することによって誤差信号を算出し、この誤差信号を聴感重み付け部111に出力する。なお、この誤差信号が符号化歪みに相当する。
聴感重み付け部111は、加算器110から出力された符号化歪みに対して聴感的な重み付けを施し、歪み最小化部112に出力する。
歪み最小化部112は、聴感重み付け部111から出力された符号化歪みが最小となるような、適応符号帳103、固定符号帳104およびゲイン符号帳105の各インデックスをサブフレームごとに求め、これらのインデックスを符号化情報としてCELP符号化装置100の外部に出力する。より詳細には、上記の適応符号帳103および固定符号帳104に基づいて合成信号を生成し、この信号の符号化歪みを求める一連の処理は閉ループ制御(帰還制御)となっており、歪み最小化部112は、各符号帳に指示するインデックスを1サブフレーム内において様々に変化させることによって各符号帳を探索し、最終的に得られる、符号化歪みを最小とする各符号帳のインデックスを出力する。
なお、符号化歪みが最小となる際の駆動音源は、サブフレームごとに適応符号帳103へフィードバックされる。適応符号帳103は、このフィードバックにより、記憶されている駆動音源を更新する。
ここで、固定符号帳104の探索方法について説明する。まず、音源ベクトルの探索と符号の導出は以下の式(1)の符号化歪を最小化する音源ベクトルを探索することにより行われる。
E:符号化歪、x:符号化ターゲット、p:適応符号帳ベクトルのゲイン、H:聴感重み付け合成フィルタ、a:適応符号帳ベクトル、q:固定符号帳ベクトルのゲイン、s:固定符号帳ベクトル
一般的に、適応符号帳ベクトルと固定符号帳ベクトルとはオープンループで(別々のループで)探索されるので、固定符号帳104の符号の導出は以下の式(2)の符号化歪を最小化する固定符号帳ベクトルを探索することにより行われる。
E:符号化歪、x:符号化ターゲット(聴感重み付け音声信号)、p:適応符号帳ベクトルの最適ゲイン、H:聴感重み付け合成フィルタ、a:適応符号帳ベクトル、q:固定符号帳ベクトルのゲイン、s:固定符号帳ベクトル、y:固定符号帳探索のターゲットベクトル
ここで、ゲインp、qは音源の符号を探索した後で決定するので、ここでは最適ゲインで探索を進めることとする。すると、上式(2)は以下の式(3)と書ける。
そして、この歪の式を最小化することは、以下の式(4)の関数Cを最大化することと同値であることがわかる。
よって、代数的符号帳の音源のような少数パルスからなる音源の探索の場合は、yHとHHを予め計算しておけば、少ない計算量で上記関数Cを算出できる。ここで、ベクトルyHの要素は、パルス単独の相関値に相当する。すなわち、ターゲットyに対して時間逆順合成を施したyHの要素の1つはその位置に立つパルスの合成信号とターゲット信号との相関値と等しくなる。
図2は、本実施の形態に係る歪み最小化部112の内部構成を示すブロック図である。ここでは、歪み最小化部112の固定符号帳探索において代数的符号帳を構成する4本のパルスを2本と2本のサブセットに分割して探索する場合を例にとって説明する。また、各パルスが8つの位置候補を備えるとする。
図2において、歪み最小化部112は、適応符号帳探索部201、固定符号帳探索部202、およびゲイン符号帳探索部203を備える。固定符号帳探索部202は、最大相関値算出部221、ソーティング部222、前処理部223、および探索部224を備える
。
適応符号帳探索部201は、聴感重み付け部111において聴感的な重み付けが施された符号化歪みを用いて、適応符号帳103の探索を行う。適応符号帳探索部201は、探索過程で得られる適応符号帳ベクトルの符号を適応符号帳103に出力し、探索結果として得られた適応符号帳ベクトルの符号を固定符号帳探索部202の最大相関値算出部221に出力するとともに、CELP符号化装置100の外部へ出力する。
固定符号帳探索部202は、聴感重み付け部111において聴感的な重み付けが施された符号化歪み、および適応符号帳探索部201から入力される適応符号帳ベクトルの符号を用いて固定符号帳の分割探索を行う。固定符号帳探索部202は、探索過程で得られる固定符号帳ベクトルの符号を固定符号帳104に出力し、探索結果として得られた固定符号帳ベクトルの符号をCELP符号化装置100の外部に出力するとともにゲイン符号帳探索部203に出力する。
ゲイン符号帳探索部203は、固定符号帳探索部202の探索部224から入力される固定符号帳ベクトルの符号、聴感重み付け部111において聴感的な重み付けが施された符号化歪み、および適応符号帳探索部201から入力される適応符号帳ベクトルの符号に基づき、ゲイン符号帳を探索する。そして、ゲイン符号帳探索部203は、探索過程で得られる適応符号帳ゲインおよび固定符号帳ゲインをゲイン符号帳105に出力し、探索結果として得られた適応符号帳ゲインおよび固定符号帳ゲインをCELP符号化装置100の外部に出力する。
最大相関値算出部221は、適応符号帳探索部201から入力される適応符号帳ベクトルの符号を用いて適応符号帳ベクトルを求め、式(2)に示すターゲットベクトルyを計算する。また、最大相関値算出部221は、聴感重み付け部111における合成フィルタの係数Hを用いて、各候補位置における各パルス単独の相関値yHを算出して前処理部223に出力する。そして、最大相関値算出部221は、各候補位置における各パルス単独の相関値yHを用いて、各パルスの最大相関値を求め、ソーティング部222に出力する。なお、最大相関値算出部221における最大相関値の算出の詳細については後述する。
ソーティング部222は、最大相関値算出部221から入力される各パルスの最大相関値を大きい方から順番に並べる(以下、ソーティング処理と称す)。また、ソーティング部222は、ソーティング結果に基づき、4本のパルスを2本ずつの2つのサブセットに分割し、分割結果を探索部224に出力する。なお、ソーティング部222におけるソーティング処理の詳細については後述する。
前処理部223は、聴感重み付け部111における合成フィルタの係数Hを用いてマトリクスHHを算出する。また、前処理部223は、最大相関値算出部221から入力されるベクトルyHの要素の極性(+−)から、パルスの極性polを決めて、探索部224に出力する。具体的には、前処理部223は、各位置に立つパルスの極性をyHのその位置の値の極性に合わせることとし、yHの値の極性を別の配列に格納しておく。前処理部223は、各位置の極性を別の配列に格納した後、yHの値に対し全て絶対値をとり正の値に変換しておく。また、前処理部223は、格納した各位置の極性に合わせて、HHの値に対しても極性を乗ずることによって変換しておく。求められたyHおよびHHは、探索部224に出力される。
探索部224は、ソーティング部222から入力される分割結果、聴感重み付け部111において聴感的な重み付けが施された符号化歪み、および前処理部223から入力されるyHおよびHHを用いて固定符号帳の分割探索を行う。探索部224は、探索過程で得
られる固定符号帳ベクトルの符号を固定符号帳104に出力し、探索結果として得られた固定符号帳ベクトルの符号をCELP符号化装置100の外部に出力するとともに、ゲイン符号帳探索部203に出力する。なお、探索部224における固定符号帳の分割探索の詳細については後述する。
次いで、最大相関値算出部221において各パルスの最大相関値を算出する処理について詳細に説明する。
図3は、最大相関値算出部221における各パルスの最大相関値の算出手順を示すフロー図である。ここでは、最大相関値算出部221においてパルス0の相関値(yH)の値が最も大きくなる2つの候補位置を求め、これに基づきパルス0の最大相関値を算出する処理を例にとって説明する。
まず、最大相関値算出部221は、予め定められたパルス0の候補位置の配列ici0[8]、および探索に用いる相関値yHを正値に変換して得られる配列yH[32]を確保する(ST1010)。
次いで、最大相関値算出部221は、最大値max00、準最大値(2番目に大きい値)max01、およびカウンタiの初期化を行い(ST1020)、ST1030〜ST1080からなるループに移行する。
このループにおいて、最大相関値算出部221は、カウンタiの値が「8」以上である場合(ST1040:「YES」)には、各候補位置に対応する全てのループ処理が終わったと判断し、処理を終了する。一方、カウンタiの値が「8」より小さい場合(ST1040:「NO」)には、最大相関値算出部221は、全てのループ処理が終わっていないと判断し、処理をST1050に移行する。
次いで、カウンタiが示す位置の相関値yH[ici0[i]]が最大値max00より大きい場合(ST1050:「YES」)には、最大相関値算出部221は、最大値max00を準最大値max01として保存し、カウンタiが示す位置の相関値yH[ici0[i]]を最大値max00に代入してから(ST1060)、処理をST1030に戻す。カウンタiが示す位置の相関値yH[ici0[i]]が最大値max00以下である場合(ST1050:「NO」)には、最大相関値算出部221は処理をST1070に移行する。
次いで、カウンタiが示す位置の相関値yH[ici0[i]]が準最大値max01より大きい場合(ST1070:「YES」)には、最大相関値算出部221は、カウンタiが示す位置の相関値yH[ici0[i]]を準最大値max01に代入し、処理をST1030に戻す(ST1080)。一方、カウンタiが示す位置の相関値yH[ici0[i]]が準最大値max01以下である場合(ST1070:「NO」)には、最大相関値算出部221は、処理をST1030に戻す。
次いで、ST1030において、最大相関値算出部221は、カウンタiを1インクリメントしてから、処理をST1040に戻す。
このようにして、最大相関値算出部221は各候補位置におけるパルス0単独の相関値の最大値max00および準最大値max01を求める。そして、最大相関値算出部221は、図3に示した手順を流用して、パルス1,2,3単独の相関値(yH)の値が最も大きくなる候補位置を2つずつ求める。すなわち、最大相関値算出部221は、パルス1,2,3それぞれの単独の相関値の最大値および準最大値max10,max11,ma
x20,max21,max30,max31を求める。
次いで、最大相関値算出部221は、パルス0,1,2,3それぞれの単独の相関値の最大値および準最大値を用いて下記の式(5)従い、各パルスの最大相関値S[0],S[1],S[2],S[3]を求める。式(5)に示すように、最大相関値算出部221は、各パルス単独の相関値の最大値に準最大値を所定の割合で加算することにより、各パルスに対応する安定した最大相関値を得る。
S[0]=max00+max01×0.05
S[1]=max10+max11×0.05
S[2]=max20+max21×0.05
S[3]=max30+max31×0.05 …(5)
次いで、ソーティング部222における、各パルスの最大相関値に対するソーティング処理について詳細に説明する。
図4は、ソーティング部222における、各パルスの最大相関値に対するソーティング処理の手順を示すフロー図である。
まず、ソーティング部222は、最大相関値算出部221から各パルスの最大相関値S[j](j=0,1,2,3)を入力し、何位までソーティングしたかを示すカウンタiを「0」にリセットする(ST2010)。
次いで、ソーティング部222は、カウンタiの値が「4」以上である場合(ST2030:「YES」)には、全てのソーティングが終ったと判断し、処理をST2100に移行する。一方、カウンタiの値が4より小さい場合(ST2030:「NO」)には、ソーティング部222は、パルス番号N[i]に「0」を代入し、i位の最大相関値S[N[i]]を探索するためのループの回数をカウントするカウンタjを「0」にリセットし、最大値を格納する変数maxを「0」にリセットする(ST2040)。
次いで、カウンタjが4より小さい場合(ST2060:「NO」)には、ソーティング部222は処理をST2070に移行する。
次いで、最大相関値S[j]が変数maxより大きい場合(ST2070:「YES」)には、ソーティング部222は、最大相関値S[j]を変数maxに代入し、カウンタjの値を、i位の最大相関値S[N[i]]に対応するパルス番号N[i]に代入し(ST2080)、処理をST2050に移行する。一方、最大相関値S[j]が変数max以下である場合(ST2070:「NO」)には、ソーティング部222は処理をST2050に移行する。次いで、ST2050において、ソーティング部222はカウンタjを1インクリメントし、処理をST2060に戻す。
一方、ST2060においてカウンタjが4以上である場合(ST2060:「YES」)には、ソーティング部222は、i位の最大相関値S[N[i]]を探索するための、ST2050〜ST2080からなるループが終わったと判断し、i位の最大相関値S[N[i]]に「−1」を代入する(ST2090)。これにより、i位の最大相関値S[N[i]]を、i+1位の最大相関値S[N[i+1]]を探索するためのループ処理の対象から排除する。次いで、ソーティング部222は、ST2020において、カウンタiを1インクリメントし、処理をST2030に戻す。
このようにして、ソーティング部222は、各パルスの最大相関値S[0]、S[1]、S[2]、S[3]を大きい方から順番に並べ、ソーティング結果を示すN[i]を得
る。以下、ソーティング部222においてN[i]={2,0,3,1}を得た場合を例にとって説明する。すなわち、1番大きい最大相関値S[N[0]]に対応するパルスの番号N[0]の値が2であり、次の値は順次0,3,1であると仮定する。
次いで、ST2100において、ソーティング部222は、ソーティングされた最大相関値に対応する4本のパルス番号N[i]を、予め設定された2つのサブセットの分割パターンにグルーピングして、パルスの探索順序を決定し、得られた探索順序を探索部224に出力する。すなわち、ソーティング部222は、探索部224の固定符号帳の分割探索において、先に探索する2パルスの番号および後に探索する2パルスの番号を決める。ソーティング部222では、予め下記の式(6)に示す3通りの探索順の候補が設定されている。
{ 第1サブセット } { 第2サブセット }
第1候補 {N[0], N[1]} {N[2], N[3]}
第2候補 {N[0], N[2]} {N[3], N[1]}
第3候補 {N[0], N[3]} {N[1], N[2]} …(6)
分割探索において、先に探索するサブセット(第1サブセット)および後に探索するサブセット(第2サブセット)の分割パターンは、多種存在する。そのうち、式(6)に示すように、最大相関値が最も大きいパルスN[0]を、先に探索するサブセット(第1サブセット)に含ませる分割パターンを採用すると、良好な符号化性能が得られる。
式(6)の各探索順候補においては、先に探索するサブセット(第1サブセット)、次に、後で探索するサブセット(第2サブセット)という順番で探索が行われる。
式(6)中のN[i]を、ソーティングにより得られた具体的な値で表すと、下記の式(7)が得られ、第1候補、第2候補、第3候補の順に探索が行われる。
{第1サブセット} {第2サブセット}
第1候補 {2, 0} {3, 1}
第2候補 {2, 3} {1, 0}
第3候補 {2, 1} {0, 3} …(7)
式(7)に示す3つの探索順は、下記の式(8)に示すM[3][4]にまとめることができる。ここでM[3][4]は、パルス4本に対して分割探索を3回行う場合のパルスの探索順を示す。
M[3][4]={{2,0,3,1},{2,3,1,0},{2,1,0,3}}
…(8)
すなわちソーティング部222は、探索順序としてM[3][4]を探索部224に出力する。
次いで、探索部224における固定符号帳の分割探索について詳細に説明する。
図5および図6は、探索部224における固定符号帳の分割探索の手順を示すフロー図である。ここでは、代数的符号帳の条件を以下に示す。
(1)ビット数:16ビット
(2)処理単位(サブフレーム長):32
(3)パルス本数:4本
この条件のもと、以下のような代数的符号帳が設計できる。
ici0[8]={0,4,8,12,16,20,24,28}
ici1[8]={1,5,9,13,17,21,25,29}
ici2[8]={2,6,10,14,18,22,26,30}
ici3[8]={3,7,11,15,19,23,27,31}
まず、探索部224は、ST3010において、固定符号帳の4本のパルスそれぞれの候補位置を示す配列ici0[8]、ici1[8]、ici2[8]、ici3[8]を用意し、yHを正値に変換して得られた配列yH[32]、HHの極性を調整して得られた配列HH[32][32]、およびyHを正値に変換する前のyHの極性値(−1,+1)を格納したベクトルpol[32]を作成する。次いで、ST3020において、後続の探索ループに用いる変数の初期化が行われる。
探索部224は、ST3030においてjと数値「3」とを比較し、jが3以上の場合は探索を終了するためにST3250の処理へ進み、jが3より小さい場合はST3050の初期化へ進む。ST3040においてはjを1インクリメントする。これにより、探索部224は、ソーティング部222から入力される探索順M[3][4]が示す3つの探索順に対応して、2つのサブセットからなる分割探索を3回行う。
ST3050〜ST3130は、第1サブセットの探索ループ処理を示す。具体的には、ST3050においては、第1サブセットの探索ループの初期化が行われる。次いで、探索部224は、判定ST3060においてi0と数値「8」とを比較し、i0が8以上の場合は次の探索ループの初期化ST3140へ進み、i0が8より小さい場合は処理ST3070へ進む。ST3070においてM[j][0](j=0,1,2)が示すパルスの相関値sy0および音源パワsh0を算出する。また、カウンタi1を0に初期化する。また、ST3080においては、i0を1インクリメントする。これにより、探索部224は、M[j][0](j=0,1,2)が示すパルスの8つの候補位置に対応して、8回のループ処理を行う。同様に、ST3090〜ST3130において、探索部224は、M[j][1](j=0,1,2)が示すパルスの8つの候補位置に対応して、8回のループ処理を行う。
まず、判定ST3090においてi1と数値「8」とを比較し、i1が8以上の場合はインクリメント処理ST3080へ進み、i1が8より小さい場合は処理ST3100へ進む。ST3100においては、探索部224は、前処理部223から入力されるyHおよびHHに加え、ST3070において算出された相関値sy0および音源パワsh0を用いて、M[j][1](j=0,1,2)が示すパルスの相関値sy1および音源パワsh1を算出する。
ST3120において、探索部224は、第1サブセットの処理対象となる各パルスの相関値と音源パワとを用いて式(4)に従い関数Cの値を算出および比較し、より大きい関数値を示す場合のi0、i1をii0、ii1に上書き格納し、また関数Cの分子項、分母項を上書き格納する(ST3130)。なお、ST3120においては計算量の多い除算を避け、分母項と分子項のたすき掛けの乗算により算出および比較を行っている。上記判定において、より小さい場合、またより大きい場合で処理ST3130を行った場合はインクリメント処理ST3110へ進む。インクリメント処理ST3110においては、i1を1インクリメントする。
ST3140〜ST3220は、第2サブセットの探索ループ処理を示す。なお、第2サブセットの探索ループ処理は、ST3050〜ST3130に示した第1サブセットの探索ループ処理と基本的に同様なステップを有する。ここでは、第1サブセットの探索ループ処理との相違点のみについて説明する。まず、ST3140における、第2サブセットの探索ループ処理の初期化は、第1サブセットの探索ループ処理の結果を用いて行われ
る。また、第2サブセットの探索ループ処理の処理対象は、M[j][2](j=0,1,2)およびM[j][3](j=0,1,2)それぞれが示すパルスである。また処理ST3160においては、第1サブセットの探索ループで探索され、格納されたカウンタ情報ii0、ii1を用いてパルス2に対する相関値sy2および音源パワsh2を算出する。また、同様に、処理ST3190においては、第1サブセットの探索ループで探索され、格納されたカウンタ情報ii0、ii1を用いてパルス3に対する相関値sy3および音源パワsh3を算出する。
次いで、ST3230およびST3240において、探索部224は、分割探索全体において関数Cの値が最も大きくなるパルスの位置の組合せを求める。
次いで、ST3250において、探索部224は、ii0、ii1、ii2、ii3を各パルスの位置情報とする。また、配列polの値が極性(±1)であり、探索部224は、極性p0、p1、p2、p3を下記の式(9)に従って0または1に変換して1ビットで符号化する。
p0=(pol[ichi0[ii0]]+1)/2
p1=(pol[ichi1[ii1]]+1)/2
p2=(pol[ichi2[ii2]]+1)/2
p3=(pol[ichi3[ii3]]+1)/2 …(9)
ここで、位置情報および極性に対する復号方法としては、ichi0[ii0]、ichi1[ii1]、ichi2[ii2]、ichi3[ii3]によりパルスの位置が復号され、復号した位置と極性を用いて固定符号帳ベクトルが復号される。
図5および図6に示すように、探索部224は、2つのサブセットからなる分割探索を行うため、全探索の場合に比べて計算量を大きく削減できる。具体的には、全探索においては8の4乗で4096回のループ処理を行うのに対し、図5および図6に示す方法によれば2つのサブセットの探索それぞれにおいては、8の2乗で64回ずつのループ処理を行う。そして、M[3][4]に対応して2つのサブセットからなる分割探索を3回行うため、64×2サブセット×3倍で合計384回のループ処理を行う。これは全探索の約1/10の計算量である。
このように、本実施の形態によれば、固定符号帳に対して分割探索を行うため、固定符号帳に対して全探索を行う場合に比べ、計算量を削減することができる。
さらに、本実施の形態によれば、分割探索において固定符号帳を構成するパルスを、先に探索するサブセットおよび後に探索するサブセットに分割する際に、最大相関値が最も大きいパルスを用いて先に探索するサブセットを構成するため、分割探索による符号化歪みを抑えることができる。すなわち、全探索を行う場合でも、最大相関値が高い位置のパルスは採用される可能性が高く、分割探索において先に探索することにより符号化歪みを抑えることができる。
なお、本実施の形態ではパルス数が4であり、分割数が2である場合について説明したが、本発明はパルス数または分割数に依存せず、各パルスの最大相関値をソーティングした結果に基づいて探索するパルスの順番を決めれば、本実施の形態と同様な効果を得ることができる。
また、本実施の形態では、最大相関値算出部221は、各パルス単独の相関値の最大値に準最大値を所定の割合で加算して最大相関値を算出する場合を例にとって説明した。しかし、本発明はこれに限定されず、さらに各パルスの3番目に大きい単独の相関値を所定
の割合で加算して最大相関値を算出しても良く、または、各パルス単独の相関値の最大値をそのまま最大相関値としても良い。
また、本実施の形態では各パルスの候補位置の予備選択を行わない場合を例にとって説明したが、本発明はこれに限定されず、各パルスの候補位置の予備選択を行ってからソーティングを行っても良い。これにより、ソーティングの効率を向上することができる。
また、本実施の形態では固定符号帳として代数的符号帳を用いる場合を例にとって説明したが、本発明はこれに限定されず、固定符号帳としてマルチパルス符号帳を用いても良い。すなわち、マルチパルスの位置情報および極性情報を用いて本実施の形態に適用することが可能である。
また、本実施の形態では音声符号化方法としてCELP符号化方式を用いる場合を例にとって説明したが、本発明はこれに限定されず、音声符号化方法として、本数が分かる音源ベクトルが格納されている符号帳を用いる符号化方式であれば良い。これは、本発明に係る分割探索は、固定符号帳の探索のみに対して行われ、適応符号帳の有無や、スペクトル包絡の分析方法がLPC、FFT、またはフィルタバンクであるか否かに依存しないからである。
(実施の形態2)
本発明の実施の形態2は、実施の形態1と基本的に同様であり、ソーティング部222におけるソーティング処理(図4参照)のみ実施の形態1と相違する。以下、図2において、ソーティング部222に代えて、本実施の形態に係るソーティング部を「422」という符号を付して配置し、ソーティング部422(図示せず)におけるソーティング処理のみについて説明する。
図7は、本実施の形態に係るソーティング部422における、各パルスの最大相関値に対するソーティング処理の手順を示すフロー図である。なお、図7に示す手順は、図4に示した手順と基本的に同様なステップを有しており、同一のステップには同一の符号を付し、その説明を省略する。
ST4040において、ソーティング部422は、パルス番号N[i]に「0」を代入し、i位の最大相関値S[N[i]]を探索するためのループの回数をカウントするカウンタjを「0」にリセットし、最大値を格納する変数maxを「0」にリセットし、i位の最大相関値S[N[i]]を保存するための変数L[i]に「0」を代入する。
ST4090において、ソーティング部422は、i位の最大相関値S[N[i]]をL[i]に代入し、S[N[i]]に「−1」を代入する。これにより、i位の最大相関値S[N[i]]をL[i]に保存し、また、i位の最大相関値S[N[i]]を、i+1位の最大相関値S[N[i+1]]を探索するためのループ処理の対象から排除する。
ST2010〜ST4090までの処理によって、ソーティング部422は、各パルスの最大相関値S[0]、S[1]、S[2]、S[3]を大きい方から順番に並べ、ソーティング結果を示すN[i]、およびL[i]を得る。
ST4100において、ソーティング部422は、ソーティングされた最大相関値に対応する4本のパルス番号N[i]を、予め設定された2つのサブセットの分割パターンにグルーピングして、パルスの探索順序を決定し、得られた探索順序を探索部224に出力する。すなわち、ソーティング部422は、探索部224の固定符号帳の分割探索において、先に探索する2パルスの番号および後に探索する2パルスの番号を決める。ソーティ
ング部422では、予め3通りの探索順の候補が設定されている。ここで実施の形態1のソーティング部222と異なるのは、第3候補において、最大相関値が格納されたL[i]を用いて探索順を決定する点である。
具体的には、ソーティング部422は、まず、ソーティング結果N[i]を用いた、下記の式(10)に示す第1候補と第2候補との2つの探索順候補が設定されている。すなわちソーティング部422は、式(10)に示すように、第1候補と第2候補とにおいて最大相関値が最も大きいパルスを先に探索するサブセットに含ませ、符号化性能を向上する。
{ 第1サブセット } { 第2サブセット }
第1候補 {N[0], N[1]} {N[2], N[3]}
第2候補 {N[0], N[2]} {N[3], N[1]} …(10)
次いで、ソーティング部422は、以下のようにソーティング結果N[i]およびL[i]を用いて3つ目の探索順候補が設定されている。すなわち、ソーティング部422は、L[2]+L[3]が(L[0]+L[1])×0.91以上であるか否かを判断し、L[2]+L[3]が(L[0]+L[1])×0.91以上である場合には、第3候補として{N[2], N[3]} {N[0], N[1]}が適用される。L[2]+L[3]が(L[0]+L[1])×0.91より小さい場合には、ソーティング部422は続けて、L[1]+L[3]が(L[0]+L[2])×0.94以上であるか否かを判断する。L[1]+L[3]が(L[0]+L[2])×0.94以上である場合には、ソーティング部422は、第3候補として{N[1], N[3]} {N[2],
N[0]}が適用される。L[1]+L[3]が(L[0]+L[2])×0.94より小さい場合には、ソーティング部422は続けて、L[0]+L[3]がL[1]+L[2]以上であるか否かを判断する。ソーティング部422は、L[0]+L[3]がL[1]+L[2]以上である場合に、第3候補として{N[0], N[3]} {N[1], N[2]}を生成し、L[0]+L[3]がL[1]+L[2]より小さい場合に、第3候補として{N[1], N[2]} {N[3], N[0]}が適用される。
ソーティング部422は、第3候補の探索順を適用する際に、後程探索部224の探索における冗長性を低減するために、各パルスの最大相関値の差がわずかである場合には、必ずしも最大相関値が最も大きいパルスを含まず先に探索するサブセットを構成する。すなわち、ソーティング部442は、ソーティング結果N[i]に基づき各パルスの最大相関値の組合せを複数個構成し、構成された複数個の組合せに係数を掛けて比較した結果に基づき、4つのパルスを2つずつのサブセットにグルーピングする。
例えば、ソーティング結果としてN[i]={2,0,3,1}、L[i]={9.5, 9.0, 8.5, 8.0}が得られた場合に、L[2]+L[3]が(L[0]+L[1])×0.91より小さく、L[1]+L[3]が(L[0]+L[2])×0.94以上となる。従って、ソーティング部422は、第3候補として{N[1], N[3]} {N[2], N[0]}を適用する。
N[i]を具体的な値で表すと、第1候補、第2候補、第3候補は下記の式(11)で表される。
{第1サブセット}{第2サブセット}
第1候補 {2,0} {3,1}
第2候補 {2,3} {1,0}
第3候補 {0,1} {3,2} …(11)
式(11)に示す3つの探索順候補を下記の式(12)に示すM[3][4]にまとめることができる。
M[3][4]={{2,0,3,1},{2,3,1,0},{0,1,3,2}}
…(12)
ソーティング部422は、探索順候補としてM[3][4]を探索部224に出力する。
このように、本実施の形態によれば、分割探索において固定符号帳を構成するパルスを、先に探索するサブセットおよび後に探索するサブセットに分割する際に、各パルスの最大相関値の順位だけではなく、各パルスの最大相関値の値に基づき、必ずしも最大相関値が最も大きいパルスを含まず先に探索するサブセットを構成する。これにより、分割探索における探索の冗長性を低減することができる。
なお、本実施の形態では、3番目の探索順候補を適用する際に0.91、0.94などの係数を用いる場合を例にとって説明したが、本発明はこれに限定されず、統計により予め決められたほかの係数を用いても良い。
また、本実施の形態では、3番目の探索順候補を適用する際にN[i]に加えL[i]をさらに用いる場合を例にとって説明したが、本発明はこれに限定されず、1番目の探索順候補または2番目の探索順候補を適用する際でも、N[i]およびL[i]の両方を用いても良い。
(実施の形態3)
本発明の実施の形態3は、実施の形態1と基本的に同様であり、各サブセットにグルーピングしたパルスをさらに所定の順番に従って並び替える点のみが実施の形態1と相違する。すなわち、本実施の形態は、図4に示したソーティング処理の一部のみにおいて実施の形態1と相違する。以下、図2において、ソーティング部222に代えて、本実施の形態に係るソーティング部を「522」という符号を付して配置し、ソーティング部522(図示せず)におけるソーティング処理のみについて説明する。
図8は、本実施の形態に係るソーティング部522において各パルスの最大相関値に対してソーティング処理を行う手順を示すフロー図である。なお、図8に示す手順は、図4に示した手順と基本的に同様なステップを有しており、同一のステップには同一の符号を付し、その説明を省略する。
図8に示すST5100においてソーティング部522は、実施の形態1に係るソーティング部222が図4に示したST2100において行った処理と基本的に同様な処理を行うが、得られたM[3][4]をすぐには探索部224に出力せず、以下のST5110の処理を行ってから、探索部224へ出力する点において相違する。
ST5110においてソーティング部522は、M[3][4]に含まれる要素を2つずつまとめてM’[6][2]を構成し、M’[6][2]に含まれる2つずつのパルスの順番を{0,1}、{1,2}、{2,3}、{3,0}、{0,2}、{1,3}の何れかに並べ替えるという調整を行う。
図9は、図8に示したST5110におけるソーティング部522の処理手順を詳細に示すフロー図である。
まず、ST6010において、ソーティング部522は変数「i」を「0」に初期化す
る。
次いで、ST6020において、ソーティング部522は「i」が「6」に等しいか否かを判定する。
ST6020において「i」が「6」と等しいと判定した場合(ST6020:「YES」)には、ソーティング部522は図9に示した処理(すなわちST5110の処理)を終了する。
一方、ST6020において「i」が「6」と等しくないと判定した場合(ST6020:「NO」)には、ソーティング部522は処理をST6030に移行する。
ST6030において、ソーティング部522はM’[i][1]=「2」であって、かつM’[i][2]=「1」であるか否かを判定する。
ST6030において、M’[i][1]=「2」であって、かつM’[i][2]=「1」であると判定した場合(ST6030:「YES」)には、ソーティング部522はST6040においてM’[i][1]を「1」に設定し、M’[i][2]を「2」に設定してから処理をST6150に移行する。
一方、ST6030において、M’[i][1]=「2」であって、かつM’[i][2]=「1」であるという2つの条件が同時に成立しないと判定した場合(ST6030:「NO」)には、ソーティング部522は処理をST6050に移行する。
ST6050において、ソーティング部522はM’[i][1]=「3」であって、かつM’[i][2]=「2」であるか否かを判定する。
ST6050において、M’[i][1]=「3」であって、かつM’[i][2]=「2」であると判定した場合(ST6050:「YES」)には、ソーティング部522はST6060においてM’[i][1]を「2」に設定し、M’[i][2]を「3」に設定してから処理をST6150に移行する。
一方、ST6050において、M’[i][1]=「3」であって、かつM’[i][2]=「2」であるという2つの条件が同時に成立しないと判定した場合(ST6050:「NO」)には、ソーティング部522は処理をST6070に移行する。
ST6070において、ソーティング部522はM’[i][1]=「4」であって、かつM’[i][2]=「3」であるか否かを判定する。
ST6070において、M’[i][1]=「4」であって、かつM’[i][2]=「3」であると判定した場合(ST6070:「YES」)には、ソーティング部522はST6080においてM’[i][1]を「3」に設定し、M’[i][2]を「4」に設定してから処理をST6150に移行する。
一方、ST6070において、M’[i][1]=「4」であって、かつM’[i][2]=「3」であるという2つの条件が同時に成立しないと判定した場合(ST6070:「NO」)には、ソーティング部522は処理をST6090に移行する。
ST6090において、ソーティング部522はM’[i][1]=「1」であって、かつM’[i][2]=「4」であるか否かを判定する。
ST6090において、M’[i][1]=「1」であって、かつM’[i][2]=「4」であると判定した場合(ST6090:「YES」)には、ソーティング部522はST6100においてM’[i][1]を「4」に設定し、M’[i][2]を「1」に設定してから処理をST6150に移行する。
一方、ST6090において、M’[i][1]=「1」であって、かつM’[i][2]=「4」であるという2つの条件が同時に成立しないと判定した場合(ST6090:「NO」)には、ソーティング部522は処理をST6110に移行する。
ST6110において、ソーティング部522はM’[i][1]=「3」であって、かつM’[i][2]=「1」であるか否かを判定する。
ST6110において、M’[i][1]=「3」であって、かつM’[i][2]=「1」であると判定した場合(ST6110:「YES」)には、ソーティング部522はST6120においてM’[i][1]を「1」に設定し、M’[i][2]を「3」に設定してから処理をST6150に移行する。
一方、ST6110において、M’[i][1]=「3」であって、かつM’[i][2]=「1」であるという2つの条件が同時に成立しないと判定した場合(ST6110:「NO」)には、ソーティング部522は処理をST6130に移行する。
ST6130において、ソーティング部522はM’[i][1]=「4」であって、かつM’[i][2]=「2」であるか否かを判定する。
ST6130において、M’[i][1]=「4」であって、かつM’[i][2]=「2」であると判定した場合(ST6130:「YES」)には、ソーティング部522はST6140においてM’[i][1]を「2」に設定し、M’[i][2]を「4」に設定してから処理をST6150に移行する。
一方、ST6130において、M’[i][1]=「4」であって、かつM’[i][2]=「2」であるという2つの条件が同時に成立しないと判定した場合(ST6130:「NO」)には、ソーティング部522は処理をST6150に移行する。
ST6150において、ソーティング部522は、「i」を1インクリメントしてから処理をST6020に移行する。
例えばソーティング部522は、M[3][4]={{2,0,3,1},{2,3,1,0},{2,1,0,3}}を用いてM’[6][2]={{2,0},{3,1},{2,3},{1,0},{2,1},{0,3}}を構成した場合、さらに図9に示した手順に従ってM’[6][2]に含まれる2つずつのパルスの順番を調整すると、M’[6][2]={{0,2},{1,3},{2,3},{0,1},{1,2},{3,0}}が得られる。ソーティング部522は、調整により得られたM’[6][2]={{0,2},{1,3},{2,3},{0,1},{1,2},{3,0}}を用いて再びM[3][4]={{0,2,1,3},{2,3,0,1},{1,2,3,0}}を構成して探索部224に出力する。
以下、図9に示したソーティング部522における調整処理の効果について説明する。
固定符号帳を構成するパルスの探索は上記の式(4)の関数Cを最も大きくするパルス
位置および極性を探索することにより行われる。従って、探索の際には式(4)の分母項の「HH」のマトリクスに対応するメモリ(RAM:Random Access Memory)が必要になる。例えば音源ベクトルの長さが32である場合には、32×32の対角ベクトルを含む半分のマトリクスに対応するメモリが必要になる。すなわち(32×32/2+16)バイト=528バイトのメモリが必要になる。ただし、計算の際に指定のインデックスにアクセスする計算量を少なくするためにはフルマトリクス(32×32バイト=1024バイト)に対応するメモリが必要になるため、さらに大きなメモリが必要になる。
これに対し、本発明のように、固定符号帳を構成するパルスを先に探索するサブセットおよび後に探索するサブセット(ペア)に分割し、ペア毎にパルスの探索を行うと、1ペア当たりのエントリ数の2乗である8×8のマトリクスがあれば良いため、メモリを8×8×6バイト=384バイトに節約することができる。ただし、このマトリクスは対称行列ではないため、パルスの番号の順番が逆になるとマトリクスが異なるようになり、逆のマトリクスを別途用意する(メモリが倍になってしまう)か、探索の際のアクセス方法を変える(計算量が増えてしまう)か、ペアの組み合わせ毎にプログラムを用意する(メモリと計算量が増えてしまう)必要がある。そこで、本実施の形態においては、ペア毎の探索を行う際にパルスの順番を並べ替え、すべての探索を6つのペアに限定する。これにより、パルス探索に必要なメモリを上記384バイトに限定することができ、計算量も削減することができる。
このように、本実施の形態によれば、固定符号帳を構成するパルスをペアにグルーピングする際に、グルーピングされるパルスを所定の順番に並び替え、ペア毎にパルスの探索を行うため、固定符号帳の探索に必要なメモリと計算量を削減することができる。
なお、本実施の形態では、パルスを探索するペアを{0,1}、{1,2}、{2,3}、{3,0}、{0,2}、{1,3}の6通りに限定する場合を例にとって説明したが、本発明はこれに限定されず、上記の各ペアに含まれるパルスの順番を逆にしても良く、これによりパルス探索の平均的性能が変わることはない。
以上、本発明の各実施の形態について説明した。
なお、上記各実施の形態に係る固定符号帳は、雑音符号帳、確率符号帳(stochastic codebook)、または乱数符号帳(random codebook)と呼ばれることもある。
また、適応符号帳は、適応音源符号帳と呼ばれることもあり、固定符号帳は、固定音源符号帳と呼ばれることもある。
また、LSPは、LSF(Line Spectral Frequency)と呼ばれることもあり、LSPをLSFと読み替えてもよい。また、LSPの代わりにISP(ImmittanceSpectrum Pairs)をスペクトルパラメータとして符号化する場合もあるが、この場合はLSPをISPに読み替えればISP符号化装置として上記各実施の形態を利用することができる。
また、上記各実施の形態では、本発明をハードウェアで構成する場合を例にとって説明したが、本発明はソフトウェアで実現することも可能である。
また、上記各実施の形態の説明に用いた各機能ブロックは、典型的には集積回路であるLSIとして実現される。これらは個別に1チップ化されてもよいし、一部または全てを含むように1チップ化されてもよい。ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路または汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用してもよい。
さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてありえる。
2007年7月27日出願の特願2007−196782、2007年10月3日出願の特願2007−260426および2008年1月16日出願の特願2008−007418の日本出願に含まれる明細書、図面および要約書の開示内容は、すべて本願に援用される。
本発明にかかる音声符号化装置及び音声符号化方法は、ビットを有効に利用した固定符号帳により音声符号化を行うことができ、例えば、移動体通信システムにおける携帯電話等に適用できる。
本発明の実施の形態1に係るCELP符号化装置の構成を示すブロック図
本発明の実施の形態1に係る歪み最小化部の内部構成を示すブロック図
本発明の実施の形態1に係る最大相関値算出部における各パルスの最大相関値の算出手順を示すフロー図
本発明の実施の形態1に係るソーティング部における、各パルスの最大相関値に対するソーティング処理の手順を示すフロー図
本発明の実施の形態1に係る探索部における固定符号帳の分割探索の手順を示すフロー図
本発明の実施の形態1に係る探索部における固定符号帳の分割探索の手順を示すフロー図
本発明の実施の形態2に係るソーティング部における、各パルスの最大相関値に対するソーティング処理の手順を示すフロー図
本発明の実施の形態3に係るソーティング部における、各パルスの最大相関値に対するソーティング処理の手順を示すフロー図
本発明の実施の形態3に係るソーティング部における、パルスの順番の並べ替え処理の手順を示すフロー図