ここで周波数分析に関する多くの投稿を見て、大いに役立つように見えましたが、自分の声を録音して周波数を印刷しようとしましたが、値は録音されたものとは関係ないように見え、声のピッチを上げようとしました。周波数値で何が起こるかを確認しますが、投稿されたlogcatでわかるように印刷された周波数には独自の意志があり、おそらくバックグラウンドノイズの原因です:)
頻度を取得する方法のコードは次のとおりです。
fftArray = FFT.fft(fftTempArray);
MAX = 0;
int index= 0;
for (int i = 0; i < fftArray.length/2; i++) {
if (fftArray[i].magnitudes() > MAX) {
MAX = fftArray[i].magnitudes();
index = i;
}
double freq = index * sampleFreq / fftArray.length;
System.out.println(freq);
}
ログキャットは次のとおりです。
11-12 16:01:40.678: I/System.out(23397): 150.0
11-12 16:01:40.678: I/System.out(23397): 150.0
11-12 16:01:40.678: I/System.out(23397): 150.0
11-12 16:01:40.678: I/System.out(23397): 150.0
11-12 16:01:40.678: I/System.out(23397): 150.0
11-12 16:01:40.678: I/System.out(23397): 150.0
11-12 16:01:40.678: I/System.out(23397): 150.0
11-12 16:01:40.678: I/System.out(23397): 150.0
11-12 16:01:40.678: I/System.out(23397): 150.0
11-12 16:01:41.409: I/System.out(23397): 0.0
11-12 16:01:41.409: I/System.out(23397): 0.0
11-12 16:01:41.409: I/System.out(23397): 0.0
11-12 16:01:41.409: I/System.out(23397): 0.0
11-12 16:01:41.409: I/System.out(23397): 0.0
11-12 16:01:41.409: I/System.out(23397): 0.0
11-12 16:01:41.409: I/System.out(23397): 64.0
11-12 16:01:41.409: I/System.out(23397): 75.0
11-12 16:01:41.409: I/System.out(23397): 75.0
11-12 16:01:41.409: I/System.out(23397): 75.0
11-12 16:01:41.419: I/System.out(23397): 107.0
11-12 16:01:41.419: I/System.out(23397): 118.0
11-12 16:01:41.419: I/System.out(23397): 118.0
11-12 16:01:41.419: I/System.out(23397): 118.0
11-12 16:01:41.419: I/System.out(23397): 118.0
11-12 16:01:41.419: I/System.out(23397): 161.0
11-12 16:01:41.419: I/System.out(23397): 161.0
11-12 16:01:41.419: I/System.out(23397): 161.0
11-12 16:01:41.419: I/System.out(23397): 161.0
私が何をしても、この範囲の値にとどまります。
誰か助けてくれませんか?マイクに向かって高いピッチの音やさまざまな種類のノイズを発しても、周波数が変わらないのはなぜですか?