0

我需要將一個16000赫茲的PCM 16位波形文件降採樣到8000赫茲。我沒有太多的關於音頻處理的知識(幾乎沒有),我只是瞭解所有程序員都理解的位,字節,移位等。對一個波形文件進行降採樣

這是一個Windows Phone應用程序。

你有什麼建議?據我瞭解,XNA框架中的Microphone類的SampleRate是不可定製的,因此它只能提供16000赫茲的數據。有沒有辦法在Windows Phone中獲得8000赫茲的原始音頻數據?這將是一個更容易的解決方案:)

謝謝。

回答

0

如果您不能找到一個好的解決方案,並且必須繼續進行自己的轉換,以下可能會對您有所幫助。

假定您使用XNA框架麥克風+ WAV象下面這樣: http://damianblog.com/2011/02/07/storing-wp7-recorded-audio-as-wav-format-streams/

然後得到的,而不是爲8kHz 16kHz的,你只需要砸在microphone.BufferReady事件返回的數據每秒值。或者最好使用插值(而不是每隔一秒的值就可以保存平均值的兩個值)

for(int i = 0; i < arr.length/2; i ++) res [i] =(arr [2 * I] + ARR [2 * I + 1]))

也不要忘記在WriteWavHeader功能

+0

爲採樣率(8000)中設置正確的值刪除所有其他值將導致[別名]( http://en.wikipedia.org/wiki/Aliasing)。應先應用低通濾波器。 – Phonon