| G.711 | |
|---|---|
| 音声周波数のパルス符号変調(PCM) | |
| 状態 | 有効 |
| 年が始まった | 1972 |
| 最新バージョン | (02/00) 2000年2月 |
| 組織 | ITU-T |
| 関連規格 | G.191、G.711.0、G.711.1、G.729 |
| ドメイン | オーディオ圧縮 |
| Webサイト | https://www.itu.int/rec/T-REC-G.711 |
| 浮動小数点形式 |
|---|
| IEEE 754 |
| 他の |
| 代替案 |
| テーパード浮動小数点 |
G.711は、元々電話用に設計された狭帯域オーディオコーデックで、64 kbit/sで市外局番レベルの音質を提供します。これは、音声周波数のパルス符号変調(PCM)という名称で1972年に公開された 、音声符号化に関するITU-T標準(勧告)です。
G.711 は、300~3400 Hz の周波数帯域でオーディオ信号を渡し、8000 Hzのレートでサンプリングします。そのレートの許容範囲は 50 ppm ( parts per million ) です。
2つの異なる対数圧縮アルゴリズムのいずれかを使用します。1つは主に北米と日本で使用されているμ-law 、もう1つは北米以外のほとんどの国で使用されているA-lawです。圧縮された各サンプルは8ビットとして量子化され、ビットレートは64 kbit/sになります。
G.711は、 H.320やH.323規格など、多くの技術で必須の規格です。[ 1 ]また、IPネットワーク経由のFAX通信にも使用できます( T.38仕様で定義)。
G.711 の 2 つの機能強化が公開されました。G.711.0はロスレス データ圧縮を利用して帯域幅の使用量を削減し、G.711.1 は帯域幅を増やすことでオーディオ品質を向上させます。
G.711は、 μ-lawアルゴリズムとA-lawアルゴリズムという2つの主要な圧縮伸長アルゴリズムを定義しています。どちらも対数圧縮ですが、A-lawはコンピュータ処理を簡素化するために特別に設計されています。この規格では、0 dBの電力レベルを定義する繰り返しコード値のシーケンスも定義されています。
μ-lawアルゴリズムとA-lawアルゴリズムは、それぞれ14ビットと13ビットの符号付き線形PCMサンプルを対数8ビットサンプルにエンコードします。したがって、G.711エンコーダは8kHzでサンプリングされた信号に対して64kbit/sのビットストリームを生成します。[ 1 ]
G.711 μ-law は高範囲の信号に高い解像度を与える傾向があり、G.711 A-law は低信号レベルでより高い量子化レベルを提供します。
PCMU、G711u、G711MUという用語はG.711 μ-lawにも使用され、PCMAとG711AはG.711 A-lawにも使用されます。[ 2 ]
したがって、A-law エンコーディングは 13 ビットの符号付き線形オーディオ サンプルを入力として受け取り、次のようにそれを 8 ビット値に変換します。
| 線形入力コード[注 1 ] | 圧縮コードXOR 01010101 | 線形出力コード[注 2 ] |
|---|---|---|
s0000000abcdx | s000abcd | s0000000abcd1 |
s0000001abcdx | s001abcd | s0000001abcd1 |
s000001abcdxx | s010abcd | s000001abcd10 |
s00001abcdxxx | s011abcd | s00001abcd100 |
s0001abcdxxxx | s100abcd | s0001abcd1000 |
s001abcdxxxxx | s101abcd | s001abcd10000 |
s01abcdxxxxxx | s110abcd | s01abcd100000 |
s1abcdxxxxxxx | s111abcd | s1abcd1000000 |
ここでs、 は符号ビット、はその逆数(つまり、正の値はMSB = ss = 1でエンコードされます )、 マークされたビットは破棄されます。表の最初の列では、3番目の列とは異なる負の値の表現が使用されていることに注意してください。たとえば、入力された10進数値-21は、ビット反転後に2進数で1000000010100と表され、表の最初の行によると00001010にマッピングされます。デコードすると、これは1000000010101にマッピングされ、10進数では出力値-21として解釈されます。入力値+52(2進数では0000000110100)は10011010にマッピングされ(2行目によると)、これは0000000110101(10進数では+53)にマッピングされます。 x
これは、 4ビットの仮数部m(5ビット精度に相当)、3ビットの指数部e、1ビットの符号ビットsを持つ浮動小数点数として見ることができ、式で与えられる デコードされた線形値yでフォーマットされます。seeemmmm
これは±1から±(2 12 − 2 6 )の範囲の13ビット符号付き整数です。0.5(量子化ステップの半分)が追加されるため、圧縮コードはゼロにデコードされないことに注意してください。
さらに、この規格では、オクテットを送信する前に、結果として得られるすべての偶数ビット( LSBが偶数)を反転することが規定されています。これは、PCM受信機におけるクロックリカバリ処理を容易にするために、十分な0/1遷移を提供するためです。したがって、A-lawで符号化されたサイレントPCMチャネルでは、8ビットサンプルのオクテットは0x80ではなく0xD5で符号化されます。
E0 ( G.703 )でデータが送信される場合、最初に MSB (符号) が送信され、最後に LSB が送信されます。
ITU-T STL [ 3 ]は、デコードアルゴリズムを次のように定義しています(デコードされた値は16ビット出力データ型の最上位13ビットに格納されます)。
void alaw_expand ( lseg 、logbuf 、linbuf ) long lseg ; short * linbuf ; short * logbuf ; { short ix 、mant 、iexp ; long n ;for ( n = 0 ; n < lseg ; n ++ ) { ix = logbuf [ n ] ^ ( 0x0055 ); /* トグルされたビットを再度トグルする */ix &= ( 0x007F ); /* 符号ビットを削除 */ iexp = ix >> 4 ; /* 指数を抽出 */ mant = ix & ( 0x000F ); /* 仮数部を取得 */ if ( iexp > 0 ) mant = mant + 16 ; /* 指数 > 0 の場合は先頭に '1' を追加 */mant = ( mant << 4 ) + ( 0x0008 ); /* 仮数部が左揃えになり、 */ / * 1/2 量子化ステップが追加されました */ if ( iexp > 1 ) /* 指数に応じて左シフトされます */ mant = mant << ( iexp - 1 );linbuf [ n ] = logbuf [ n ] > 127 /* 負のサンプルの場合は反転 */ ? mant : - mant ; } }また、「ITU-Tソフトウェアツールライブラリ2009ユーザーズマニュアル」も参照してください。[ 4 ]
μ-law (ulaw、G.711Mu、または G.711μ と呼ばれることもあります) エンコーディングは、2 の補数表現の 14 ビット符号付き線形オーディオ サンプルを入力として受け取り、値が負の場合は符号ビットの後のすべてのビットを反転し、33 (2 進数 100001) を追加して、次のように 8 ビット値に変換します。
| 線形入力値[注 1 ] | 圧縮コードXOR 11111111 | 線形出力値[注2 ] |
|---|---|---|
s00000001abcdx | s000abcd | s00000001abcd1 |
s0000001abcdxx | s001abcd | s0000001abcd10 |
s000001abcdxxx | s010abcd | s000001abcd100 |
s00001abcdxxxx | s011abcd | s00001abcd1000 |
s0001abcdxxxxx | s100abcd | s0001abcd10000 |
s001abcdxxxxxx | s101abcd | s001abcd100000 |
s01abcdxxxxxxx | s110abcd | s01abcd1000000 |
s1abcdxxxxxxxx | s111abcd | s1abcd10000000 |
sは符号ビットで、マークされたビットはx破棄されます。
さらに、この規格では、オクテットが送信される前にエンコードされたビットが反転されることが規定されています。したがって、サイレントμ-lawエンコードされたPCMチャネルでは、8ビットのサンプルはオクテットの0x00ではなく0xFFとして送信されます。
すべての値が圧縮グループに収まるように 33 を追加し、デコード時にそれが差し引かれるようにする必要があります。
エンコードされた値をseeemmmm4ビットの仮数部m、3ビットの指数部e、1ビットの符号ビットsに分解すると、デコードされた線形値yは式
これは、±0 から ±8031 の範囲の 14 ビットの符号付き整数です。
0 は 0xFF として送信され、-1 は 0x7F として送信されますが、受信時にはどちらの場合も結果は 0 になることに注意してください。
G.711.0(G.711 LLCとも呼ばれる)は、ロスレスデータ圧縮を利用して帯域幅の使用量を最大50%削減します。[ 5 ] G.711パルス符号変調規格のロスレス圧縮は、2009年9月にITU-Tによって承認されました。[ 6 ] [ 7 ]
G.711.1 「G.711パルス符号変調のための広帯域埋め込み拡張」は、G.711のより忠実度の高い拡張であり、2008年に批准され、2012年にさらに拡張されました。[ 8 ]
G.711.1は、G.711コアストリーム(レイヤー0)の上に、一連の拡張レイヤーを付加することができます。レイヤー1は、同じ4kHzの狭帯域で16ビットオーディオを符号化し、レイヤー2はMDCTを用いて8kHzの広帯域を符号化します。各レイヤーは、64kbpsのコアに加えて、固定の16kbpsを使用します。これらは併用することも単独で使用することもでき、それぞれが前のレイヤーとの差分を符号化します。2012年に承認されたレイヤー3は、レイヤー2を16kHzの「スーパーワイドバンド」に拡張し、レイヤーの独立性を維持しながら、最高周波数帯域でさらに16kbpsのビットレートを可能にします。ピークビットレートは、オリジナルのG.711.1では96kbps、スーパーワイドバンドでは112kbpsになります。レイヤーを識別または分離する内部的な方法は定義されておらず、実装によってパケット化またはシグナリングされます。[ 9 ] [ 10 ]
忠実度レイヤーのセットを理解しないデコーダーは、非コア パケットをそれに影響を与えることなく無視またはドロップできるため、変更なしで任意の G.711 (または元の G.711.1) テレフォニー システム全体で正常な劣化が可能になります。
2012年には、G.711.0ロスレスが新しい忠実度レイヤーに拡張されました。G.711.0と同様に、効率性のためにG.711.0の完全な下位互換性は犠牲になっていますが、G.711.0対応ノードは、理解できないレイヤーパケットを無視またはドロップする可能性があります。
1972年に公開されたG.711の特許は期限切れとなっているため、ライセンスなしで使用できる可能性があります。[ 1 ]
alaw_expandファイル内のSoftware/stl2009/g711/g711.c。Itu.int。2013年9月18日閲覧。