1行定義
高速フーリエ変換(FFT)とは、信号に含まれる周波数成分を求める離散フーリエ変換(DFT)を、少ない計算量で行うアルゴリズムのことです。
くわしく
高速フーリエ変換(FFT)は、音などの波形に、どの高さ(周波数)の成分がどれだけ含まれるかを素早く求める計算方法です。和音を聞いて、どの音がどの強さで鳴っているかを聞き分ける作業を、コンピュータで行うイメージです。
フーリエ変換とDFT
波形は、さまざまな周波数のなめらかな波(正弦波)の足し合わせとして表せます。波形から各周波数の成分の大きさを求める処理がフーリエ変換です。A-D変換で得た有限個の標本に対して行うものを、離散フーリエ変換(DFT)と呼びます。横軸を周波数、縦軸を成分の強さとしたグラフがスペクトルです。
なぜ「高速」なのか
N個の標本のDFTをそのまま計算すると、約N × N回の掛け算が必要です。代表的なFFTは、大きなDFTを半分の大きさのDFTに分ける操作を繰り返し、同じ計算の重複を省きます。これにより、計算量はN × log2 Nに比例する程度まで減ります。N = 1,024なら、N × Nの1,048,576に対し、N × log2 Nは10,240で、約100分の1です。結果は近似ではなく、DFTと同じです。1965年にクーリーとテューキーが発表して広まりました。同じ考え方は、19世紀初めのガウスの計算にも見られることが、のちに指摘されています。
音声処理での使い方
音声は時間とともに性質が変わるため、20〜30ミリ秒程度の短い区間(フレーム)に区切り、少しずつずらしながら区間ごとにFFTをかけます。これを短時間フーリエ変換といい、結果を時間の順に並べた図をスペクトログラムと呼びます。MFCCやメルスペクトログラムも、このFFTの結果から求めます。周波数の細かさは標本化周波数 ÷ Nで決まり、16kHzの音声に256点のFFTを使うと、16,000 ÷ 256 = 62.5Hz刻みになります。
覚え方
「FFTは、DFTと同じ答えを速く出す計算の工夫」と覚えます。
G検定での出題
出題のされ方
音声の波形を周波数成分に分解する処理であること、MFCCやスペクトログラムを求める手順の初めのほうで使われること、DFTと同じ結果をより少ない計算量で得る点が問われます。
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
FFTは、計算を速くする代わりにDFTの結果を近似的に求める手法であり、得られる周波数成分はDFTの結果と一致しない。
答えを見る
答え × 誤り
FFTは、DFTと同じ計算を、重複を省いて効率よく行う手順です。コンピュータでの丸め誤差を除けば、結果はDFTと一致します。
-
N個の標本のDFTをそのまま計算すると約N×N回の掛け算が必要だが、FFTを使うと、N×log2 Nに比例する程度の回数まで減らせる。
答えを見る
答え ◯ 正しい
N = 1,024なら、`N × N`は`1,048,576`、`N × log2 N`は`1,024 × 10 = 10,240`で、約100分の1です。Nが大きいほど差は広がります。
-
音声全体にFFTを1回かけるだけで、周波数成分が時間とともにどう変わるかも読み取れる。
答えを見る
答え × 誤り
全体に1回かけると、全体を平均した周波数成分しか分かりません。時間の変化を見るには、短い区間ごとにFFTをかける短時間フーリエ変換を使います。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目28 音声処理)
- James W. Cooley, John W. Tukey, An Algorithm for the Machine Calculation of Complex Fourier Series, Mathematics of Computation 19(90), 297–301 (1965)
- Michael T. Heideman, Don H. Johnson, C. Sidney Burrus, Gauss and the history of the fast Fourier transform, IEEE ASSP Magazine 1(4), 14–21 (1984)