EVRC

EVRC（enhanced variable rate codec）は CDMA2000 ネットワークで利用される可変ビットレートの音声符号化方式である。cdmaOne の時代から使われていたため多くの携帯電話でサポートされており、CDMA2000 ネットワークで使われるもっともポピュラーなコーデックの1つである。 通話中に音声の内容によりビットレートを変えることができ、また雑音抑制の機能が組み込まれているため騒がしい環境でも比較的音質が良い特徴がある。 EVRC は、それ以前に CDMA ネットワークで使われていた 13kbps QCELP（Qualcomm's code excited linear prediction）に代わるものとして提案された音声符号化方式で、1997年に TIA/EIA IS-127 として規格化され、その後1999年に 3GPP2 の標準規格 C.S0014-0 として採用された 。 CDMA2000 ネットワークでの標準コーデックの1つとして使われている。 現在の EVRC は元の規格をベースに様々な拡張が加えられ、オリジナルの EVRC（EVRC revision 0）以外に EVRC-A（EVRC revision A）、EVRC-B（EVRC revision B、EVRC-Aに平均ビットレート低減などの拡張を行った規格）、EVRC-WB（EVRC wideband、EVRC-Bを2倍の帯域幅に広帯域化した規格）、EVRC-NB（EVRC narrowband-wideband、EVRC-BとEVRC-WBを統合した規格）がある。上位の規格は全て下位の規格と互換性がある。 オリジナルの EVRC はこれらの規格のベースとなるもので、CELPの一種である RCELP をアルゴリズムとして用い、その中で使う固定コードブックとしては ACELP の形式を使う。 ビットレートは入力となる音声信号の種類（有声音/無声音/無音状態など）により動的に変わる。音声信号の内容に応じて8.55 kbps（フルレート）、4.0 kbps（ハーフレート）、0.8 kbps（1/8レート）のいずれかのビットレートに符号化する。1/8レートは無音状態（しゃべっていない状態）のみで使われる。 これらの符号化データはそれぞれ CDMA2000 ネットワークのレートセット1（9.6 Kbps を基準とする通信レート）でのフレームレート 9600 bps、4800 bps、1200 bps を使い送受信される。CDMA2000 ネットワークで使われている CDMA 方式は、各利用者のビットレートが下がるほど多くの利用者が同時接続できる特性があり、コーデックのビットレートを可変にして平均ビットレートを下げることは1基地局あたりの収容数（同時に通話可能な利用者数）の向上に役立っている。 EVRC の特徴は以下の通りである。 入出力のサンプリング周波数は 8 kHz/ 16 bit 入力となる音声信号の種類による可変ビットレート、8.55 kbps/4.0 kbps/0.8 kbps CELPの一種である RCELP と ACELP を使用 20 msのフレーム長 雑音抑制の機能が規格自体に組み込まれている CDMA2000 ネットワークでのサービス種別を表すサービスオプションとしては SO3（Service Option 3）が割り当てられている。 EVRC の符号化データを RTP を用いインターネット上で送るためのデータ形式は、IETF標準の RFC 4788 と RFC 5188 で定義されている 。 EVRC は 3GPP2 でのマルチメディア用ファイルフォーマットである 3G2 でも使うことができる。携帯電話での音声通信用以外に、マルチメディアメッセージングサービスやマルチメディアストリーミングサービスなどの 3GPP2 で定義された各種マルチメディアサービスで使用することができる。 EVRC のコアとなる技術は、ベル研究所が開発した以下の2つのアルゴリズムを組み合わせたものである。 雑音抑制アルゴリズム RCELP（Relaxed CELP）アルゴリズム 携帯電話を雑音の多い野外や車の中で使うケースは多いが、携帯電話で使われているCELPなどの音声符号化アルゴリズムは音声信号を特定の音声モデルにあてはめパラメータ化を行うため、雑音が含まれるとパラメータ化がうまく行えず音質は悪化する。特にパラメータの冗長度が低い低ビットレートの場合に音質の劣化が激しくなる。雑音抑制はこのような劣化を軽減するためのものである。 雑音抑制の機能はコーデックのフロントエンドとして使われ、大まかには以下のアルゴリズムを用いて雑音を抑制する 。 時間領域の信号を周波数領域の信号に変換 周波数ごとのエネルギーを推定 周波数ごとの背景雑音を推定 周波数ごとのエネルギーと背景雑音の平均値とから周波数ごとのSN比を推定 必要に応じ推定SN比の値を補正 推定SN比の値を用いて入力信号をフィルタリング 時間領域の信号に変換 信号の音声部分の周波数ごとのエネルギーは時間/周波数で大きく変化するのに対し背景雑音は比較的一定なのを利用し、背景雑音の推定を行う。 雑音が多い周波数は推定SN比が低くそうでない周波数は高くなるので、推定SN比の低い周波数の信号を弱めることで雑音の抑制を行う。 RCELP（Relaxed CELP）は音声符号化で良く使われるCELPを改良し符号化の圧縮率を高めたアルゴリズムで、1993年にベル研究所のクレイジン（W.B. Kleijn）らが発表した 。 元となる CELP は、人間の音声を声道に相当する線形予測フィルターと声帯に相当する適応型と固定型のコードブックとでモデル化する。合成による分析（analysis-by-synthesis）の手法を用い、音声波形を再合成し元の信号とを比較することで、コードブックから誤差が最小になるものを探索する。 CELP では元の信号をそのまま比較対象とするのに対し、RCELP はその制限を緩め、時間軸方向に波形を修正した信号を比較対象にする手法である。 一般に、人間の音声の大部分はほぼ同じ波形の特定周波数（ピッチ周波数）での繰り返しからなる。ピッチ周波数は細かい周期で変動しているため、この波形を忠実に再現しようとすると 5 ms 程度の短い周期での分析と符号化が必要になり、必要な情報量が増加してしまう。 20 ms 程度の周期で分析と符号化を行えば情報量は削減できるが、合成による分析の手法を用いた場合、ピッチ周波数の誤差のため実信号との比較がうまくできず音質が低下する。 RCELP ではピッチ周波数の細かい変動を無視し 20 ms 程度の大まかな周期でピッチ周波数の分析と符号化を行い、その間は実際のピッチ周波数との誤差分だけ元の信号を時間軸方向に修正することで、合成による分析の手法を用いた場合の音質低下を避ける。 ピッチ周波数の細かい変動を無視しても聴感上の音質はほとんど変わらないことが分かっており 、 元信号の修正のため符号化時の演算量は増加するが、音質を低下させることなく情報量を削減することができる。 EVRC では、入力信号自体を修正するのではなく、線形予測フィルターを通した後の残差信号を時間軸方向に修正している 。 また、固定コードブックの表現方法として演算量とメモリ使用量が少ない ACELP の形式を用いている。 オリジナルの EVRC とそのマイナーチェンジである EVRC-A（規格名 3GPP2 C.S0014-A）をベースに、様々な拡張が加えられた仕様が 3GPP2 で定義されている。EVRC-B と EVRC-WB は 4GV（fourth generation vocoder）の名称で呼ばれることがある 。 EVRC-B（EVRC revision B、規格名 3GPP2 C.S0014-B）は、いくつかの新しい符号化アルゴリズムを EVRC に追加して平均ビットレートをさらに下げ、また基地局側から音質と平均ビットレートの制御を行えるようにしたものである。 EVRC と比べ1基地局当たりの収容数を増やすことができ、また音質とのバランスを取りながら収容数の調節ができる特徴がある。CDMA2000 ネットワークでのサービス種別を表すサービスオプションとして、EVRC と同じ動作を行う SO3（Service Option 3）、および拡張機能が有効な SO68（Service Option 68）が割り当てられている 。 符号化アルゴリズムとして、 EVRC で使われているアルゴリズム以外に、PPP（Prototype-Pitch-Period）、及び NELP（Noise-Excited-Linear-Prediction）と呼ばれるアルゴリズムが追加された。 PPP（Prototype-Pitch-Period）は有声音のフレームの符号化に使われ、音声信号をフルレートの 1/4 で符号化できる。人間の有声音は、声帯からのほぼ周期的な音が声道の周波数特性によって加工されたもので、よく似た波形の周期的な繰り返しになる。PPP では基本的な波形（Prototype）やその変化を周波数領域でうまくパラメータ化し、復号時にはそれらから元の波形を復元することで、CELP よりも情報量の低減を行う。 NELP（Noise-Excited-Linear-Prediction）は雑音を音源とする線形予測符号化で、無声音のフレームの符号化に使われ、音声信号をフルレートの 1/4 で符号化できる。 これらのアルゴリズムとオリジナル EVRC の RCELP アルゴリズム（フルレート/ハーフレート）とを組み合わせ、音声信号の内容と要求される平均ビットレートとを考慮しながら切り替えて使うことで、音質の低下を抑えながらビットレートを低減する。 平均ビットレートは基地局側が指示する「動作点」（operating point、パラメータ名 "RATE_REDUC"）で制御する。動作点は 0 から 7 までの値で、基地局当たりの収容数や携帯電話と基地局との間の無線状態など通信ネットワーク側の状態と、要求される通信品質（QoS）により決められる。平均ビットレートは動作点 0 が最も高く 1、2 と順次低くなり、また音声の品質も同様に低下する。 平均ビットレートは音声の内容により変わるが、動作点と平均的な会話での想定平均ビットレート（符号化のレート）との関係は以下のようになる 。 これらの符号化データは CDMA2000 ネットワークのレートセット1（9.6 Kbps を基準とする通信レート）でのフレームレート 9600 bps、4800 bps、2400 bps、1200 bps を使い送受信される。 EVRC-WB（EVRC wideband、規格名 3GPP2 C.S0014-C）は、EVRC-B を広帯域化した規格である 。 EVRC-B と同等のビットレートで、通常の電話インタフェースの 2 倍の 50Hz から 7 kHz までの音声信号（サンプリング周波数 16 kHz）を扱うことができる。また、音声以外のオーディオ信号を扱うモードがあり、音楽や着信音の符号化に用いることができる。 CDMA2000 ネットワークでのサービス種別を表すサービスオプションとしては、EVRC と同じ動作を行う SO3（Service Option 3）、EVRC-B と同じ動作を行う SO68（Service Option 68）と共に、拡張機能が有効な SO70（Service Option 70）が割り当てられている。 EVRC-WB では、Spectral Band Replication などでの基本的なアイデアと同様、音声信号でのほとんどの情報が含まれる 4 kHzまでの低域の信号を EVRC-B をわずかに改良したアルゴリズムで符号化し、比較的情報量の少ない 3.5 kHz-7 kHz の高域の信号はスペクトルとゲインの情報のみを符号化して、受信側で高域の情報を低域成分から予測復元する。低域と高域の繋がりを滑らかにするため両方の帯域には 500 Hz のオーバーラップがある。高域成分は 800 bps に符号化され、改良したアルゴリズムでビットレートが下げられた低域成分の符号化データと共に1つにまとめられる。 EVRC-WB（Service Option 70）の動作点と平均的な会話での想定平均ビットレート（符号化のレート）との関係は以下のようになる 。 EVRC-NB（EVRC narrowband-wideband、規格名 3GPP2 C.S0014-D）は、EVRC-B と EVRC-WB を統合した規格である。サービスオプションの切り替えを行うことなく、様々なビットレートの狭帯域音声と 50Hz-7 kHz の広帯域音声とを扱うことができる。 CDMA2000 ネットワークでのサービス種別を表すサービスオプションとして、それまでの仕様と互換性のある SO3（Service Option 3）、SO68（Service Option 68）、SO70（Service Option 70）と共に、拡張機能が有効な SO73（Service Option 73）が割り当てられている 。 EVRC-NW（Service Option 73）の動作点と平均的な会話での想定平均ビットレート（符号化のレート）との関係は以下のようになる 。