FFTを用いた信号処理
目的
高速フーリエ変換FFTを用いて、
周波数領域で信号処理をする方法を学びます。
方法
サンプルプログラムfftpass1.cを参考に、
周波数領域で信号処理を行います。
このプログラムは、
入力信号を高速フーリエ変換 (FFT) して周波数領域に変換し、
そのまま逆FFTして時間領域に戻し、
出力します。
例えば、以下のようなモノを作ることができます。
- フィルタ
周波数毎に重みを付けると、フィルタになります。
- 音声変換 (その1)
周波数を2倍にすると1オクターブ上がって、
男性の声が女性のように聞こえます。
逆に1/2にすると、女性が男性になります。
- 音声変換 (その2)
周波数を適当に入れ替えてやると、変な声になります。
- ひとりでハモる
元の音声と、それを3度や5度下げたものを合成すれば、和音になります。
-
注意
- FFT結果は実部と虚部に分かれています。
- N点FFTの場合、配列の先頭N/2点が正の周波数成分、
残りのN/2点が負の周波数成分になります。
- モノラル用プログラムなので、ステレオ信号を処理する場合には改造が必要です。
(作成: 2000年11月14日, 最終更新: 2001年9月14日)