2010-01-08 17 views
3

有人能告訴我如何改變Android中wave文件的音高嗎?在Android中更改wave文件的音高?

+3

[Sound Pool](http://developer.android.com/reference/android/media/SoundPool.html)允許您更改播放速率,但不幸的是,這對於Media Player來說似乎不可行。如果您真的需要關於Java語音處理的建議,您可能需要爲您的問題添加java,DSP,音頻標籤。 – James 2010-01-08 22:30:56

+0

聲音庫只允許在播放音頻時更改播放速度......對於錄製的文件無效。 – 2012-11-26 04:07:43

+0

更改播放速率將改變音高,但也會影響播放速度。所以你應該考慮使用@Phonon提供的算法之一,它可以在不改變速度的情況下改變音高。 – Chris623 2014-12-04 09:50:56

回答

0

Android沒有內置這樣的函數,而且這個過程並不重要。如果您想自己嘗試編碼,我建議您查看PSOLA,WSOLA和Phase Vocoder等音高改變算法。 UdoZölzer的書DAFX討論了其中的很多細節,其中大部分都相當簡單。我相信,相位聲碼器的運行速度最快,但也需要更多的DSP和數學知識才能理解。 PSOLA可能是數學上最不復雜的。我個人更喜歡WSOLA和增強WSOLA(EWSOLA),但這些需要相當多的處理能力。對於相關技術(如果您使用WSOLA),我建議如果頻域(基於Google FFT的相關性)來做。它快得多。

如果這件事大部分已經過去了,你可能想重新考慮這樣做,但我絕不會試圖阻止你。 =)