0

FFT アルゴリズムを使用して音の周波数 (ギターのピッチ) を検出しました。コンピューターから正弦波の音を再生するとうまく機能しますが、ギターを使用するときは完璧ではありません。ピッチ周波数をより適切に推定する方法は?

double[] spectrum = FourierTransform.Spectrum(ref sampleBuffer);//spectrum contains data from FFT
double frequency = indexOfMax(spectrum) * 16000 / 500; //sampling rate/FFT size
//indexOfMax just finds the index of the maximum element in the array

私が使用した正弦波を生成するために:http://www.audiocheck.net/audiofrequencysignalgenerator_sinetone.phpスペクトル配列から最大値を見つけるだけのこの種の波はうまく機能しましたが、より良い方法を探しています。

4

2 に答える 2

2

ギター サウンドの場合、ピッチ検出/推定の可能性として、ケプストラム分析、ハーモニック プロダクト スペクトル分析、または IFFT(FFT() * Conjugate( FFT()))。

于 2012-12-11T01:36:58.357 に答える
0

楽器の自動ピッチ決定は自明ではありません。

この問題へのケプストラム アプローチに関するこの投稿をご覧ください:楽器ケプストラム

于 2013-02-13T02:17:45.443 に答える