在Android中对PCM音频样本进行上采样

时间:2012-10-05 06:56:49

标签: android audio sampling

我正在Android应用程序中读取蓝牙耳机的音频样本。蓝牙SCO以8KHz采样频率工作,用于音频输入。但我需要蓝牙耳机的16KHz音频样本,所以我需要使用上采样。

我在这里以及其他网站上搜索了Android中的上采样,但没有用。如果有人知道用于上采样的预定义Java库,请回答我的问题。

2 个答案:

答案 0 :(得分:1)

如果您要求16 kHz,则应自动进行上采样,除非您正在测试的设备有一些奇怪的音频HAL / audioflinger实现。

如果您请求输入设备不支持的采样率,将会(应该)发生的事情是音频HAL将向audioflinger返回错误代码并建议使用的采样率。 audioflinger将尝试使用支持的采样率打开输入流,并在内部进行重新采样,以便应用程序以其请求的速率获取音频数据。

只要请求的采样率不大于支持的采样率的两倍,这应该有效,因此8 - > 16 kHz上采样应该有效。这种上采样的质量是否足够好是你必须自己判断的。

答案 1 :(得分:-1)

最简单的方法是复制每个值并将频率加倍。这不会改善音质,但也不会让它变得更糟。这类似于将图像升级到更高分辨率的方式。没有过滤,只要你以非分数量进行升级,它就不会变得更糟,但也不会更好。

你能说出这张图片之间的区别吗;

enter image description here

这个?

第二张图片实际上是分辨率的两倍,但外观相同。

只要您使用非小数字缩放声音(或图像),就不会引入缩放瑕疵。

但是,如果您想要平滑上采样声音,可以提供各种提示:

https://ccrma.stanford.edu/~jos/resample/

http://paulbourke.net/miscellaneous/interpolation/

http://leute.server.de/wilde/resample.html#Upsampling