一、声音的物理本质
声音是一种压力波,物体振动引起空气振动,产生疏密变化,形成声波(像石头落到水里形成的波纹)。声音有三个重要要素:频率、 振幅和波形, 频率代表音阶的高低, 振幅代表响度, 波形代表音色。频率越高, 波长就越短。 低频声响的波长则较长, 所以其可以更容易地绕过障碍物, 因此能量衰减就小, 声音就会传得远, 反之则会得到完全相反的结论;振幅指声音能量的大小(响度),分贝常用于描述响度的大小;在同样的音调(频率)和响度(振幅)下,不同物体通过介质所产生的波形不同,形成不同的音色。
人耳对3~4kHz频率范围内的声音比较敏感。 频率范围较宽的音乐, 其声压以80~90dB为最佳, 超过90dB将会损害人耳(105dB为人耳极限) 。
回声是因为声音在传播过程中遇到障碍物会反弹回来, 再次被我们听到。若两种声音传到我们的耳朵里的时差小于80毫秒, 我们就无法区分开这两种声音了。
共鸣:两个频率相同的物体, 敲击其中一个物体时另一个物体也会振动发声。
二、数字音频
首先,了解一下模拟信号和数字信号。模拟信号是指用连续变化的物理量所表达的信息,通常又把模拟信号称为连续信号,它在一定的时间范围内可以有无限多个不同的取值。而数字信号是指在取值上是离散的、不连续的信号。实际生产生活中的各种物理量,如摄相机摄下的图像、录音机录下的声音、车间控制室所记录的压力、流速、转速、湿度等等都是模拟信号。数字信号是在模拟信号的基础上经过采样、量化和编码而形成的。
麦克风是如何采集声音的
麦克风里面有一层非常薄而且十分敏感碳膜,说话的声音会压缩空气也会压缩这层碳膜, 碳膜在受到挤压时也会发出振动, 在碳膜的下方就是一个电极, 碳膜在振动的时候会接触电极, 接触时间的长短和频率与声波的振动幅度和频率有关, 这样就完成了声音信号到电信号的转换。之后再经过放大电路处理, 就可以实施后面的采样量化处理了。
音频采样
音频采样就是将模拟信号的音频转换成数字信号音频的过程,通过模/数转换器(A/D)对声波进行采样,每一次采样都记录下了原始模拟声波在某一时刻的状态,称之为样本,将一串的样本连接起来,就可以描述一段声波。把每一秒钟所采样的次数称为采样频率,单位为HZ(赫兹)。其实,采样就是在时间轴上对信号进行数字化。
对于高质量的音频信号, 其频率范围(人耳能够听到的频率范围) 是20Hz~20kHz, 所以采样频率一般为44.1kHz, 这样就可以保证采样声音达到20kHz也能被数字化, 从而使得经过数字化处理之后, 人耳听到的声音质量不会被降低。 而所谓的44.1kHz就是代表1秒会采样44100次。
音频量化
音频量化指将模拟信号的连续取值近似为有限多个(数字信号)离散值的过程,通过采样之后,获取了一系列样本,量化就是确定这些样本的取值范围。比如用16比特的二进制信号来表示声音的一个采样, 而16比特(一个short) 所表示的范围是[-32768, 32767], 共有65536个可能取值, 因此最终模拟的音频
信号在幅度上也分为了65536层。
音频编码
音频编码, 就是按照一定的格式记录采样和量化后的数字数据, 比如顺序存储或压缩存储, 等
等。描述一段音频数据一般需要这几个概念:采样率(sampleRate)、量化格式(sampleFormat) 、声道数(channel)。 以CD的音质为例:采样率为44100,量化格式为16比特(2字节),声道数为2,这些信息就描述了CD的音质。此外还有一个概念:比特率,即1秒时间内的比特数目, 它用于衡量音频数据单位时间内的容量大小。以刚才的CD音质为例,其比特率计算为:44100 * 16 * 2 = 1378.125kbps 。如果1分钟则需要的存储空间为:1378.125 * 60 / 8 / 1024 = 10.09MB(乘以60分钟,bit换算为byte要除以8,字节换算到MB除以1024)。
1分钟音频数据就需要10.09MB的存储空间,数据量比较大,所以音频存储时一般会进行压缩编码。压缩算法包括有损压缩和无损压缩,无损压缩是指解压后的数据可以完全复原。
下面介绍几种常用的压缩编码格式
(1) WAV编码
PCM(脉冲编码调制) 是Pulse Code Modulation的缩写,是音频的裸数据格式,而WAV编码的一种实现(有多种实现方式, 但是都不会进行压缩操作) 就是在PCM数据格式的前面加上44字节, 分别用来描述PCM的采样率、 声道数、 数据格式等信息。
特点: 音质非常好, 大量软件都支持。
适用场合: 多媒体开发的中间文件、 保存音乐和音效素材。
(2) MP3
编码MP3具有不错的压缩比, 使用LAME编码(MP3编码格式的一种实现) 的中高码率的MP3文件,听感上非常接近源WAV文件, 当然在不同的应用场景下, 应该调整合适的参数以达到最好的效果。
特点: 音质在128Kbit/s以上表现还不错, 压缩比比较高, 大量软件和硬件都支持, 兼容性好。
适用场合: 高比特率下对兼容性有要求的音乐欣赏。
(3) AAC编码
AAC是新一代的音频有损压缩技术, 它通过一些附加的编码技术(比如PS、 SBR等),衍生出了LC-AAC、 HE-AAC、 HE-AAC v2三种主要的编码格式。 LC-AAC是比较传统的AAC, 相对而言, 其主要应用于中高码率场景的编码(≥80Kbit/s) ; HE-AAC(相当于AAC+SBR)主要应用于中低码率场景的编码(≤80Kbit/s) ; 而新近推出的HE-AAC v2(相当于AAC+SBR+PS) 主要应用于低码率场景的编码(≤48Kbit/s) 。 事实上大部分编码器都设置为≤48Kbit/s自动启用PS技术, 而>48Kbit/s则不加PS, 相当于普通的HE-AAC。
特点: 在小于128Kbit/s的码率下表现优异, 并且多用于视频中的音频编码。
适用场合: 128Kbit/s以下的音频编码, 多用于视频中音频轨的编码。
(4) Ogg编码
Ogg是一种非常有潜力的编码, 在各种码率下都有比较优秀的表现, 尤其是在中低码率场景下。 Ogg除了音质好之外, 还是完全免费的, 这为Ogg获得更多的支持打好了基础。 Ogg有着非常出色的算法,可以用更小的码率达到更好的音质, 128Kbit/s的Ogg比192Kbit/s甚至更高码率的MP3还要出色。 但目前因为还没有媒体服务软件的支持, 因此基于Ogg的数字广播还无法实现。 Ogg目前受支持的情况还不够好, 无论是软件上的还是硬件上的支持, 都无法和MP3相提并论。
特点: 可以用比MP3更小的码率实现比MP3更好的音质, 高中低码
率下均有良好的表现, 兼容性不够好, 流媒体特性不支持。适用场合: 语音聊天的音频消息场景
参考资料:
《百度百科》
《音视频开发指南-基于android与ios的平台实践》