3

私は単にピッチ検出を持っています。入力(マイク)データがfftルーチンに渡され、最大値のピッチを探しています。つまり、次のことを意味します。

Max(pow(data[i].getRe(), 2) + pow(data[i].getIm(), 2)) for 0<= i < SAmplesSize

ギター弦の一次周波数の検出に必要です。250Hzまでの周波数440Hz(そして多分それ以上、私はそれをチェックしませんでした)でうまく機能します。この値を下回ると、検出される頻度は本来の2倍になります。195 Hzの場合、検出される周波数は約380Hzです。250Hz未満の高調波を検出しているようです。純粋な195Hzのトーンの場合は完全に検出されますが、クイターストリングの場合は何かが間違っています。

それを引き起こす可能性のある提案はありますか?または、より高度なピッチ検出を使用する必要がありますか?

追伸 サンプリングレート:8000hz、入力データサイズ:1024

4

1 に答える 1

1

ギターについては特に知りませんが、基礎が欠けていることは音響学ではよくあることのようです。ピッチ検出に関するウィキペディアのページは、FFT 後の二次処理ステップをほのめかしています。おそらく、これらのいずれかが役立つでしょう。

また、これらの 2 つの SO の質問を参照してください。そこには多くの良い情報があります: (1)(2)

于 2010-12-21T16:08:04.927 に答える