我正在Android应用程序中读取蓝牙耳机的音频样本。蓝牙SCO以8KHz采样频率工作,用于音频输入。但我需要蓝牙耳机的16KHz音频样本,所以我需要使用上采样。
我在这里以及其他网站上搜索了Android中的上采样,但没有用。如果有人知道用于上采样的预定义Java库,请回答我的问题。
答案 0 :(得分:1)
如果您要求16 kHz,则应自动进行上采样,除非您正在测试的设备有一些奇怪的音频HAL / audioflinger实现。
如果您请求输入设备不支持的采样率,将会(应该)发生的事情是音频HAL将向audioflinger返回错误代码并建议使用的采样率。 audioflinger将尝试使用支持的采样率打开输入流,并在内部进行重新采样,以便应用程序以其请求的速率获取音频数据。
只要请求的采样率不大于支持的采样率的两倍,这应该有效,因此8 - > 16 kHz上采样应该有效。这种上采样的质量是否足够好是你必须自己判断的。
答案 1 :(得分:-1)
最简单的方法是复制每个值并将频率加倍。这不会改善音质,但也不会让它变得更糟。这类似于将图像升级到更高分辨率的方式。没有过滤,只要你以非分数量进行升级,它就不会变得更糟,但也不会更好。
你能说出这张图片之间的区别吗;
这个?
第二张图片实际上是分辨率的两倍,但外观相同。
只要您使用非小数字缩放声音(或图像),就不会引入缩放瑕疵。
但是,如果您想要平滑上采样声音,可以提供各种提示:
https://ccrma.stanford.edu/~jos/resample/