2

fft を使用して、読み込まれた 1 秒の音声ファイルの周波数、位相、大きさを取得し、「ああ」と言って再作成することができます。私が今やろうとしているのは、これらの各周波数が 1 秒のオーディオ ファイルのどこで始まり、どこで終わるかを調べ、データを配列に配置することです。

例: 100hz は 0.23 秒から 0.34 秒で始まり、104.34hz は 0.35 秒で始まり 0.37 秒で終わります。

fft はこれを行うことができますか、それともウェーブレットを使用するようにプログラム全体をシフトする必要がありますか? また、私が達成しようとしていることを行う方法を示すオクターブのウェーブレットの例はありますか?

レポのUbuntu Linux 12.04とOctave 3.2.4を使用しています

ありがとうリック

4

1 に答える 1

5

離散フーリエ変換(DFT)を推定するアルゴリズムとしての FFT は、オーディオ信号の周波数成分(あなたが言及した大きさと位相)を提供します。これにより、離散周波数ビンごとの振幅/位相値のセットが得られ、これを連続周波数値にマッピングできます (ビン インデックスまたは離散周波数、FFT ポイントの数、および信号のサンプリング周波数に基づいて)。

ただし、DFT (FFT 経由) はグローバルな変換です。つまり、周波数領域に移動しているため、時間の概念が失われます。必要なのは、短時間フーリエ変換 (STFT)、つまり信号の短い時間フレーム (ウィンドウ) での FFT です。これにより、分析ウィンドウごと、つまり短時間のインスタンスごとに周波数コンテンツを指定できる時間-周波数表現が出力として得られます。

アプローチ スケッチ: 時間ウィンドウの長さとウィンドウ シフト (目的の時間分解能または線形サンプリングされた時間インスタンスに基づく) を定義し、STFT を実行してから、各ウィンドウのフーリエ マグニチュードでピーク ピッキングまたは極大値推定の方法を実行します。これにより、時間の経過とともに追跡できる主な周波数の場所が得られます (開始など)。

MATLABで、STFT の実装のスペクトログラムをチェックして開始します。

于 2012-08-23T06:12:47.907 に答える