音声圧縮処理の基本 ―― 音楽CDやWAVファイルで使われている波形符号化方式
tag: 組み込み ディジタル・デザイン Interface
技術解説 2010年7月22日
2.log-PCM
音声には,小振幅の部分と大振幅の部分があります.人間は,小振幅の音声においては小さな変化でも知覚できますが,大振幅の音声では小さな変化はほとんど知覚できません.そこで,音声の小振幅部分は細かく,大振幅部分は粗く量子化すれば,少ないビット数でも音質の劣化を知覚的に抑えることができます.
このような方法としてlog-PCM(3)があります.log-PCMは主に固定電話に用いられています.log-PCMでは,入力音声の振幅を対数変換し,変換後の音声に対して一様量子化を実行します.図9に音声入力とlog-PCM出力の関係を示します.
log-PCMが音声に効果的であることをより明確にするために,音声波形の各値が何回現れたかを図10のヒストグラムに示します.音声は0近辺の小振幅信号の出現回数が圧倒的に多いので,小振幅部分を詳細にとらえられるlog-PCMが有効であることが分かります.
横軸に音声波形の各値,縦軸にそれらの値の出現回数を取る.
log-PCMでは,圧縮された音声を元に戻すために,圧縮と逆の手順となる復号の操作が必要になります.これを圧縮に対して伸張と呼ぶことがあります.
log-PCMの対数特性の決め方には自由度があるので,同様に伸張の方法も各方式によって異なります.代表的な対数特性として,A法則(A-law方式)とμ法則(μ-law方式)が知られています.
A法則はヨーロッパを中心に電話線上で使用されています(図11).また,μ法則は日本や米国における電話線上に広く使われています(図12).いずれも量子化は8ビットです.
●Scilab演習 ---- log-PCMを実行する
音声データに対して,3ビットのlog-PCMを実行してみましょう.ここでは,日本の電話線で用いられるμ-lawを実装します.Scilabのプログラムをリスト3に示します.
リスト3の①で音声信号とその情報を読み込みます.リスト3の②により,得られた音声信号sを式(3)に代入してF(s)を得ます.
F(s)を3ビットで一様量子化するとlog-PCM信号yが得られます.リスト3の③のように,yを式(4)に代入すれば伸張結果が得られます.
結果の波形を図13に示します.PCMよりはノイズが少ないものの,log-PCMにおいても3ビットでは音声波形の保存には不十分であることが分かります.
●Scilab演習 ---- 関数を使ってlog-PCMを実行する
μ-law圧縮はScilabに関数としても組み込まれています.ただし,圧縮は8ビットに固定されています.Scilabのプログラムをリスト4に示します.
音声sを取り込んだ状態でリスト4の①のコマンドを実行すれば,圧縮,伸張処理が完了します.
図14にlog-PCMのシミュレーション結果を示します.