GSM-FR 、GSM Full Rate、あるいは GSM 06.10 は、GSM デジタル携帯電話システムで利用された最初の音声符号化方式である。コーデックのビットレートは 13.0kbps(VoIPなどでは 33バイト/20 ms に丸められ 13.2kbps)である。その後の GSM 用のコーデックである GSM-EFR(GSM Enhanced Full Rate)や AMR(Adaptive Multi-Rate)と比べると音質は劣るが、符号化に必要な演算量が少ない。

GSM の初期の頃から使われていたため多くの携帯電話でサポートされており、また VoIP 用のコーデックの1つとして使われている。

## 概要

GSM-FR は GSM で最初に採用された音声符号化方式で、現在の仕様は ETSI 06.10 (ETS 300 961) で定義されている。基本となる方式が 1985年 に発表され、
その後の評価と改良を経て GSM フェーズ1での標準符号化方式として選ばれた。
当時の他の方式と比べ音質が良く、低ビットレートが要求される携帯電話用としては符号化に必要な演算量が少ない特徴があり、GSM の発展と共に世界中で広く使用された。

現在の多くの携帯電話用の符号化方式として CELP やそれから派生した方式が使われているのに対し、GSM-FR では RPE-LTP(Regular Pulse Excitation-Long Term Prediction)と呼ばれるより単純なアルゴリズムが使われている。音質は通常の有線の電話回線より悪い。

GSM-FR の特徴は以下の通りである。

- 入出力のサンプリング周波数は 8 kHz/ 13 bit
- ビットレートは 13.0kbps(33バイト/20 ms に丸められた場合 13.2kbps)
- RPE-LTP アルゴリズムを使用
- 20 msのフレーム長
- 符号化遅延は 20 ms
- GSM で利用された最初の音声符号化方式
- 必要な演算量が少ない(4.5 MIPS 程度)

GSM-FR は古くから使われている符号化方式のため VoIP 用ソフトでも使われており、Ekiga、QuteCom、Linphone、Asterisk (PBX) などでサポートされている。

## RPE-LTP

多くの低ビットレート音声符号化方式では、人間の声道にあたる線形予測フィルターの係数と、声帯音に相当するフィルターの励起信号の情報とで音声の情報を表現する。励起信号は線形予測の残差(LPC residual)から求まる。

GSM-FR で使用される RPE-LTP(regular pulse excitation-long term prediction)も同様で、線形予測の残差を効率的に表現するために「長期予測」と一定間隔で配置した任意の振幅のパルス信号とを用い、線形予測符号と組み合わせて使う。

長期予測(long term prediction、LTP)は有声音のような周期性の高い信号を効率的に表現するためのもので、CELP での適応型コードブックに相当する役割を持つ。
線形予測の残差に残っている長期の周期性を、信号周期から決まる遅延時間と振幅の変化を表すゲインとでパラメータ化する。
線形予測が比較的短期の予測を行うのに対し、長期予測では音声のピッチ周波数(音声波形の基本周波数)にあたるミリ秒単位の信号予測を行う。

残差信号のうち、長期予測で表現しきれなかった残りの信号を一定間隔に配置したパルス信号の組み合わせで表現する(regular pulse excitation、RPE)。特定のサンプリング周波数の信号に対し、例えば 2, 5, 8, 11, ... のように一定の時間間隔ごと(例の場合は 3 ごと)に配置したパルスを用い、その振幅で情報を表す。

GSM-FR 符号化の際の全体の処理は以下のようになる。
処理は 20 ms 長(160サンプル)のフレームと 5 ms 長(40サンプル)のサブフレームを単位に行う。
入出力のサンプリング周波数は 8 kHz で、13 ビット幅のリニアPCM、あるいはそれに相当する 8 ビット A-law/μ-law PCM である。

1. 入力信号より線形予測フィルターの係数を計算
   - 20 ms(160サンプル)のフレームごとに線形予測フィルターの係数(8 次)を計算
   - フィルター係数を補間しやすいLog Area Ratio(LAR)に変換し量子化
2. 線形予測フィルターの残差信号から長期予測の係数を計算(LTP)
   - Log Area Ratioから構成した分析フィルターと入力信号とから残差信号を計算
   - 5 ms のサブフレームごとに長期予測の遅延時間とゲインの各係数を求める
3. 残差信号から長期予測分を引いた信号を一定間隔のパルス列で符号化(RPE)
   - 5 ms のサブフレームごとに長期予測の遅延時間とゲインの各係数より求めた予測信号を元の残差信号から引き、最終的な残差分を計算する
   - 残差分をうまく表現できるパルス開始位置を計算する(パルス間隔は 3 サンプルごと、13 サンプル/サブフレーム)
   - パルス列の振幅を適応PCM(Adaptive PCM)を使って量子化する(3 ビット/サンプル + サンプル最大値 6 ビット)

最後の RPE 符号化では、3 サンプルごとのパルス間隔という制約のため、1, 4, 7, .../ 2, 5, 8, .../ 3, 6, 9, ... のように開始位置が異なる残差信号サンプル値の3つの組み合わせの中からエネルギー総和が最大のものを選択することで、残差を最もうまく表現できるパルス列が求まる。この方式では CELP など他の方式で必要なコードブックやパルス位置などの探索の処理が単純化されるため、演算量が大幅に少ない。

この方法は、開始位置指定のダウンサンプリングにより、残差の信号を近似的に表現する手法ととらえることもできる。

復号は符号化と逆の処理を行う。

1. 符号化された定間隔パルス列から励起信号を計算
2. 励起信号と長期予測フィルターとから最終的な励起信号を計算
3. 線形予測合成フィルターに励起信号を入力し音声信号を復元

符号化に必要なビットの構成は以下の通りで、ビットレートは 13.0 kbps になる。

## インプリメンテーション

通常の GSM 携帯電話上での実装以外に、GSM-FR コーデックのフリーの実装である libgsm ライブラリがあり、
多くのプラットフォームで利用できる。
このライブラリは1992年から1994年にかけて、当時ベルリン工科大学にいたユッタ デグナー(Jutta Degener)とカーステン ボルマン(Carsten Bormann)が開発した。

Windows 上でのマイクロソフトによる独自実装のコーデックとしては "MS GSM"(Microsoft GSM 6.10 Audio Codec)がある。このコーデックは ETSI GSM 06.10 と互換性があるが、マイクロソフト独自のフレーム形式を使用している。

また、Ekiga、QuteCom、Linphone、Asterisk (PBX) など、いくつかの VoIP 用ソフトウェアでも GSM-FR コーデックが使用されている。

## 歴史

GSM-FR のベースになる RPE(regular pulse excitation)方式は 1985 年に発表され、最初の第2世代移動通信システムである GSM のための音声符号化方式として 1987 年にオランダの電機・家電製品メーカーであるフィリップスから提案され、さまざまな評価が行われた。この方式は任意の位置/振幅のパルス列と線形予測符号を組み合わせた MPLPC(multi-pulse linear predictive coding、マルチパルス線形予測符号)方式に制限を加えて単純化し演算量を抑えたものである。MPLPC は 1982 年頃に考案された。

RPE 方式は IBM など他社の提案より音質が優れていたが、ビットレートが 14.77 kbps と高く通信エラー時の音質低下が大きい問題があった。そのためIBMと協力し、IBM の提案に含まれていた LTP(long term prediction)を組み合わせた RPE-LTP 方式が生まれた。
方式の変更により演算量は増えたが、ほぼ同じ音質を維持しながらビットレートを 13 kbps に下げることができ、GSM の最初の仕様である GSM フェーズ1(1990年)での音声符号化方式として採用された。

その後、GSM 向けのコーデックとして、ビットレートを半分に落とした GSM-HR(GSM Half-Rate、GSM 06.20)、より音質を向上させたGSM-EFR(GSM Enhanced Full Rate、GSM 06.60)、複数のビットレートをサポートするAMR(Adaptive Multi-Rate)など様々な規格が生まれた。