1

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

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

C# を使用していますが、何をする必要がありますか? :P

4

1 に答える 1

3

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

ファイル自体の作成に関する限り、その形式は広く文書化されており (「.WAV 形式」をグーグル検索すると、必要以上の結果が表示されるはずです)、非常に単純です。これは基本的に、それが .WAV ファイル (または実際には「RIFF」ファイル) であることを示す単純なヘッダー (「チャンク」と呼ばれます) です。次に、サンプルの形式 (サンプルあたりのビット数、1 秒あたりのサンプル数、チャネル数など) を示す "fmt" チャンクがあります。次に、サンプル自体を含む "data" チャンクがあります。

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

于 2009-10-28T23:26:53.487 に答える