音声信号処理の基礎理論(後編) ―― 線形フィルタ,適応アルゴリズム,周波数領域の処理

川村 新,尾知 博

4.周波数領域の処理

● 離散フーリエ変換(DFT)

 計算機において,時間領域で得られた信号を周波数領域へ変換する方法として,離散フーリエ変換(DFT)が用いられます.

 範囲0≦nNにのみ値を有する信号x(n)に対するDFTと逆DFT(IDFT)は図30のように定義されます.



図30 離散フーリエ変換の違い

DFTとIDFTの関係や,離散時間フーリエ変換との違いを示す.

 

 DFTは離散スペクトルだけを持つので,計算機に適しており,さらに高速算法が存在するという利点があります.

● 窓関数

 音声信号を対象としてDFTを計算する場合,フレーム長を,音声が定常と見なせる30ms前後に設定することがよくあります.このため,適当な窓関数によって30ms前後の信号を切り出す必要があります.

 フレーム長をNとすると,窓関数は,0≦nN−1において有限値をとり,それ以外で0となる関数として定義されます.これまでにさまざまな窓関数が提案されています.

 代表的な窓関数を図31に示します.ただし窓長N=256としてプロットしています.



図31 窓関数
0≦nN−1において有限値をとり,それ以外で0となる関数である.

 

● ハーフ・オーバラップ

 窓関数で切り出した音声信号に対して,DFT⇒信号処理⇒IDFTとして処理後の音声を得る場合がよくあります.ところが,音声処理でよく用いられるハン窓(図31)では,切り出された音声信号の両端は減衰しています.このため,DFT→IDFTとして元の信号に戻してもフレーム両端の音声は減衰したままになってしまいます.そこで,フレーム長の半分だけ時間をシフトして次のDFTを実行し,得られた結果を前のフレームで得られた結果に加算する,ハーフ・オーバラップが用いられます(図32).



図32 ハーフ・オーバラップ
フレーム長の半分だけ時間をシフトして次のDFTを実行し,得られた結果を前のフレームで得られた結果に加算する.

 

 ハーフ・オーバラップにより,窓関数による減衰の影響をほとんど取り除くことができます.

● Scilab演習 —— ハーフ・オーバラップの実装

 音声に対してハーフ・オーバラップを実行してみましょう.フレーム長を256サンプルとして,フレーム・シフトを128サンプルとします.また,窓関数にはハン窓を用います.

 Scilabのプログラムをリスト3に,結果を図33に示します.

リスト3 Scilabによるハーフ・オーバラップのプログラム



図33 Scilabによるハーフ・オーバラップのシミュレーション結果

フレーム長を256サンプルとして,フレーム・シフトを128サンプル,窓関数としてハン窓を使用した例を示す.

 

参考・引用*文献
(1) 村田 昇;入門 独立成分分析,東京電機大学出版局,2004年.
(2) 飯國 洋二;基礎から学ぶ信号処理,培風館,2004年.
(3) 古井 貞熙;ディジタル音声処理,東海大学出版社,1985年.
(4) サイモン ヘイキン(著),武部幹(訳);適応フィルタ入門,現代工学社,1987年.

 

かわむら・あらた
大阪大学大学院 基礎工学研究科 システム創成専攻 助教
おち・ひろし
九州工業大学大学院 情報工学研究院 電子情報工学研究系 教授

組み込みキャッチアップ

お知らせ 一覧を見る

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