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

川村 新,尾知 博

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

 音声データに対して,3ビットのPCMを実行してみましょう.Scilabのプログラムをリスト1に示します.結果の波形を図7に示します.

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

 



図7 3ビットのPCMのシミュレーション結果
アナログ信号のように見える波形が,8段階に量子化されていることが分かる.0を表現しないことで生じるノイズが多く含まれ,音声波形の保存に十分でない.

 

 リスト1の①では,音声ファイルspeech.wavを読み込み,その情報を取り出しています.このとき,Fsにサンプリング周波数,Btに量子化のビット数,Mに音声サンプルの個数が格納されます.また,音声サンプルは絶対値1未満に正規化された値としてsに格納されます.sは横1列に要素を持つ横ベクトルとなっています.

 図6を参照して,正負の値があることを考慮すれば,3ビットのPCM信号s3はリスト1の②のようにして得られます.sign()は各要素の符号を取り出す関数です.ceil()は小数点以下を切り上げて整数化する関数です.また,.*は要素ごとの乗算を表します.

 Scilabで以下のコマンドを実行すると,それぞれの音声を確認できます.

  playsnd(s, Fs);
  playsnd(s3, Fs);

 3ビットでは,0を表現しないことで生じるノイズが多く含まれ,音声波形の保存に十分でないことが分かります.

●Scilab演習 ---- 二つのPCMを比較する

 図6で示した二つのPCMの違いを確認してみます. Scilabのプログラムをリスト2に示します.結果の波形を図8に示します.

リスト2 二つのPCMを比較するプログラム(1-1-1_PCM_b.sce)

 



図8 PCMの原点の取り方の違いをシミュレーションした結果
ノイズがなく良好な波形に見えるかもしれないが,実際の音声を確認すると図7の方がノイズは大きいものの,音声の明瞭度が高い.

 

 リスト2の①で,音声ファイルspeech.wavを読み込みます.

 図6(b)に基づく3ビットのPCM信号s3_0をリスト2の②のようにして得ます.

 図8は,図7と比較するとノイズがなく良好な波形に見えるかもしれません.しかし,Scilabで以下のコマンドを実行してそれぞれの音声を確認すると,図6(a)に基づく3ビットのPCM信号s3の方がノイズは大きいものの音声の明瞭度が高いことが確認できます.

  playsnd(s3, Fs);
  playsnd(s3_0, Fs);

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! 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日