pcm也被称为 脉码编码调制,是音频中没经过压缩的原始数据。
在声音采集中经过抽样,量化,最后编码。
采样:对声音进行一定频率的采集,频率越高,间隔时间越小,声音更接近真实。常用的采样率有8khz,16khz,22.05KHz、44.1KHz、48KHz等。
量化就是对每个采集的数据用数字信号来表示声音的振幅。如我可以用-10表示波谷,10表示波峰。也就是20个量化值来表示一段音乐。当然也可以用100个值表示,这样分得更细,数据更精确。通常量化用一个char 8位表示(0-255),也有short16位(-32767-32767),32位等。
音频数据在存储中就是通过一个个量化数据存储8/16位,8/16位,8/16位等
**
音频:能被人体感知的声音频率,定义为20-20000HZ。声音是通过物体振动产生的声波。是通过介质(空气或固体、液体)传播并能被人或动物听觉器官所感知的波动现象。
介绍:模拟信号是可以听见的声音经过音频线或话筒的传输都是一系列的模拟信号,模拟信号是可以听见的。而数字信号就是用一堆数字记号(二进制1和0)来记录声音,而不是用物理手段来保存信号,实际上我们听不到数字信号。
比较一下模拟时代的录音制作与数码时代的区别:模拟时代是把原始信号以物理方式录制到磁带上(当然在录音棚里完成),然后加工、剪接、修改,最后录制到磁带、LP等广大听众可以欣赏的载体上。这一系列过程全是模拟的,每一步都会损失一些信号,到了听众手里自然是差了好远,更不用说什么HI-FI(高保真)了。数码时代是第一步就把原始信号录成数码音频资料,然后用硬件设备或各种软件进行加工处理,这个过程与模拟方法相比有无比的优越性,因为它几乎不会有任何损耗。对于机器来说这个过程只是处理一下数字而已,当然丢码的可能性也有,但只要操作合理就不会发生。最后把这堆数字信号传输给数字记录设备如CD等,损耗自然小很多。
**
**
PCM:又称脉冲编码调制。人耳听到的是模拟信号,**PCM是把声音从模拟信号转化为数字信号的技术。**原理是用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲(脉搏短暂起伏的电冲击),把这些脉冲的幅值按一定的精度进行量化,这些量化后的数值被连续的输出、传输、处理或记录到存储介质中,所有这些组成了数字音频的产生过程(抽样、量化、编码三个过程)。
描述PCM数据的6个参数:
**
**
如果是单声道的音频文件,采样数据按时间的先后顺序依次存入(有的时候也会采LRLRLR方式存储,只是另一个声道的数据为0),如果是双声道的话就按照LRLRLR的方式存储,存储的时候与字节序有关。big-endian模式如下图所示:
**
**
谈到字节序的问题,必然牵涉到两大CPU派系。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。那么究竟什么是big endian,什么又是little endian?
big endian是指低地址存放最高有效字节(MSB,Most Significant Bit),而little endian则是低地址存放最低有效字节(LSB,Least Significant Bit)。
下面用图像加以说明。比如数字0x12345678在两种不同字节序CPU中的存储顺序如下所示:
Big Endian
低地址 高地址
----------------------------------------------------------------------------->
| 12 | 34 | 56 | 78 |
Little Endian
低地址 高地址
----------------------------------------------------------------------------->
| 78 | 56 | 34 | 12 |
所有网络协议都是采用big endian的方式来传输数据的。所以也把big endian方式称之为网络字节序。当两台采用不同字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后再进行传输。
采样频率是设备一秒钟内对模拟信号的采样次数,在主流的采集卡上分为:(8Khz的电话采样率就可以达到人的对话程度)
22.05KHz:无线电广播;
44.1KHz:音频 CD,MP3等;
48KHz:miniDV、数字电视、DVD、电影和专业音频。
人耳能够感觉到的最高频率为20KHz,要满足人耳的听觉要求,则需要每秒进行40K次的采样,即40KHz。常见的CD采样率为44.1KHz。
采样位数比如8bit(现在少见)、16bit(常用)和24bit,指的是描述数字信号所使用的位数。
声道数:声音在录制或播放时在不同空间位置采集或回访的相互独立的音频信号。
单声道 采样数据为8位的短整数(short);
双声道 采样数据为16位的证书,(int),高八位(左声道)和低八位(右声道)分别代表两个声道。
[时长]s * [采样率]Hz * [采样位数]bit * [声道数] / 8 = [文件大小]byte
某音频信号是采样率为8kHz、声道数、位宽为16bit,时长为1s,则音频数据的大小为:
1 * 8000 * 16 *2 = 256000 bit / 8 = 32000 byte / 1024 = 31.25 KB(双声道)
**
**
音频和视频不一样,视频每一帧都是一张图像,音频数据是流式的,不同的编码格式各自不同的编码标准,拿PCM和MP3做一个对比。PCM因为没有压缩,根据采样率位宽等数据可以得到每秒的音频数据,并不需要帧的概念;MP3是因为压缩后信息比较多,则有了类似H264的帧概念,每一个帧都有帧头。
**
**
播放音乐时,应用程序从存储介质中读取音频数据(MP3、WMA、AAC),进过解码后,最终送到音频驱动程序中的就是PCM数据,反过来,在录音是,音频驱动不停地把采样所得到的PCM数据送回给应用程序,有应用程序完成压缩、存储等任务。所以,音频驱动的两大核心任务就是:
playback:如何把用户空间的应用程序发货来的PCM数据,转化为人耳可以辨别的模拟音频
capture:把mic拾取得到的模拟信号,经过采样、量化,转化为PCM信号送回给用户空间的应用程序。
**