我正在嘗試做一個應用程序,在那裏用戶會說些什麼,然後點擊一個按鈕,它會給他們所說的頻率值。我一直在尋找很多東西,並得出結論,我需要首先使用音頻記錄類來記錄語音,然後使用FFT將其轉換爲頻率。 我的主要問題是FFT給出了一個頻率圖,我不需要這個,我需要頻率和音調值。我怎樣才能做到這一點?從android錄音文件中獲取頻率和音高
請幫我:)
我正在嘗試做一個應用程序,在那裏用戶會說些什麼,然後點擊一個按鈕,它會給他們所說的頻率值。我一直在尋找很多東西,並得出結論,我需要首先使用音頻記錄類來記錄語音,然後使用FFT將其轉換爲頻率。 我的主要問題是FFT給出了一個頻率圖,我不需要這個,我需要頻率和音調值。我怎樣才能做到這一點?從android錄音文件中獲取頻率和音高
請幫我:)
除非你正在收集一個純粹的聲調的聲音(如正弦波),你的結果實際上將你與FFT越來越此刻頻率的範圍(支票出this說明)。
通過使用音高估計算法可以從FFT圖中收集聲音的音高(參見回答here)。 Here's some links開源音高跟蹤如果適合的話。
這絕對是可行的!
祝你好運。
您能否提供我使用音高估計算法獲取音高值的示例。 – Nutan
嘿Nutan,不是真的對不起。有一個很好的例子[這裏](http://stackoverflow.com/questions/9979196/find-voice-pitch-on-android)用於處理FFT值,以及頻率到音高的映射[here]( http://www.codeproject.com/Articles/32172/FFT-Guitar-Tuner)。真的希望我能有更多的幫助。 – CodeMonkey
有很多事情可以用來幫助完成此過程。 JTransforms是一個庫,可讓您輕鬆進行FFT。您需要在多個點上進行FFT,以獲得每個點的相應頻率。當我說「點」時,我的意思是你應該把音頻分成塊,這些塊將單獨進行FFT。這些塊可以重疊以提高準確性。它們也可以在執行FFT之前加窗,以獲得更高的精度。
然後,FFT的結果需要進一步處理,以使結果更準確。這可以通過使用倒譜分析或諧波產品頻譜分析和其他方法來完成。
最後,請記住除FFT之外還有其他解決方案。自相關方法根本不使用頻域。它會檢查實際的音頻文件樣本以確定頻率。這可能在計算上更昂貴,但也可能更準確。
請參閱:http://en.m.wikipedia.org/wiki/Pitch_detection_algorithm – hotpaw2