我需要将 16000 赫兹 PCM 16 位波形文件下采样到 8000 赫兹。我对音频处理知之甚少(几乎没有),我只了解所有程序员都了解的位、字节、移位等。
它是一个 Windows Phone 应用程序。
你有什么建议?此外,据我了解,XNA 框架中 Microphone 类的 SampleRate 是不可定制的,因此它只能为您提供 16000 赫兹的数据。有没有办法在 Windows Phone 中获取 8000 赫兹的原始音频数据?那将是一个更容易的解决方案:)
谢谢你。
我需要将 16000 赫兹 PCM 16 位波形文件下采样到 8000 赫兹。我对音频处理知之甚少(几乎没有),我只了解所有程序员都了解的位、字节、移位等。
它是一个 Windows Phone 应用程序。
你有什么建议?此外,据我了解,XNA 框架中 Microphone 类的 SampleRate 是不可定制的,因此它只能为您提供 16000 赫兹的数据。有没有办法在 Windows Phone 中获取 8000 赫兹的原始音频数据?那将是一个更容易的解决方案:)
谢谢你。
如果您找不到好的解决方案并且必须继续进行自己的转换,以下可能会对您有所帮助。
假设您使用 XNA 框架麦克风+wav,如下所示: http ://damianblog.com/2011/02/07/storing-wp7-recorded-audio-as-wav-format-streams/
然后,要获得 8khz 而不是 16khz,您只需从mic.BufferReady 事件中返回的数据中删除每秒的值。或者最好使用插值(而不是每秒删除一个值,您可以保存两个值的平均值)
for (int i=0; i < arr.length/2;i++) res[i] = (arr[2*i]+arr[2*i+1]))
也不要忘记在 WriteWavHeader 函数中为 sampleRate (8000) 设置正确的值