PCM是脉冲编码调制(Pulse Code Modulation)。是一种无压缩的原始编码格式。
常识概念
采样率:是指单位时间(1s)内采集音频数据的采样点数目。如1s内采集40000个采样点,则采样率为40kHZ。
dB:描述声音的响度,即声音能量波的振幅。
人耳的听觉范围:20HZ-20kHZ,较为敏感的范围是4kHZ(有说1kHZ)~5kHZ。
PCM的编解码:声音从自然界的能量波,经过模数转换(模拟信号转换为数字信号)后,再按照指定位数进行量化(比如指定16bit表示全部的采样点,也就是每个采样点都用16bits的二进制表示,则有‘2^16’来表达所有的采样点)。这种完全无任何压缩的二进制编码格式的音频数据,就是PCM。
音频采样原理
Nyquist(奈奎斯特)采样定律:采样率大于或等于连续信号最高频率分量的2倍时,采样信号可以用来完美重构原始连续信号。
重采样的过程:比如音频原来的采样率是44.1Khz,但由于某些原因要转换为48Khz,这时候就需要对音频进行重采样。【非整数倍重采样的失真需要注意】
- 低转高:先插值后用低通滤波器滤镜像频率。滤波器处理不好会引起高频额外的相移,也可能存在高频没滤干净的镜像成分。镜像成分就引起了谐波失真。但通常整数倍低转高相对失真较少。
- 高转低:先滤波后抽取采样点。常有可能出现混叠。
- 采样率转换Sample Rate Convert算法:开源最好的SRC算法是r8brain,比libsamplerate性能好不少。汇总见SRC算法比较