pcm
,wav
,arm
及小程序专用的m4a
格式,要求参数为16000采样率,16bit位深,单声道。
PCM
编码,全称为"脉冲编码调制",是一种将模拟信号转换成数字信号的方法。模拟信号通常指连续的物理量,例如温度、湿度、速度、光照、声响等等,模拟信号在任意时刻都有对应的值;数字信号通常是模拟信号经过采样、量化和编码等几个步骤后得到的。
比如现在麦克风采集到了一段2秒的音频模拟信号,它是连续的,我们有一个很菜的声卡,采集频率为10Hz
,那么经过采样后就得到了20个离散的数据点,这20个点对应的声音值可能是各种精度的,这对于存储和后续的使用而言都不方便,此时就需要将这些值也离散化,比如在上例中,信号的范围是0~52dB,假设我们希望将0~63dB的值都以整数形式记录下来,如果采用6个bit
位来存储,那么就可以识别(2^6-1=63)个数值,这样采集的信号通过四舍五入后都以整数形式保存就可以了,最小精度为1dB;如果用7个bit
位来保存,可存储的不同数值个数为(2^7-1=127)个,如果同样将0~63dB映射到这个范围上的话,那么最小精度就是0.5dB,很明显这样的处理肯定是有精度损失的,使用的位数越多精度越高,计算机中自然需要使用8的整数倍的bit
位来进行存储,经过上述处理后数据就被转换成了一串0
和1
组成的序列,这样的音频数据是没有经过任何压缩编码处理的,也被称为“裸流数据”或“原始数据”。从上面的示例中很容易看出,用10Hz
的采样率,8bit
位存储采样点数值时,记录2秒的数据一共会产生2X10X8 = 160个bit
位,而用16bit
位来存储采样点数据时,记录1秒的数据也会产生1X10X16 = 160个bit
位,如果没有任何附加的说明信息,就无法知道这段数据到底该怎么使用。按照指定要求进行编码后得到的序列就是pcm
数据,它在使用之前通常需要声明采集相关的参数。
下图就是一段采样率为10Hz
,位深为3bit
的pcm
数据,你可以直观地看到每个步骤所做的工作。

wav
格式也是一种无损格式,它是依据规范在