FFT Graph
音声ファイルのFFTスペクトルをPNGに書き出すツール
概略
FFT Graphは音声ファイルを読み込み、FFTスペクトルのグラフをPNG画像として保存するWindows用ツールです。PCMのWAVに加えて、DSF / DSDIFF (DFF) / WSDの1bit DSDをデルタシグマ変調のまま直接解析できるため、DSDのノイズシェーピング特性を含む全帯域のスペクトルを確認できます。
面倒な設定は不要です。ファイルを選んで「グラフ作成」を押すだけで、FFTサイズ・表示範囲・dBレンジを自動で決定し、Welch法による平均化済みのスペクトルを出力します。必要な場合のみ各パラメータを手動指定できます。
主な機能
- 対応フォーマット — WAV (PCM 8/16/24/32/64bit、IEEE float 32/64bit)、DSF / DFF / WSD (1bit DSD、DSD64~)
- 自動パラメータ — FFTサイズ (約1.5Hz/bin目安)、周波数範囲 (20Hz~Nyquist)、dBレンジを自動選択
- Welch法平均 — 50%オーバーラップで全区間を平均し、ノイズフロアの読み取りやすいスペクトルを生成
- 窓関数 — 7項Blackman-Harris (既定)、Hann、Flat-top、Kaiser (β=24)、矩形
- 縦軸 — dBFS (振幅) / dBFS/Hz (パワースペクトル密度) を選択可
- ディープスペクトル — 基準トーン (例: 1kHz) と高調波を最小二乗フィットで時間領域から除去し、トーン直下のノイズフロアを観察。トーンに整数周期で一致するコヒーレントFFT長の自動選択、倍々精度 (double-double) FFT演算にも対応
- ピーク自動ラベル — 卓越ピークの周波数とレベルをグラフ上に注記
- バッチ処理 — 複数ファイルを一括変換、CSV出力にも対応
- コマンドライン対応 — Pythonスクリプト版では自動処理への組み込みが可能
画面
パラメータ
空欄にした項目はすべて自動で決まります。下表は手動で指定したいときの各項目の意味です。
| 項目 | 既定 / 例 | 説明 |
|---|---|---|
| 入力 (複数可) | — | 解析する音声ファイル。複数選択で一括処理。WAV / DSF / DFF / WSD に対応 |
| 出力フォルダ | 空欄 | PNGの保存先。空欄なら入力ファイルと同じ場所に保存 |
| モード | スペクトル | 通常のスペクトル表示。トーン直下の微小ノイズフロアを見たいときは「ディープスペクトル」 |
| チャンネル | mix | 全チャンネルを合成。特定chだけ見るなら 1〜8 を指定 |
| 窓関数 | blackmanharris | 7項Blackman-Harris (低リーク・既定) / hann / flattop (振幅精度重視) / kaiser24 / rect (矩形) |
| 縦軸 | amplitude | amplitude = dBFS (振幅) / density = dBFS/Hz (パワースペクトル密度) |
| FFTサイズ | auto | autoは約1.5Hz/binを目安に自動選択。手動指定は 4096〜524288。大きいほど周波数分解能が上がる |
| 開始 [s] | 0 | 解析を始める位置 (秒) |
| 長さ [s] | 自動 | 解析する長さ (秒)。空欄ならPCM先頭60秒 / DSD30秒。「full」で全体を解析 |
| 平均フレーム | 自動 | Welch法平均のフレーム数。空欄で自動 (通常400 / ディープ8) |
| 最低周波数 [Hz] | 20 | 表示する下限周波数 |
| 最高周波数 [Hz] | Nyquist | 表示する上限周波数 |
| dB下限 | 自動 | 縦軸の下限 (dB)。空欄で自動 |
| DPI | 150 | 出力PNGの解像度 |
| 対数周波数軸 | オン | 横軸を対数表示。オフで線形軸 |
| ピークを表示 | オン | 卓越ピークの周波数とレベルをグラフ上に自動で注記 |
| CSVも出力 | オフ | スペクトルの数値データをCSVでも保存 |
以下はモードをディープスペクトルにしたときだけ使う設定です。
| 項目 | 既定 / 例 | 説明 |
|---|---|---|
| 基準トーン [Hz] | 1000 | フィット除去する基準トーンの周波数 |
| 高調波除去 [個] | 1 | 基本波を含め、何次までの高調波を除去するか |
| スムージング [bin] | 自動 | スペクトルの移動平均bin数。空欄で自動 (ディープ時9) |
| トーンを残す (除去しない) | オフ | 基準トーンを除去せず表示。フィット位置の確認用 |
| 倍々精度FFT (twofold, 低速) | オフ | double-double精度で演算。128bit twofold float WAV の超低ノイズ解析向け (低速) |
使い方
1. FFTGraph.exeを起動し、「選択...」から音声ファイルを選びます (Ctrl+クリックで複数選択)。出力フォルダが空欄の場合は入力ファイルと同じ場所にPNGが保存されます。
2. 「グラフ作成」をクリックすると、ファイル名に_fftが付いたPNGが出力されます。解析設定の空欄はすべて自動です。長さ未指定の場合、メモリ保護のためPCMは先頭60秒、DSDは先頭30秒を解析します (長さ欄に「full」と入力すると全体を解析)。
出力例1: PCM (96kHz/32bit float、テスト信号)。10kHzトーンとノイズフロア。対数周波数軸、ピーク自動ラベル。
出力例2: DSF (DSD64、テスト信号)。1bitデータを直接FFTし、可聴帯域から1MHz超までを1枚で表示できます。
出力例3: ディープスペクトル (-6dBFSの1kHz基準トーン入りテスト信号)。モードを「ディープスペクトル」に切り替えると、基準トーンをフィット除去した上でコヒーレントFFTを行い、トーンより200dB以上低いレベルに置いた-160dBFSの微小トーンとノイズフロアまで読み取れます。
動作環境
- Windows 10/11 64bit。exe版は単一ファイルで、インストール不要です。設定はexeと同じフォルダの.fft_app.jsonに保存されます。
- ソース版はrun.batをダブルクリックするだけで起動します (初回のみ実行環境を自動構築)。exeの生成も同梱のbuild_exe.batのダブルクリックだけです。いずれもPython 3.10以降がインストールされていれば、追加の手作業は不要です。
バージョン
| 1.0.0 | 2026/06/13 | 初回リリース |
ダウンロード
ライセンス関連
本ソフトウェアはMITライセンスです。ソースコードは上のリンクから取得でき、run.bat / build_exe.bat のダブルクリックだけで起動・exe化できます (Python 3.10以降が必要)。
exe版および動作には以下のオープンソースソフトウェアを使用しています。各ライセンス全文は同梱のTHIRD_PARTY_NOTICES.txtを参照してください。
- NumPy (BSD-3-Clause) — FFT・数値計算
- Matplotlib (Matplotlib License / PSFベース、BSD互換) — グラフ描画。DejaVuフォント (Bitstream Vera License) を同梱
- Tcl/Tk (BSD系) — GUI (tkinter)
- Python (PSF-2.0) — ランタイム同梱
- PyInstaller — Windows one-file exe作成。PyInstaller本体はGPLですが、ビルド成果物 (exe) を任意のライセンスで配布できる例外条項が適用されます。
連絡先
ご意見ご要望は info at pcmdsd.com もしくは Twitter@serieril まで