这段时间在做一个智能学生证项目。其中一个需求是做一个类似微信发语音的功能。由于录音保存的是PCM编码的wav格式音频,文件体积巨大。因此需要对音频进行压缩上传。其中就有一些音频相关的概念需要学习了解,下面是一些简单的整理。
在数码音频系统中,我们需要使用ADC将模拟信号转换成数字信号(通常这个过程被称为录音)。ADC每一次采样都记录了声波在某一时刻的状态,称之为样本,当将一连串样本连起来时,它就成为了一段完整的声波。我们将每一秒钟所采样样本的总数目称之为采样率,单位为Hz。采样率越高,还原的声音也就越真实。由于人耳听觉范围是20Hz~20kHz,根据香农采样定理(也叫奈奎斯特采样定理),理论上来说采样率大于40kHz的音频格式都可以称之为无损格式。但在40kHz采样率下得到的声音已没有细节可言,所有频率都是只采样了一个波峰一个波谷。故此,录音师常用的选择是44.1KHz(现如今大多都是用48000Hz)。以下是一些常见的采样率:
若要尽可能精确地还原声音,只有高采样率是不够的。声波,有频率和振幅,频率高低决定音调,振幅大小决定响度,采样率是对频率采样,位深是对振幅采样。位深也被称为采样精度,单位为Bit。前面说每秒钟所采样样本的总数目是采样率,而位深就是每个样本中信息的比特数。常见的位数选择有16Bit,24Bit。16bit被认为是专业音频领域里面最低的位深度标准,和44.1kHz的采样率一样,共同作为专业音频和消费产品的标准。位深度也直接关系到信噪比的大小,直接影响到所录制信号的整体动态范围。确定了采样率和位深度、通道数,就可以计算出比特数,比特数可以反应音频文件大小。
比特率也叫码率。在无损无压缩格式中(如.wav),码率=采样率x位深度x声道数。在有损压缩中(如.mp3)码率便不等于这个公式了,因为原始信息已经被破坏。码率描述了一秒钟的该音频的信息量,因而声音文件总的大小是码率x总时长。码率单位是比特率(bps,bit per second)。通常听歌时候的128kbps、320kbps均为码率,其中320kbps是mp3格式的最高比特率。但和44.1kHz采样率、16bit位深的wav文件比起来(计算一下双声道的码率是44.1x16x2=1411.2kbps),相去甚远。压缩后码率便发生了变化。无损压缩中的码率与音质无关,有损压缩中的码率和音质正相关。
由于音频的采集和播放是可以叠加的,因此,可以同时从多个音频源采集声音,并分别输出到不同的扬声器,故声道数一般表示声音录制时的音源数量或回放时相应的扬声器数量。单声道(Mono)和双声道(Stereo)比较常见,顾名思义,前者的声道数为1,后者为2。
无损压缩指的是在无损格式之间的压缩(转换),无论压缩(转换)成什么格式,音质都是相同的,并且都能还原成最初同样的文件。平时所说的无损均是指无损压缩,没有无损码率的说法。对于各种格式的压缩都是对应着一种算法(或者说编码),播放的时候需要有解码器进行译码,而且不同的解码器也可能会影响解压出来的文件完整性。常见的无损格式有:
有损压缩指的是声音信息在压缩过程中发生了丢失,且所丢失的声音无法用采样率和位数表示出来。但特点就是压缩后的文件变得很小,常在流媒体中使用。常见的有损格式有: