短時間フーリエ変換とは

短時間フーリエ変換(Short-Time Fourier Transform)とは、時間とともに変化する信号の周波数成分を解析するために、信号を短時間窓で区切り、各区間に対してフーリエ変換を適用する信号処理手法のこと

短時間フーリエ変換(たんじかんフーリエへんかん、Short-Time Fourier Transform, STFT)は、時間的に変化する信号、例えば音声信号や音楽、振動信号などの非定常信号の周波数解析に用いられる信号処理技術です。通常のフーリエ変換が信号全体を対象とするため、時間による周波数成分の変化を捉えられないのに対し、STFTは信号を短時間の区間(窓)に分割し、各区間ごとにフーリエ変換を適用することで、時間とともに周波数成分がどのように変化するか(時間-周波数解析)を分析することを可能にします。

短時間フーリエ変換 の基本的な概念

フーリエ変換は、信号が時間に対して無限に続く定常状態であると仮定し、信号全体に含まれる周波数成分を一度に分析します。しかし、音声のように時間とともに周波数成分が変化する信号(非定常信号)では、フーリエ変換を適用しても、どの時点でその周波数成分が存在したのかを知ることはできません。例えば、歌声が「ド」から「ミ」に変化した場合、フーリエ変換では「ド」と「ミ」両方の周波数成分が存在することは分かりますが、いつ「ド」でいつ「ミ」だったかは分かりません。

短時間フーリエ変換は、この「時間情報の欠落」という課題を解決するために考案されました。その基本的なアイデアは以下の通りです。

  1. 窓関数(Window Function)の適用: 分析したい信号を、時間軸に沿って特定の幅を持つ「窓関数」と呼ばれる関数で切り出します。この窓関数は、通常、矩形窓、ハミング窓、ハン窓など、両端で滑らかに0に近づく形状をしています。
  2. スライディングウィンドウ(Sliding Window): この窓関数を時間軸に沿って少しずつずらしながら(オーバーラップさせながら)、信号を複数の短い区間に分割します。
  3. フーリエ変換の適用: それぞれの短い区間に対して個別にフーリエ変換を適用し、その区間内の周波数成分を解析します。

これにより、各時間区間における周波数スペクトル(周波数成分の分布)が得られ、これらのスペクトルを時間軸に沿って並べることで、信号の時間-周波数特性(例:スペクトログラム)を視覚化できます。

短時間フーリエ変換 の数式表現

連続時間信号 x(t) に対する短時間フーリエ変換 X(t,f) は、以下の式で定義されます。

 X(t, f) = \int_{-\infty}^{\infty} x(\tau) w(\tau - t) e^{-j2\pi f \tau} d\tau

ここで、

  • X(t,f) は、時間 t における周波数 f の成分を表すSTFTの出力です。
  • x(τ) は、元の連続時間信号です。
  • w(τ−t) は、時間 t を中心とする窓関数です。窓関数は、信号の局所的な特性を抽出するために用いられます。
  • e−j2πfτ は、フーリエ変換における複素指数関数です。
  • j は虚数単位です。

離散時間信号 x[n] に対する離散短時間フーリエ変換(Discrete Short-Time Fourier Transform, DSTFT)は、DFT(離散フーリエ変換)を用いて以下のように表されます。

 X[m, k] = \sum_{n=0}^{N-1} x[n + mH] w[n] e^{-j\frac{2\pi k n}{N}}

ここで、

  • X[m,k] は、m 番目の時間窓(フレーム)における k 番目の周波数ビンを表すSTFTの出力です。
  • x[n] は、元の離散時間信号です。
  • w[n] は、長さ N の窓関数です。
  • N はDFTの点数(窓の長さ)です。
  • H は窓のシフト量(ホップサイズ)です。

短時間フーリエ変換 の特徴とパラメータ

STFTには、窓の長さ N と窓のシフト量 H という主要なパラメータがあります。

  • 窓の長さ(Window Length, N):
    • 長い窓: 周波数分解能が高まります(異なる周波数成分をより細かく区別できる)。しかし、時間分解能が低くなります(どの時点の周波数変化かを特定しにくい)。
    • 短い窓: 時間分解能が高まります(周波数変化が起きた時点をより正確に特定できる)。しかし、周波数分解能が低くなります。
    • これは時間-周波数分解能のトレードオフと呼ばれ、不確定性原理に似た関係にあります。
  • 窓のシフト量(Hop Size, H): 隣接する窓がどれだけ重なり合うかを決定します。
    • 小さいシフト量(高いオーバーラップ): 時間軸方向の解像度が向上し、滑らかなスペクトログラムが得られますが、計算量が増加します。
    • 大きいシフト量(低いオーバーラップ): 計算量は減少しますが、時間軸方向の情報が粗くなります。

短時間フーリエ変換 の応用

短時間フーリエ変換は、非定常信号の時間-周波数特性を分析する強力なツールとして、様々な分野で活用されています。

  • 音声処理:
    • 音声認識: 音声の時間-周波数スペクトルを特徴量として利用します。
    • 音声合成: スペクトログラムから音声を再合成します。
    • 音源分離: 混合された音源の中から特定の音源を分離します。
    • 音楽分析: 楽器の音色変化、ピッチ追跡、テンポ分析など。
  • 画像処理:
    • テクスチャ解析や画像圧縮など。
  • 生体信号処理:
    • 脳波(EEG)や心電図(ECG)などの非定常な生体信号の周波数分析。
  • 振動解析: 機械の異常診断や地震波の解析など。

短時間フーリエ変換は、時間的に変化する信号の周波数成分を解析するための重要な信号処理手法です。信号を短時間窓で区切り、各区間にフーリエ変換を適用することで、時間とともに周波数成分がどのように変化するかを捉えることができます。窓の長さとシフト量によって時間分解能と周波数分解能のトレードオフが存在しますが、音声処理、音楽分析、振動解析、生体信号処理など、非定常信号を扱う多くの分野で不可欠なツールとして広く利用されています。

関連用語

音声認識エンジン | 今更聞けないIT用語集
画像処理 | 今更聞けないIT用語集
AIソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。