繁体   English   中英

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

[英]Upsampling of PCM audio samples in Android

我正在从android应用程序中的蓝牙耳机读取音频样本。 蓝牙SCO以8KHz的音频IN采样频率工作。 但是我需要来自蓝牙耳机的16KHz音频样本,因此我需要使用上采样。

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

如果您请求16 kHz,则应该自动进行升采样,除非所测试的设备对音频HAL / audioflinger的实现有些奇怪。

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

只要请求的采样率不大于支持的采样率的两倍,它就应该起作用,因此8-> 16 kHz的上采样应该起作用。 此升采样的质量是否足够好,您需要自己判断。

最简单的方法就是复制每个值并使频率翻倍。 这不会改善声音质量,但也不会使声音质量变差。 这类似于您可以将图像放大到更高的分辨率。 如果不进行过滤,只要您按小数比例进行放大,它看起来就不会更糟,但也不会更好。

您能分辨出这张图片的区别吗?

在此处输入图片说明

和这个?

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

只要您缩放具有非小数的声音(或图像),就不会引入缩放伪影。

但是,如果您想要平滑上采样的声音,则有各种提示:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM