0

ここで周波数分析に関する多くの投稿を見て、大いに役立つように見えましたが、自分の声を録音して周波数を印刷しようとしましたが、値は録音されたものとは関係ないように見え、声のピッチを上げようとしました。周波数値で何が起こるかを確認しますが、投稿された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

私が何をしても、この範囲の値にとどまります。

誰か助けてくれませんか?マイクに向かって高いピッチの音やさまざまな種類のノイズを発しても、周波数が変わらないのはなぜですか?

4

2 に答える 2

0

ピッチと周波数スペクトルのピークを混同している可能性があります。どちらも同じ次元単位 (Hz) を持っていますが、ピッチは心理音響現象であり、スペクトル ピークとは大きく異なる場合があります (多くの場合、ピッチのはるかに高く変化する倍音であり、わずかに不協和音などです)。このように、ピッチ検出/推定方法は、単に FFT 周波数ピーク推定とは異なります。

于 2013-11-12T15:21:43.393 に答える