下采样波形文件

时间:2012-11-16 14:47:09

标签: windows-phone-7 microphone audio-processing downsampling

我需要将16000赫兹的PCM 16位波形文件下采样到8000赫兹。我对音频处理知之甚少(几乎没有),我只是理解比特,字节,移位等所有程序员都理解的。

这是一个Windows Phone应用程序。

你有什么建议?另据我所知,XNA框架中的Microphone类的SampleRate不可自定义,只能为您提供16000赫兹的数据。有没有办法在Windows Phone中获得8000赫兹的原始音频数据?这将是一个更容易的解决方案:)

谢谢。

1 个答案:

答案 0 :(得分: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函数中为sampleRate(8000)设置正确的值