音声符号化
音声符号化(おんせいふごうか、)は、アナログの音声信号をデジタル符号化するための技術で、音声の性質を使ってデータ圧縮を行うことに特徴がある。音楽などの一般的なオーディオ信号を対象とするMP3などのオーディオ圧縮技術は、人間の聴覚心理学上の特性やデータの冗長性を利用して不要なデータの除去を行うが、音声符号化ではそれに加えて音声固有のモデル化を行うことができるため、さらにビットレートを下げることが可能である。
音声符号化の技術は異なった多くの分野で使われている。代表的なのは、携帯電話、衛星電話、VoIPなど通信の分野だが、暗号化、放送、記録（Blu-ray Discなど）の分野や音声応答システムなどの音声処理の分野などで使用されている。
人間の声は、音源である声帯の音の特性や有声・無声の区別と、咽喉と口腔、鼻腔、舌、唇などの調音器官(声道)の共鳴による周波数選択特性でモデル化できる。音声波形はかなり早い振動成分を含むが、調音機構などの動きはそれと比べると比較的緩やかであり、それらを適切にパラメータ化することができれば、必要なデータを大幅に減らすことができる。
音声符号化は、通常のオーディオ圧縮技術と、音声をモデル化するパラメータを音声信号処理により抽出する技術とを組み合わせたものである。
音声符号化のアルゴリズムは大きく以下のように分けることができる。
波形符号化は音声固有のモデル化を行わない方法で、比較的音質は高いが圧縮率は低い。
分析合成符号化(ボコーダー)とハイブリッド符号化は、声帯に相当する音源と声道の特性を表す合成フィルターとで音声をモデル化する方法である。ハイブリッド符号化と分析合成符号化とは基本となる原理が似ているため、パラメトリック符号化()や(広義の)ボコーダーとしてまとめて扱われることもある。分析合成符号化は、聴感上同じ音声に聞こえるようにパラメータ化するのに対し、ハイブリッド符号化では音声波形に近づけることを目標に音源パラメータが決められる。
一般的に言って、波形符号化と比較するとハイブリッド符号化は圧縮率が高く、分析合成符号化は音声波形の再現を目指さない分さらに圧縮率が高い。分類ごとの特性をまとめると以下のようになる。
波形符号化()は、音声固有のモデル化を行うことなく音声波形などを忠実に符号化しようとする方法である。大きく分けて、時間領域で符号化を行うものと、周波数領域で符号化を行うものがある。一般に圧縮率は低いが、音楽などの音声以外の信号も音声と同じように符号化できる。
時間領域で波形を符号化する技術は最も古くからあるもので、PCM、ADPCMなどがその代表である。圧縮率は低いが、比較的単純に符号化ができ符号化遅延もないため、主に電話回線などの符号化方式として使われてきた。
主要な符号化方式として以下のものがある。
パルス符号変調(,PCM)は最も基本となる波形符号化方式である。線形PCMと、人間の聴覚の対数的な特性を利用し信号の振幅が大きくなるほど量子化のステップ幅を大きくする非線形PCMの2種類がある。非線形PCMの規格で、圧伸特性として"μ-law"(北米・日本)及び"A-law"(欧州その他)を使用する ITU-T G.711 が電話などでの音声符号化の用途で使われている。4kHzの帯域幅を持つ電話品質の音声(標本化周波数8kHz)を64kbpsで符号化できる。
音声信号の隣り合ったサンプル間には相関があるため、過去のサンプル値を利用して現在のサンプル値を予測することができる。1つ前のサンプル値を予測値として、次のサンプル値との差分のみをコード化する差分PCM(,DPCM)を改良し、量子化幅を適応的に変化させる方式が適応差分PCM(,ADPCM)である。
規格としては、 電話品質の音声を32kbpsに符号化するITU-T G.721 が1984年に勧告され、その後16,24,32,40kbps(2～5ビット/サンプル)に符号化するITU-T G.726 が勧告された。
適応差分PCMは日本のPHS()などで使用されている。
デルタ変調（）は差分PCMの1ビット版で、1つ前のサンプル値に対するサンプル値の大小を1ビットで符号化する。デルタ変調を応用したものとして、適応デルタ変調(,ADM)、デルタ・シグマ(Δ-Σ)変調()などがある。他の方式と比べ単純なハードウェアで音声の符号化ができるため、デジタル回路が高価だった時代に考案された。
適応デルタ変調はデルタ変調の量子化幅を適応的に変化させる方式で、適応差分PCMの1ビット版にあたる。CVSD()とも呼ばれる。CVSDはMIL-STD-188-113(16kbps と 32kbps)と Federal-Standard 1023(12kbps)の規格があり、アメリカの軍事用戦術無線通信システムで暗号化通信のための音声符号化方式として使用されていた。
デルタ・シグマ変調は、伝送の途中の誤りが後々まで影響するデルタ変調の問題点を解決したもので、デルタ変調でのサンプル値の差分をとる回路と量子化を行う回路との間に積分回路を置いたものである。デルタ・シグマ変調は初期の電子式電話交換機で使われ、またAD変換及びDA変換用LSIの技術として多用されている。
周波数領域の符号化では、音声信号を周波数領域のデータに変換し、周波数ごとの電力密度の違いや人間の聴覚モデルを利用して周波数毎の量子化の幅やビット割り当てを変え、また不要な情報の削除を行う。人間の知覚上の特性を利用するため、知覚符号化（）と呼ばれることもある。この符号化方法は、CELPなど他の方式と比べビットレートが低いときの音声の品質が良くないため、主に高いビットレートでの符号化に利用され、電話会議などの比較的高い品質が必要な音声の符号化や、音楽を含む一般的なオーディオ信号の符号化のために使われることが多い。また、CELPなど他の符号化方式と組み合わせて使用する場合もある。主要な符号化方式として変換符号化やサブバンド符号化があり、MP3やAACなどのオーディオ圧縮技術としても使われている。
変換符号化()は、何らかの直交変換を用いて入力を複数の周波数領域に分解し、それぞれを符号化する方式である。適応変換符号化()と呼ばれることもある。
使用する直交変換としては、高速な処理が可能で特性の優れた離散コサイン変換(DCT)の一種である変形DCT()が使用されることが多い。電力密度とマスキング特性など人間の聴覚心理学上の特性から帯域ごとのビット配分を決める。電力密度の低い領域や人間の聴覚特性上聞こえにくい周波数領域に少ないビットを割り当てることで情報を圧縮する。次のサブバンド符号化とよく似た符号化方式だが、帯域分割数などの設定が容易で様々な直交変換を使えるため自由度が高い。
ITU-T G.722.1 annex C は離散コサイン変換によく似た Modulated Lapped Transform(MLT)と呼ばれる変換を使用し、14kHzの帯域幅の高音質の音声信号を24,32,48kbpsに符号化できる。ビデオ会議用に使われる。
サブバンド符号化()は、フィルターを用いて入力を複数の周波数領域に分解し、それぞれを符号化する方式である。各周波数領域ごとに異なったビット配分を行うことで情報を圧縮するのは変換符号化と同じである。変換符号化と考え方がよく似ているため、変形DCTなどを用いた符号化方式もサブバンド符号化とまとめて呼ぶ場合がある。
ITU-T G.722 は2つのサブバンドに分けてADPCMで符号化を行う方式で、7kHzの帯域幅の音声信号を64kbps以下に符号化できる。
周波数領域での符号化は他の符号化方式と組み合わされ、扱う周波数範囲を広げたり多くのビットレートをサポートする目的で使われることがある。例えば、SBR()は周波数領域での符号化を応用したもので、符号化の対象となる周波数領域を複数に分け、音声信号でのほとんどの情報が含まれる低域の情報を CELP などの通常の方式で符号化し、それ以上の高域の情報は大まかなスペクトル情報のみを符号化して、受信側では高域の情報を低域成分から予測復元する方法である。SBR は HE-AAC や mp3PRO などのコーデックで使われている。同様の考え方は HFR(、)の名前でも知られており、音声符号化方式として古くから研究されている
この考え方は、携帯電話用の音声符号化規格である EVRC-WB や AMR-WB、VMR-WB などに使われている。AMR-WBでは7kHzの帯域幅の音声信号を標準レート設定で 6.60kbps～12.65kbps(最大23.85kbps)に、EVRC-WB は同じ帯域幅を 8.55kbps 以下に符号化できる。
ハイブリッド符号化(, )は波形符号化と分析合成符号化とを組み合わせた方法である。分析合成符号化と同様、声帯に相当する音源と声道の特性を表す合成フィルターとして音声をモデル化しパラメータ化を行うが、声道のパラメータを用いて音声波形を再合成し、元の音声波形にできるだけ近くなるよう音源パラメータを求めることに特徴がある。"合成による分析"()をベースとすることから AbS 符号化と表現されることもある。波形符号化と比較すると、音声の適切なモデル化により比較的低いビットレート(4.8-16kbps)でも良好な音質が得られ、携帯電話など低いビットレートが要求される機器で多く使われている。
CELP(,セルプ)は、ハイブリッド符号化方式の中で最も広く使われている音声符号化アルゴリズムである。声道に相当する合成フィルターとして線形予測フィルターを、声帯に相当する音源として適応型と固定型のコードブックを使用する。合成による分析の手法を用い、音声波形を再合成し聴感補正を行った後の信号と元の信号とを比較することで、コードブックから誤差が最小になるものを探索する。合成による分析は音質の向上に大きく貢献しているが、その反面大きな計算量が必要で、最初に提案された時には実時間での符号化ができなかった。そのため、計算量を減らすための様々な派生方式が考案された。以下に代表的なCELPの派生方式を示す。
VSELP()は、複数の基底ベクトルを用意し、基底ベクトルの和(+/-)を固定型コードブックとして扱う方式である。個々の基底ベクトルごとの線形予測フィルターの出力を求めておけば、全ての基底ベクトルの和による出力はそれらの合成により求められ、計算量を大幅に削減できる。
VSELP 方式は第二世代携帯電話で主に使われ、日本ではPDC、北米ではD-AMPSの符号化方式として用いられた。
ACELP()は、あらかじめ代数的に決められた位置に配置した振幅が+1/-1のパルスの組み合わせを固定型コードブックとして扱う方式である。その代数的な性格よりコード探索の効率が良く、コードブック全体をテーブルとして用意する必要が無いためメモリも削減できる。また、柔軟性があり大きなサイズのコードブックを容易に実現できる。そのためVoIPや携帯電話用として、多くの標準化方式で広く用いられている。
ACELP 方式は、ITU-T G.723.1(5.3kbps),G.729(8kbps),G.722.2(6.6-23.85kbps),及び携帯電話用の GSM AMR(GSM/W-CDMA用),AMR-WB(W-CDMA用,AMRのワイドバンド版),EVRC(CDMA2000用),VMR-WB(CDMA2000用のワイドバンド版),SMV(CDMA2000用),PDC-EFR(PDC用)などに用いられている。
LD-CELP()は、符号化遅延を2ms以下に低遅延化した CELP である。 CELP を含む多くの符号化方式は、サンプル値を20ms程度のフレームにまとめフレーム単位で符号化の処理を行う。そのため方式によって決まる一定の符号化遅延が発生する。LD-CELP はフレーム単位の処理を行わず、過去のサンプル値から後ろ向きに線形予測係数などのパラメータを求め、また5サンプル単位でコードブック探索を行うことで低遅延化を行っている。
LD-CELP 方式は、ITU-T G.728(16kbps)で使われ、32kbpsのADPCMと同等の音質を実現している。
分析合成符号化、あるいはボコーダー(,の略)とは、人間の声のモデルを元に信号を分析してパラメータ化し符号化を行う方式で、復号時には、音声の波形ではなく聴感上同じ音声に聞こえるように再合成を行う。CELPなどの音声波形を意識した符号化方式は音声信号を比較的良い音質で符号化できるが、ビットレートが4kbps以下になると音声波形の再現が十分にできず音質が悪化する
多くの分析合成符号化方式は、1.2～4kbps程度で音声を符号化でき、方式によっては0.6kbps程度でも了解可能な音声の符号化ができる。分析合成符号化は、低いビットレートでの符号化が必要な無線通信の分野、特に衛星電話や、軍事用戦術無線通信などで使われている。
LPCボコーダー(,線形予測符号ボコーダー)は、最も初期の分析合成符号化方式で、CELPなど他の方式のベースにもなったものである。人間の声は、声道の周波数選択特性と音源である声帯などの音の特性や有声・無声の区別でモデル化できる。有声時、声帯からは特定の周波数("ピッチ周波数")のブザーのような音が生成され、無声時には口腔、舌、歯、唇などの調音器官からスペクトルの広い雑音が生成される。
LPCボコーダーはこれらの考え方を素直にモデル化したもので、声道に相当する合成フィルターのパラメータとして線形予測(LP)フィルターの係数を、音源のパラメータとしては声帯のピッチ周波数と有声・無声の区別とを使用する。復号を行う際、有声時には指定されたピッチ周波数の特定波形のパルス波の列を、無声時にはホワイトノイズを音源として用い、線形予測フィルターを通すことで音声を再合成する。LPCボコーダーの基礎となる技術は1960年代から1970年代にかけて開発された
LPCボコーダーを用いた初期の規格としては1976年の Federal-Standard 1015(LPC-10e)があり、音声を2.4kbpsで符号化できた。主に軍用・政府用の暗号化通信に使用された。
古典的なLPCボコーダーを改良するために考案された様々な分析合成符号化方式が存在する。以下にその例を挙げる。
Multi-Band Excitation(マルチバンド励振)は、異なった周波数ごとに有声・無声の区別をパラメータ化する方式である。通常、線形予測フィルターと組み合わせて使用する。人間の声の有声・無声の区別は単純ではなく、周期的な成分(有声音)と雑音成分(無声音)とが混じっていることも多い。この方式では音声信号をいくつかの周波数領域に分け、各領域ごとに有声・無声の判定を行うことでより自然な音声の再合成を行う。また、この方式はノイズが多い環境での有声・無声の判定間違いの音質への影響がLPCボコーダーと比べ小さいため、野外やヘリコプター内などのノイズが多い環境にも向いている
Multi-Band Excitationの考え方を応用した符号化方式として、IMBE(),AMBE()が、関連する符号化方式としてMELP()とそれを改良したMELPe()がある。
IMBE と AMBE は米 Digital Voice Systems 社が開発した符号化方式で、3.6kbps AMBE は 8kbps VCELP と同等の音質だと言われている
。詳細なアルゴリズムは公開されていない。主に衛星電話やアマチュア無線でのデジタル通信(D-STAR)で使用されている。
MELPe は、1996年に LPC-10e の代替として標準となった 2.4kbps MELP をさらに改良したもので、0.6,1.2,2.4kbpsで音声を符号化できる。 MELP、MELPeとも音声入力は5つの周波数領域に分け有声・無声のパラメータ化を行う。1.2kbps MELPe は、2.4kbps Federal-Standard 1015(LPC-10e)より優れた音質で、特にノイズが多い環境での特性が優れている
2.4kbps MELP は最初、米軍用のMIL-STD-3005 で規格化され、その拡張版である MELPe は米軍/NATO軍の共通規格として STANAG4591 で規格化された。主に軍用の暗号化戦術無線通信システムや政府用の暗号化電話のための音声符号化方式として使用されている。
Sinusoidal Coding(正弦波符号化)は、音声を正弦波の組み合わせとして表現する方法である。また、このようなモデル化を複合正弦波モデル()と呼ぶこともある。フーリエ変換と異なり、組み合わせる正弦波の周波数は整数倍の関係でなくとも構わない。また、音声波形の再現ではなく、再合成した音声が同様に聞こえるよう符号化を行う。人間の声はいくつかのフォルマント周波数で特徴付けられ、例えば母音の認識は音声波形ではなくフォルマント周波数の組み合わせで認識していると言われている。周波数領域のパラメータを用いることで、聴覚上より自然にパラメータ化を行えることが期待できる。
正弦波符号化の基本的な考え方は、複数の正弦波の周波数、振幅、位相の組で音声をパラメータ化することである。単純には、離散フーリエ変換(DFT)で周波数解析を行い、そのピーク値を取り出すことで分析を行う。パラメータがランダムに変動する音とそうでない音として無声・有声の区別もモデル化できる。
現実には、全ての正弦波をそのままパラメータ化するとビットサイズが大きくなり、またデータレートも一定にならないため、様々なモデルや他の符号化方式の考え方を組み合わせ、パラメータを単純化する。例えば、有声音は声帯音の基本周波数の倍音の組み合わせとモデル化でき(Harmonic Coding)、周波数はより単純な形で表現できる。また、声帯音をパルス波の列と考えれば、音源の位相は0、振幅は一定とモデル化でき、最終的な正弦波の振幅と位相は声道の特性のみを考えればよくなる。加えて、声道の特性をパラメータ化し、各正弦波の振幅を線形予測係数を用いて表現することもできる。
人間の有声音は、声帯からのほぼ周期的な音が声道の周波数特性によって加工されたもので、よく似た波形のピッチ周波数での繰り返しになる。波形の変化は緩やかなので、基本的な波形やその変化をうまくパラメータ化できれば、情報を大幅に減らすことができる。波形補間符号化はこのような考え方に基づく符号化方式である。有声・無声は、ゆっくり変化する波形とランダムな位相で素早く変化する波形としてモデル化できる。
波形補間符号化は、例えばEVRC-B（CDMA2000方式携帯電話用）の符号化方式の一部として利用されている
音声符号化に関連した技術の内、重要なものを以下に示す。
音声符号化の処理で求めた各種パラメータを効率的に量子化してビットレートを減らすために最もよく使われる技術がベクトル量子化(,VQ)である。内部で計算した個々のパラメータを別々に量子化するのではなく、パラメータ間の相関関係を利用しまとめて量子化することで総ビット数を減らすことができる。例えば、内部で計算した線形予測係数を特定のビット数に量子化する際など、音声符号化方式の多くで使用されている。
ベクトル量子化の応用として、量子化を複数のステージに分け、最終的な量子化ベクトルを複数のステージごとのコードブックの和として表すマルチステージベクトル量子化などの技術が開発されている。
線スペクトル対()は、線形予測係数を表現するために用いられるもので、線形予測係数を用いる符号化方式の多くで使われている。線形予測フィルターの係数は量子化誤差に敏感で、誤差が大きいとフィルターが発振する問題がある。線スペクトル対は線形予測係数と等価な係数で、線スペクトル対で表現されたフィルターは量子化誤差の影響が少なく、また線形予測係数と比較して変化が滑らかで補間が行いやすい。そのため、CELPに代表される多くの音声符号化方式で線形予測係数の表現のために利用されている。
理論的には、声道を固定長で一定の直径を持つ音響管の並びとしてモデル化した時、線スペクトル対は声門を開いたときと閉じたときそれぞれでの共振周波数のペアに当たるパラメータで、そのため線スペクトル対と呼ばれている。
音声強調（）は、様々なアルゴリズムを用いて音質を改善するための技術である。音声符号化ではバックグラウンドノイズを減らすための技術として主に用いられる。
分析合成符号化方式やハイブリッド符号化などの多くの音声符号化方式では、音声を何らかのモデルに当てはめパラメータ化を行うため、音声信号にバックグラウンドノイズが含まれるとパラメータ化がうまく行えず、音質が悪化する。そのため、携帯電話や無線通信など比較的低いビットレートの符号化方式が使われる機器では、何らかの音声強調処理を行った後に符号化を行う場合が多い。また、音声認識などのフロントエンドとしても良く使われる。
音声信号は信号レベルの変動が大きく周波数ごとのレベル差も大きいのに対しバックグラウンドノイズは変動が比較的小さい、などの統計的な性質の違いを利用し、サブバンドごとのバックグラウンドノイズのレベルを予測して、バックグラウンドノイズの大きいサブバンドのレベルを下げることで、全体のノイズを減らすことができる。
音声強調は、携帯電話用の符号化方式である(CDMA2000用)、(CDMA2000用)などや、ノイズの多い環境での利用を前提とした MELPe などで、符号化方式の一部として組み込まれている。
音声通信技術の歴史は19世紀の末のグラハム・ベルによる電話機の発明(1876)から始まる。電話機は音声の波形をそのまま伝送するものだが、音声信号に何らかの加工を行って伝送する技術としてはボコーダーがあり、その基本的な考え方は現在の多くの音声符号化方式に大きな影響を与えている。
元々のボコーダーはアナログ音声通信での音声圧縮技術として生まれたもので、アメリカのベル研究所のホーマー・ダッドリー(Homer Dudley)によって1928年に基本的なアイデアが発案された。当時の電信用大陸間横断ケーブルが伝送可能な周波数帯域はせいぜい100Hz程度で、3000～4000Hzの帯域を持つ音声を大陸間で直接送ることができず、音声をより狭い帯域で送るために考え出された。
音声波形はかなり早い振動成分を含むが、声帯や咽喉と口腔、舌などの調音機構などの動きはそれと比べると比較的緩やかであり、それらを適切にパラメータ化することができれば、必要な帯域を大幅に減らすことができる。
ダッドリーはこの考え方を基に、音声の周波数スペクトルを複数のチャネルに分けバンドパスフィルタで分析して、声帯の音の基本周期(ピッチ)や有声・無声の区別と共に送り、受信側で音声を合成するチャネルボコーダーを1939年に発表した。
また、音声を合成する部分と鍵盤とを組み合わせ、鍵盤演奏型のスピーチシンセサイザーであるボーダー()として1939年のニューヨーク・ワールドフェアで一般公開した。チャネルボコーダーは当時の技術水準では大掛かりな装置となってしまい、また音声の品質が悪く機械的な声になってしまうため、民間で使われることはなかったが、第二次世界大戦中の1943年、チャーチル首相とルーズベルト大統領の秘密会談用の秘話通信システム SIGSALY として実用された。
SIGSALY はチャネルボコーダーの各チャネルの出力を6段階に対数量子化し、PCM符号化した後に暗号化して送信を行うもので、PCM を利用した最初の実用的な音声通信システムであり、分析合成符号化(ボコーダー)をデジタル通信に応用した最初の例でもあった。この装置の重さは約55トン、消費電力は30kWに上り、とても民間で使えるようなものではなかった。
同じような軍事用のデジタル秘話通信システムは1940年代から1960年代にかけて使用された。
その後デジタル信号処理の技術進歩により、1966年頃に板倉文忠らによる線形予測符号化()方式が考案され、1970年代頃にはこれを応用した機器が作られた。1985年にはCELP符号化方式が発表された。これらにより音声の品質が向上し、コンピュータの小型化・高性能化に伴い、多くの機器で使用されるようになった。