音声圧縮処理の基本 ―― 音楽CDやWAVファイルで使われている波形符号化方式

川村 新,尾知 博

2.log-PCM

 音声には,小振幅の部分と大振幅の部分があります.人間は,小振幅の音声においては小さな変化でも知覚できますが,大振幅の音声では小さな変化はほとんど知覚できません.そこで,音声の小振幅部分は細かく,大振幅部分は粗く量子化すれば,少ないビット数でも音質の劣化を知覚的に抑えることができます.

 このような方法としてlog-PCM(3)があります.log-PCMは主に固定電話に用いられています.log-PCMでは,入力音声の振幅を対数変換し,変換後の音声に対して一様量子化を実行します.図9に音声入力とlog-PCM出力の関係を示します.



図9 log-PCM の入出力関係
3ビットの例を示す.


 log-PCMが音声に効果的であることをより明確にするために,音声波形の各値が何回現れたかを図10のヒストグラムに示します.音声は0近辺の小振幅信号の出現回数が圧倒的に多いので,小振幅部分を詳細にとらえられるlog-PCMが有効であることが分かります.



図10 音声波形とそのヒストグラム
横軸に音声波形の各値,縦軸にそれらの値の出現回数を取る.

 

 log-PCMでは,圧縮された音声を元に戻すために,圧縮と逆の手順となる復号の操作が必要になります.これを圧縮に対して伸張と呼ぶことがあります.

 log-PCMの対数特性の決め方には自由度があるので,同様に伸張の方法も各方式によって異なります.代表的な対数特性として,A法則(A-law方式)とμ法則(μ-law方式)が知られています.

 A法則はヨーロッパを中心に電話線上で使用されています(図11).また,μ法則は日本や米国における電話線上に広く使われています(図12).いずれも量子化は8ビットです.



図11 A法則
ヨーロッパを中心に電話線上で使用されている.

 



図12 μ法則
日本や米国における電話線上に広く使われている.


●Scilab演習 ---- log-PCMを実行する

 音声データに対して,3ビットのlog-PCMを実行してみましょう.ここでは,日本の電話線で用いられるμ-lawを実装します.Scilabのプログラムをリスト3に示します.

リスト3 log-PCMを実行するプログラム(1-1-2_logPCM_a.sce)

 

 リスト3の①で音声信号とその情報を読み込みます.リスト3の②により,得られた音声信号sを式(3)に代入してF(s)を得ます.

 F(s)を3ビットで一様量子化するとlog-PCM信号yが得られます.リスト3の③のように,yを式(4)に代入すれば伸張結果が得られます.

 結果の波形を図13に示します.PCMよりはノイズが少ないものの,log-PCMにおいても3ビットでは音声波形の保存には不十分であることが分かります.



図13 log-PCMのシミュレーション結果
PCMよりはノイズが少ない.

 

●Scilab演習 ---- 関数を使ってlog-PCMを実行する

 μ-law圧縮はScilabに関数としても組み込まれています.ただし,圧縮は8ビットに固定されています.Scilabのプログラムをリスト4に示します.

 

リスト4 関数を使ってlog-PCMを実行するプログラム(1-1-2_PCM_b.sce)

 

 音声sを取り込んだ状態でリスト4の①のコマンドを実行すれば,圧縮,伸張処理が完了します.

 図14にlog-PCMのシミュレーション結果を示します.



図14 関数を使ったlog-PCMのシミュレーション結果
8ビットなので,原音声に近い波形が得られる.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日