Code Excited Linear Prediction

Code Excited Linear Prediction（CELP、セルプ）は線形予測符号・ベクトル量子化・合成による分析を組み合わせた音声符号化アルゴリズムである。直訳すると「符号励振線形予測」。 CELPは当時の既存の低ビットレートのアルゴリズム（RELP、LPC、ヴォコーダーのFS-1015など）に比べて格段に優れた音質を示した。様々な派生が生まれ（ACELP、RCELP、LD-CELP、VSELPなど）、現在最も広く使われている音声符号化アルゴリズムである。CELPはこのアルゴリズムのクラスを指す用語であり、特定のコーデックを指す用語ではない。 CELPアルゴリズムは次の考え方に基づいている: 線形予測符号 (LPC) に基づく音源フィルタモデル 声帯相当の音源 (励起信号): 線形予測残差 声道相当のフィルタ:　　　 線形予測フィルタ ベクトル量子化 (VQ) と コードブック による符号化: 線形予測フィルタに入力される音源 (励起信号) を、適応型 (ピッチ成分) と固定型 (残差成分成分) のコードブックで符号化 合成による分析 (AbS: Analysis-by-Synthesis): 聴覚的重み付けドメイン上の閉ループ内でコードブックを探索して符号化 CELPは1985年に米AT&Tの Schroeder と Atal が提案した。2人が1983年に行った最初のシミュレーションでは、スーパーコンピュータCray-1を使って、1秒間の音声を符号化するのに150秒かかった。その後コードブックの実装方法を改善し、コンピュータの性能向上もあり、携帯電話などでもこのアルゴリズムが使えるようになった。 CELPデコーダは、適応型コードブック (ピッチ成分) と 固定型コードブック (残差成分) から エンコード信号で指定された要素を取出し、指定ゲインを掛けて加算して、励振信号 (excitation) e [ n ] {\displaystyle e[n]} を得る。 e [ n ] = g a ⋅ e a [ n ] + g f ⋅ e f [ n ] {\displaystyle e[n]=g_{a}\cdot e_{a}[n]+g_{f}\cdot e_{f}[n]\,} ここで、 e a [ n ] {\displaystyle e_{a}[n]} は適応型コードブックの成分、 e f [ n ] {\displaystyle e_{f}[n]} は固定型コードブックの成分、 g a , g b {\displaystyle g_{a},g_{b}} は各々のゲインである。固定型コードブックはベクトル量子化辞書であり、コーデック内に固定的に記述されている。このコードブックは代数的な形式で格納する場合 (ACELP) と、そのままの形で格納する場合 (Speex) がある。適応型コードブックには、励振信号の過去の時系列が格納され、人間の声などの周期的な信号を効率的に符号化できる。 励振信号を整形する合成フィルタには、たとえば 1 / A ( z ) {\displaystyle 1/A(z)} という形の全極モデルを使用し、ここで A ( z ) {\displaystyle A(z)} は線形予測（レビンソン再帰）で得られる予測フィルタであり、線形予測係数 (LPC)はエンコード信号で指定される。全極フィルタを使うのは、人間の声道をうまく表現でき、また計算も容易だからである。 CELPの基本原理は「合成による分析」(AbS; Analysis-by-Synthesis) と呼ばれ、閉ループ内で行われるデコード信号 (synthesis) の聴覚的最適化を通じて、エンコード (analysis) が行なわれることを意味する。理論上、最善のCELPストリームは、可能なあらゆるビットの組み合わせを試行し、最もよく聞こえるデコード済み信号を選択することで得られる。しかし、それは利用可能なハードウェアの計算能力を超えており、「最もよく聞こえる」ものを選ぶということは人間の介在を必要とするため、現実的ではない。 限られた計算リソースを使ってリアルタイムにエンコードを行うため、単純な聴覚的重み付け関数 W(z) を使い、より小さくより扱いやすい逐次探索でCELP探索を実施する。通常、エンコードは次の順序で実施する。 線形予測係数 (LPC) を計算しベクトル量子化（通常、線スペクトル対 (LSP) に変換後） 適応型コードブックを探索し、その成分を除去 固定型コードブックを探索 最近の音声コーデックの多くは、音響心理学を応用して符号化雑音が可聴帯域外の周波数領域になるようにしている。例えば、振幅の大きい周波数帯域にある雑音はマスキングされる。そのため、CELPは誤差を聴覚的重み付けの上で最小化する。重み付け関数 W(z) は、帯域幅拡張 (bandwidth expansion) を使ったLPCフィルタに基づいている。 W ( z ) = A ( z / γ 1 ) A ( z / γ 2 ) {\displaystyle W(z)={\frac {A(z/\gamma _{1})}{A(z/\gamma _{2})}}} ここで γ 1 > γ 2 {\displaystyle \gamma _{1}>\gamma _{2}} である。 [脚注の使い方] ^ "We describe in this paper a code-excited linear predictive coder" p.937 of M.R. Schroeder and B.S. Atal. (1985). Code-excited linear prediction (CELP): High quality speech at very low bit rates. IEEE Proc. ICASSP, pp.937-940, 1985. B.S. Atal, "The History of Linear Prediction," IEEE Signal Processing Magazine, vol. 23, no. 2, March 2006, pp. 154–161. M. R. Schroeder and B. S. Atal, "Code-excited linear prediction (CELP): high-quality speech at very low bit rates," in Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP), vol. 10, pp. 937–940, 1985. Jean-Marc Valin, "Speex: A Free Codec For Free Speech," Xiph.Org Foundation 山根淳、「CELP音声符号化」、Ricoh Technical Report No.23、1997年9月。PDF 音声符号化 線形予測符号 (LPC) ACELP: 固定型コードブックを代数形式で格納するアルゴリズム RCELP: 短周期のピッチ変動を除去し圧縮効率を改善したアルゴリズム RPE-LTP: 適応型コードブックの代わりにLong Term Predictionを使うアルゴリズム (GSM-FullRateコーデックで採用) MPEG-4 CELP: MPEG-4 オーディオのCELP系コーデック (CELPをベースに、MPE (RPE-LPT系) あるいは RPE (ACELP系) を組み合わせたもの(選択可能)) Speex documentation CELP 1016A and LPC 10e - リファレンス実装 Linear Predictive Coding (LPC)