编码
即压缩编码,其原理是压缩掉冗余的信号,冗余信号是指不能被人耳感知到的信号,包括人耳听觉范围之外的音频信号以及被掩蔽掉的音频信号。
模拟音频信号转换为数字信号需要经过采样和量化,
量化的过程被称之为编码,根据不同的量化策略,产生了许多不同的编码方式,
常见的编码方式有:PCM 和ADPCM,这些数据代表着无损的原始数字音频信号,添加一些文件头信息,就可以存储为WAV文件了,它是一种由微软和IBM联合开发的用于音频数字存储的标准,可以很容易地被解析和播放。
几个概念
在进一步了解音频处理和压缩之前需要明确如下几个概念:
1)音调:泛指声音的频率信息,人耳的主观感受为声音的低沉(低音)或者尖锐(高音)。
2)响度:声音的强弱。
3)采样率:声音信息在由模拟信号转化为数字信号过程中的精确程度,采样率越高,声音信息保留的越多。
4)采样精度:声音信息在由模拟信号转化为数字信号过程中,表示每一个采样点所需要的字节数,一般为16bit(双字节)表示一个采样点。
5)声道数:相关的几路声音数量,常见的如单声道、双声道、5.1声道。
6)音频帧长:音频处理或者压缩所操作的一段音频信息,常见的是10ms,20ms,30ms。
1概述
语音编码致力于:降低传输所需要的信道带宽,同时保持输入语音的高质量。
语音编码的目标在于:设计低复杂度的编码器以尽可能低的比特率实现高品质数据传输。
2静音阈值曲线
指在安静环境下,人耳在各个频率能听到声音的阈值。
3临界频带
由于人耳对不同频率的解析度不同,MPEG1/Audio将22khz内可感知的频率范围,依不同编码层,不同取样频率,划分成23~26个临界频带。下图列出理想临界频带的中心频率与频宽。图中可看到,人耳对低频的解析度较好。
4频域上的掩蔽效应
幅值较大的信号会掩蔽频率相近的幅值较小的信号,如下图:
5时域上的遮蔽效应
在一个很短的时间内,若出现了2个声音,SPL(sound pressure level)较大的声音会掩蔽SPL较小的声音。
时域掩蔽效应分前向掩蔽(pre-masking)和后向掩蔽(post-masking),其中post-masking的时间会比较长,约是pre-masking的10倍。
时域遮蔽效应有助于消除前回音。
编码基本手段(1):量化和量化器
基本概念:
量化和量化器:量化是把离散时间上的连续信号,转化成离散时间上的离散信号。
常见的量化器有:均匀量化器,对数量化器,非均匀量化器。
量化过程追求的目标是:最小化量化误差,并尽量减低量化器的复杂度(这2者本身就是一个矛盾)。
常见的量化器的优缺点:
(a)均匀量化器:最简单,性能最差,仅适应于电话语音。
(b)对数量化器:比均匀量化器复杂,也容易实现,性能比均匀量化器好。
(c)非均匀(Non-uniform)量化器:根据信号的分布情况,来设计量化器。信号密集的地方进行细致的量化,稀疏的地方进行粗略量化。
编码基本手段(2):语音编码器
1基本概念
语音编码器分为三种类形:(a)波形编器 、(b)声码器 、(c)混合编码器 。
波形编码器以构造出背景噪单在内的模拟波形为目标。作用于所有输入信号,因此会产生高质量的样值并且耗费较高的比特率。 而声码器 (vocoder)不会再生原始波形。这组编码器 会提取一组参数 ,这组参数被送到接收端,用来导出语音产生模形。声码器语音质量不够好。混合编码器,它融入了波形编码器和声器的长处。
2波形编码器
波形编码器的设计常独立于信号,所以适应于各种信号的编码而不限于语音。
时域编码:
a)PCM:pulse code modulation,是最简单的编码方式。仅仅是对信号的离散和量化,常采用对数量化。
b)DPCM:differential pulse code modulation,差分脉冲编码,只对样本之间的差异进行编码。前一个或多个样本用来预测当前样本值。用来做预测的样本越多,预测值越精确。真实值和预测值之间的差值叫残差,是编码的对象。
c)ADPCM:adaptive differential pulse code modulation,自适应差分脉冲编码。即在DPCM的基础上,根据信号的变化,适当调整量化器和预测器,使预测值更接近真实信号,残差更小,压缩效率更高。
频域编码:
频域编码是把信号分解成一系列不同频率的元素,并进行独立编码。
a)sub-band coding:子带编码是最简单的频域编码技术。
是将原始信号由时间域转变为频率域,然后将其分割为若干个子频带,并对其分别进行数字编码的技术。
它是利用带通滤波器(BPF)组把原始信号分割为若干(例如m个)子频带(简称子带)。将各子带通过等效于单边带调幅的调制特性,将各子带搬移到零频率附近,分别经过BPF(共m个)之后,再以规定的速率(奈奎斯特速率)对各子带输出信号进行取样,并对取样数值进行通常的数字编码,其设置m路数字编码器。将各路数字编码信号送到多路复用器,最后输出子带编码数据流。对不同的子带可以根据人耳感知模型,采用不同量化方式以及对子带分配不同的比特数。
b)transform coding:DCT编码。
channel vocoder: 利用人耳对相位的不敏感。
homomorphic vocoder:能有效地处理合成信号。
formant vocoder: 以用语音信号的绝大部分信息都位于共振峰的位置与带宽上。
linear predictive vocoder:最常用的声码器。
4混合编码器
波形编码器试图保留被编码信号的波形,能以中等比特率(32kbps)提供高品质语音,但无法应用在低比特率场合。声码器试图产生在听觉上与被编码信号相似的信号,能以低比特率提供可以理解的语音,但是所形成的语音听起来不自然。
混合编码器结合了2者的优点:
RELP: 在线性预测的基础上,对残差进行编码。
机制为:只传输小部分残差,在接受端重构全部残差(把基带的残差进行拷贝)。
MPC: multi-pulse coding,对残差去除相关性,
用于弥补声码器将声音简单分为voiced和unvoiced,而没有中间状态的缺陷。
CELP: codebook excited linear prediction,
用声道预测其和基音预测器的级联,更好逼近原始信号。
MBE: multiband excitation,
多带激励,目的是避免CELP的大量运算,获得比声码器更高的质量。
1.WAV编码:
WAV编码是在PCM数据格式的前面加上44字节,分别用来描述PCM的采样率、声道数、数据格式等信息。特点:音质非常好、大量软件都支持。使用场景:多媒体开发的中间文件、保存音乐和音效素材等。
2.MP3编码:
MP3具有不错的压缩比,使用LAME编码的中高码率的MP3文件,听感上非常接近源WAV文件。特点:音质在128Kbps以上表现还不错,压缩比比较高,兼容性好。使用场景:高比特率下对兼容性有要求的音乐欣赏。
3.AAC编码:
AAC是新一代的音频有损压缩技术,它通过一些附加编码技术(如PS、SBR等),衍生出LC-AAC、HE-AAC、HE-AAC V2三中主要编码格式。特点:在小于128kbps码率下表现优异,且多用于视频中的音频编码。适用场景:128Kbps 码率下的音频编码,多用于视频中的音频轨的编码。
4.Ogg编码:
Ogg编码音质好、完全免费。可以用更小的码率达到更好的音质,128Kbps的Ogg比192Kbps甚至更高的MP3还要出色。但是目前媒体软件支持上还是不够友好。特点:高中低码率下都有良好的表现,兼容性不够好,流媒体特性不支持。使用场景:语音聊天的音频消息场景。
5.FLAC编码:
FLAC中文可解释为无损音频压缩编码。FLAC是一套著名的自由音频压缩编码,其特点是无损压缩。不同于其他有损压缩编码如MP3及AAC,它不会破坏任何原有的音频信息,所以可以还原音乐光盘音质 。2012年以来它已被很多软件及硬件音频产品(如CD等)所支持。特点:无损压缩、压缩率高于普通文件夹压缩格式(ZIP、rar等)。使用场景:高品质音乐等。
本质:消除冗余数据
第一:频谱掩蔽效应:
人耳所能察觉的声音信号的频率范围为20Hz~20KHz,在这个频率范围以外的音频信号属于冗余信号。
人耳听觉范围外的音频信号: 20Hz~20KHz
去除人耳听觉频率范围临界附近的值
大声音附近如果有小的声音可以去除
时域屏蔽效应
高声附近50ms内如果声音比较小可以去掉
无损压缩
第二:时域掩蔽效应:
当强音信号和弱音信号同时出现时,弱信号会听不到,因此,弱音信号也属于冗余信号。
OPUS、AAC、Vorbis、Speex、iLBC、AMR、G.711等
OPUS:
目前性能最好、质量最高,但是由于时间短,暂时还没有普及,rtmp协议还不支持它。
AAC:
有损压缩算法,目的取缔mp3,压缩率很高、但还能接近原始的质量;
MPEG-4标准出现后,加入了SBR技术和PS技术,目前常用规格有AAC LC、AAC HE V1、AAC HE V2;
AAC LV:低复杂度,码流128k
AAC HE V1:AAC+SBR 分频编码,低频(减少采样率)和高频(增加采样率)分开编码
AAC HE V2:AAC+SBR+PS 由于声道间相同的性质很大,所以对于其它声道只要存储一些差异性的特征
AAC格式:
ADIF-只能从头开始解码,常用于磁盘文件中;
ADTS 每帧都有一个头信息,可以在音频流的任何位置解码,但是占用比较大。
AAC编码库:
Libfdk_AAC > ffmpeg AAC > libfaac > libvo_aacenc