マイクから入力を受け取り、それに fft を適用します。その後、1KHz より高い周波数をゼロ (ハイパス フィルター) で入れます。
マイクからの入力をfftに渡した後、ハイパスフィルターを適用した後、どのようにマイクからの入力を録音できるか知りたいです。
C# を使用していますが、何をする必要がありますか? :P
FFT とフィルター処理の後、逆 FFT を実行してデータを時間領域に戻す必要があります。次に、そのサンプル セットを .WAV ファイルに追加します。
ファイル自体の作成に関する限り、その形式は広く文書化されており (「.WAV 形式」をグーグル検索すると、必要以上の結果が表示されるはずです)、非常に単純です。これは基本的に、それが .WAV ファイル (または実際には「RIFF」ファイル) であることを示す単純なヘッダー (「チャンク」と呼ばれます) です。次に、サンプルの形式 (サンプルあたりのビット数、1 秒あたりのサンプル数、チャネル数など) を示す "fmt" チャンクがあります。次に、サンプル自体を含む "data" チャンクがあります。
リアルタイムでこれを行うように聞こえるので、FFT、フィルター、および iFFT の実行を忘れることをお勧めします。FIR フィルターを使用すると、基本的に同じ結果が得られますが、通常ははるかに高速です。FIR フィルターの基本的な考え方は、データを周波数ドメインに変換し、フィルター処理してから時間ドメインに戻す代わりに、フィルター係数を時間ドメインに変換し、それらを入力データに (かなり) 直接適用することです。これは、DSP が利益を得る場所です。ほぼすべての DSP には積和命令があり、1 つの命令でほとんどの FIR フィルターを実装できます。ただし、それがなくても、最新のプロセッサで FIR フィルターをリアルタイムで実行するには、実際に実行しない限り、実際のトリックは必要ありません。高速サンプリング。いずれにせよ、FFT/フィルター/iFFT を同じ速度で動作させる方がはるかに簡単です。