μ-lawアルゴリズムは対数を用いたコンパンディングアルゴリズムの一種である[1]。他のコンパンディングアルゴリズムと同様、信号のダイナミックレンジを低減させる。アナログでは、S/Nを向上させる効果があり、デジタルでは量子化誤差を低減させる(結果としてS/Nが向上する)。S/N向上と引き換えに帯域幅が狭くなる。
主に北アメリカと日本のデジタル通信システムに使われている。ヨーロッパでは、類似するA-lawアルゴリズムを使っている。
アルゴリズム
アルゴリズムには、アナログ版と量子化されたデジタル版がある。
連続
入力 x に対する μ-law 符号化は、以下の式で表される[2]。
μ-law の伸張は以下の逆関数で与えられる。
μを増加させると強い信号がより圧縮される(図参考)。
離散
これは、ITU-T勧告 G.711 に定義されている[3]。
G.711 では、境界にある値の扱いが不明確である(例えば、+31 は 0xEF なのか 0xF0 なのか)。しかし、G.191 にあるC言語によるμ-lawエンコーダの例は、以下のようになっている。正の値と負の値の違いに注意が必要である。例えば、+30 から +1 の範囲に対応する負の範囲は -31 から -2 である。これは、2の補数ではなくむしろ1の補数(単純なビット反転)で説明できる。
量子化 μ-law アルゴリズム
14ビットの二進線形入力符号 |
8ビットの圧縮済み符号
|
+8158 から +4063 まで、256毎の16インターバル |
0x80 + インターバル数
|
+4062 から +2015 まで、128毎の16インターバル |
0x90 + インターバル数
|
+2014 から +991 まで、64毎の16インターバル |
0xA0 + インターバル数
|
+990 から +479 まで、32毎の16インターバル |
0xB0 + インターバル数
|
+478 から +223 まで、16毎の16インターバル |
0xC0 + インターバル数
|
+222 から +95 まで、8毎の16インターバル |
0xD0 + インターバル数
|
+94 から +31 まで、4毎の16インターバル |
0xE0 + インターバル数
|
+30 から +1 まで、2毎の15インターバル |
0xF0 + インターバル数
|
0 |
0xFF
|
-1 |
0x7F
|
-31 から -2 まで、2毎の15インターバル |
0x70 + インターバル数
|
-95 から -32 まで、4毎の16インターバル |
0x60 + インターバル数
|
-223 から -96 まで、8毎の16インターバル |
0x50 + インターバル数
|
-479 から -224 まで、16毎の16インターバル |
0x40 + インターバル数
|
-991 から -480 まで、32毎の16インターバル |
0x30 + インターバル数
|
-2015 から -992 まで、64毎の16インターバル |
0x20 + インターバル数
|
-4063 から -2016 まで、128毎の16インターバル |
0x10 + インターバル数
|
-8159 から -4064 まで、256毎の16インターバル |
0x00 + インターバル数
|
実装
μ-lawアルゴリズムの実装には、以下の3種類がある。
- アナログ
- コンパンディングをアナログで行う。
- 非線形ADC
- アナログ-デジタル変換回路での量子化の際にμ-lawアルゴリズムを使う。
- デジタル
- デジタルでμ-lawアルゴリズムを適用する。
利用
北アメリカおよび日本でのデジタル通信システム規格では μ = 255(8ビット)のμ-lawアルゴリズムが利用されている。
背景
この符号化を使うのは、音声のダイナミックレンジが広いためである。アナログでは、ある一定の背景雑音が混じることで、信号の詳細が失われる。元々音の信号であるため、人間の聴覚は対数的に音の強さ(音の大きさ)を知覚するという事実を利用し、対数応答オペアンプを使って信号を対数的に圧縮する。電気信号にノイズが乗るのは主に信号線上であり、対数的に圧縮してからノイズが乗っても、信号を元に戻したときに音の大きい部分は確実に大きく知覚される。この手法は電気通信でデジタル化以前からよく使われ、μ-law 仕様が規格間の互換性のために定義された。
デジタルが使われるようになると、以前から使っていたアルゴリズムが音声を表す信号に必要なビット数の削減にも効果があることがわかった。μ-lawを使うと、標本を8ビットで表すことができ、コンピュータの処理単位とも一致した。
μ-law 符号化は、信号のダイナミックレンジを効率的に低減させ、同じビット数で線形符号化で信号を送った場合に比べて、S/Nを低減させることができる。
μ-lawアルゴリズムは、Sunオーディオファイルでも使われ、UNIXにおけるデファクトスタンダードとして使われた。Sunオーディオファイルのフォーマットは、Java 1.1 の sun.audio
パッケージや一部のC#メソッドでもオーディオAPIとして使われている。
A-lawとの比較
μ-law は A-law よりも若干ダイナミックレンジが広いが、微細な信号の歪みが大きくなる。規定により、1カ国でもA-lawを使う国があれば、国際接続ではA-lawが使われる。
関連項目
脚注
外部リンク