高速フーリエ変換とハイパスフィルターを適用した後、マイクから.wavに録音する方法は?

StackOverflow https://stackoverflow.com/questions/1640638

  •  08-07-2019
  •  | 
  •  

質問

マイクから入力を受け取り、それにfftを適用します。 その後、1KHzより高い周波数をゼロで配置します(ハイパスフィルター)。

マイクへの入力をfftに渡し、ハイパスフィルターを適用した後、マイクからの入力を録音する方法を知りたい。

c#で作業していますが、何をする必要がありますか? :P

役に立ちましたか?

解決

FFTとフィルターの後、データを時間領域に戻すために逆FFTを行う必要があります。次に、そのサンプルセットを.WAVファイルに追加します。

ファイル自体の作成に関する限り、形式は広く文書化されています(" .WAV形式>のグーグルは、使用するよりも多くの結果が得られるはずです)。基本的には、.WAVファイル(または実際には「RIFF」ファイル)であることを示す単純なヘッダー(「チャンク」と呼ばれる)です。それから" fmt"がありますサンプルの形式(サンプルごとのビット数、1秒あたりのサンプル数、チャネル数など)を示すチャンク。次に、「データ」があります。サンプル自体を含むチャンク。

これをリアルタイムで実行するように聞こえるので、私のアドバイスは、FFT、フィルター、iFFTの実行を忘れることです。 FIRフィルターは基本的に同じ結果になりますが、通常ははるかに高速です。 FIRフィルターの基本的な考え方は、データを周波数領域に変換し、フィルター処理してから時間領域に戻すのではなく、フィルター係数を時間領域に変換し、入力データに(かなり)直接適用することです。 DSPがキープを獲得する場所です。ほぼすべてのDSPに積和命令があり、1つの命令でFIRフィルタのほとんどを実装できます。ただし、それがなくても、最新のプロセッサでFIRフィルタをリアルタイムで実行しても、高速サンプリングを本当に実行していない限り、実際のトリックは必要ありません。いずれにせよ、FFT /フィルター/ iFFTを同じ速度で動作させる方がずっと簡単です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top