0

私はportaudioを初めて使用し、「周波数を抽出する方法...」の質問を見ましたが、それでも助けが必要です。(スピーカーを使用して)周波数を送信する必要があり、この周波数が送信されたかどうか(マイクでキャッチ)を確認したいと思います。もちろん、送信と検出にportaudioを使用したいと思います。また、レコードの例を見て、サンプルデータ型を使用しているため、検出に fft を使用する方法がわかりません。このデータ型を使用すると、最大振幅を見つけることができます。周波数を見つけるために使用できますか?

事前にt​​nx。

4

1 に答える 1

1

PortAudioのサンプル コードとして、簡単なトーンの再生が提供されています。

そこのピッチは特定の数値から計算されるわけではありませんが、簡単に把握できます。

amplitude[n] = sin( n * desiredFreq * 2 * pi / samplerate )

PortAudio のサンプル コードのように、各呼び出しで sin() を使用するのではなく、ルックアップ テーブルを使用することを検討することをお勧めします。これは、パフォーマンス (および大量の場合の sin の精度、これで問題ないかもしれませんが、よくわかりません) の両方の観点からです。約)。

再生されている周波数を検出することは、SO でここで尋ねられた質問です。これが私が最近出した答えです。

要するに、スキル レベルやバックグラウンド ノイズなどの問題に応じてさまざまな方法があります。単純な正弦波を検出するだけで、多くのノイズを期待しない場合は、信号が特定のしきい値を超えていることを確認した後、ゼロ交差をカウントするだけでよい場合があります。ノイズが予想される場合は、より洗練されたものにする必要があります。

于 2012-07-13T15:26:54.370 に答える