7

しばらくの間、FFTとピッチ検出について読んでいますが、すべてをつなぎ合わせるのに問題があります。

Accelerateフレームワークがおそらくこれを行うための最良の方法であることがわかりました。また、Appleのサンプルコードを読んで、FFTでの使用方法を確認しました。ピッチ検出をリアルタイムで実行したい場合、FFTの入力データは何ですか?マイクからのオーディオストリームを渡すだけですか?どうすればいいですか?

また、FFT出力を取得した後、それから周波数を取得するにはどうすればよいですか?私はどこでも読んでいますが、これの例や説明が見つかりませんか?

助けてくれてありがとう。

4

2 に答える 2

7

周波数とピッチは同じものではありません-周波数は物理量であり、ピッチは心理的知覚です-それらは似ていますが、重要な違いがあり、使用する楽器の種類によって、重要な場合と重要でない場合があります。ピッチを測定しようとしています。

さまざまなピッチ検出アルゴリズム(およびピッチ自体の意味)について少し読んで、使用するアルゴリズムを決定してから、その実装に取り​​掛かる必要があります。ピッチおよびピッチ検出の概要については、このWikipediaページを参照してください(自己相関ベースおよび周波数領域の方法にFFTを使用できることに注意してください)。

FFTを使用してスペクトルのピークとそれに関連する周波数を特定することに関しては、SOでこれに関連する多くの質問と回答がすでにあります。たとえば、次を参照してください。FFTの各値の周波数を取得するにはどうすればよいですか。

于 2012-04-30T08:24:10.800 に答える
3

iOS5.1でオンラインで利用できる自己相関関数の実装例があります。最も近い音符を見つける方法とピッチを表す文字列を作成する方法(A、A#、B、B#など)に関する実装と関数へのリンクについては、この投稿を参照してください。

FFTは多くのアプリケーションで非常に役立ちますが、単純なピッチ検出を行おうとしている場合は、最も正確ではない可能性があります。(正確な場合もありますが、多くの位相計算を行うには複素数を処理する必要があります)

于 2012-06-14T23:20:52.420 に答える