第9章 MPEG声音.docx
《第9章 MPEG声音.docx》由会员分享,可在线阅读,更多相关《第9章 MPEG声音.docx(28页珍藏版)》请在冰豆网上搜索。
第9章MPEG声音
第9章MPEG声音
与前面章节介绍的波形声音压缩编码(如ADPCM)和参数编码(如LPC)不同,MPEG-1和MPEG-2的声音数据压缩编码不是依据波形本身的相关性和模拟人的发音器官的特性,而是利用人的听觉系统的特性来达到压缩声音数据的目的,这种压缩编码称为感知声音编码(perceptualaudiocoding)。
进入20世纪80年代之后,尤其最近几年,人类在利用自身的听觉系统的特性来压缩声音数据方面取得了很大的进展,先后制定了MPEG-1Audio,MPEG-2Audio和MPEG-2AAC等标准。
本章涉及的许多具体算法已经超出本教材的要求。
对于要求深入钻研的读者,请参考本章提供的参考文件或者浏览网址。
9.1听觉系统的感知特性
许多科学工作者一直在研究听觉系统对声音的感知特性,下面介绍已经用在MPEGAudio压缩编码算法中的三个特性:
响度、音高和掩蔽效应。
9.1.1.对响度的感知
声音的响度就是声音的强弱。
在物理上,声音的响度使用客观测量单位来度量,即dyn/cm2(达因/平方厘米)(声压)或W/cm2(瓦特/平方厘米)(声强)。
在心理上,主观感觉的声音强弱使用响度级“方(phon)”或者“宋(sone)”来度量。
这两种感知声音强弱的计量单位是完全不同的两种概念,但是它们之间又有一定的联系。
当声音弱到人的耳朵刚刚可以听见时,我们称此时的声音强度为“听阈”。
例如,1kHz纯音的声强达到10-16w/cm2(定义成零dB声强级)时,人耳刚能听到,此时的主观响度级定为零方。
实验表明,听阈是随频率变化的。
测出的“听阈—频率”曲线如图9-01所示。
图中最靠下面的一根曲线叫做“零方等响度级”曲线,也称“绝对听阈”曲线,即在安静环境中,能被人耳听到的纯音的最小值。
另一种极端的情况是声音强到使人耳感到疼痛。
实验表明,如果频率为1kHz的纯音的声强级达到120dB左右时,人的耳朵就感到疼痛,这个阈值称为“痛阈”。
对不同的频率进行测量,可以得到“痛阈—频率”曲线,如图9-01中最靠上面所示的一根曲线。
这条曲线也就是120方等响度级曲线。
在“听阈—频率”曲线和“痛阈—频率”曲线之间的区域就是人耳的听觉范围。
这个范围内的等响度级曲线也是用同样的方法测量出来的。
由图9-01可以看出,1kHz的10dB的声音和200Hz的30dB的声音,在人耳听起来具有相同的响度。
图9-01“听阈—频率”曲线
图9-01说明人耳对不同频率的敏感程度差别很大,其中对2kHz~4kHz范围的信号最为敏感,幅度很低的信号都能被人耳听到。
而在低频区和高频区,能被人耳听到的信号幅度要高得多。
9.1.2.对音高的感知
客观上用频率来表示声音的音高,其单位是Hz。
而主观感觉的音高单位则是“美(Mel)”,主观音高与客观音高的关系是
其中
的单位为Hz,这也是两个既不相同又有联系的单位。
人耳对响度的感觉有一个范围,即从听阈到痛阈。
同样,人耳对频率的感觉也有一个范围。
人耳可以听到的最低频率约20Hz,最高频率约18000Hz。
正如测量响度时是以1kHz纯音为基准一样,在测量音高时则以40dB声强为基准,并且同样由主观感觉来确定。
测量主观音高时,让实验者听两个声强级为40dB的纯音,固定其中一个纯音的频率,调节另一个纯音的频率,直到他感到后者的音高为前者的两倍,就标定这两个声音的音高差为两倍。
实验表明,音高与频率之间也不是线性关系。
测出的“音高—频率”曲线如图9-02所示。
图9-02“音高—频率”曲线
9.1.3.掩蔽效应
一种频率的声音阻碍听觉系统感受另一种频率的声音的现象称为掩蔽效应。
前者称为掩蔽声音(maskingtone),后者称为被掩蔽声音(maskedtone)。
掩蔽可分成频域掩蔽和时域掩蔽。
1.频域掩蔽
一个强纯音会掩蔽在其附近同时发声的弱纯音,这种特性称为频域掩蔽,也称同时掩蔽(simultaneousmasking)。
如图9-03所示,一个声强为60dB、频率为1000Hz的纯音,另外还有一个1100Hz的纯音,前者比后者高18dB,在这种情况下我们的耳朵就只能听到那个1000Hz的强音。
如果有一个1000Hz的纯音和一个声强比它低18dB的2000Hz的纯音,那么我们的耳朵将会同时听到这两个声音。
要想让2000Hz的纯音也听不到,则需要把它降到比1000Hz的纯音低45dB。
一般来说,弱纯音离强纯音越近就越容易被掩蔽。
图9-03声强为60dB、频率为1000Hz纯音的掩蔽效应
在图9-04中的一组曲线分别表示频率为250Hz、1kHz、4kHz和8kHz纯音的掩蔽效应,它们的声强均为60dB。
从图中可以看到:
①在250Hz、1kHz、4kHz和8kHz纯音附近,对其他纯音的掩蔽效果最明显,②低频纯音可以有效地掩蔽高频纯音,但高频纯音对低频纯音的掩蔽作用则不明显。
图9-04不同纯音的掩蔽效应曲线
由于声音频率与掩蔽曲线不是线性关系,为从感知上来统一度量声音频率,引入了“临界频带(criticalband)”的概念。
通常认为,在20Hz到16kHz范围内有24个临界频带,如表9-01所示。
临界频带的单位叫Bark(巴克),
∙1Bark=一个临界频带的宽度
∙
(频率)<500Hz的情况下,1Bark≈
/100
∙
(频率)>500Hz的情况下,1Bark≈9+4log(
/1000)
以上我们讨论了响度、音高和掩蔽效应,尤其是人的主观感觉。
其中掩蔽效应尤为重要,它是心理声学模型的基础。
表9-01临界频带[16]
临界
频率(Hz)
临界
频率(Hz)
频带
低端
高端
宽度
频带
低端
高端
宽度
0
0
100
100
13
2000
2320
320
1
100
200
100
14
2320
2700
380
2
200
300
100
15
2700
3150
450
3
300
400
100
16
3150
3700
550
4
400
510
110
17
3700
4400
700
5
510
630
120
18
4400
5300
900
6
630
770
140
19
5300
6400
1100
7
770
920
150
20
6400
7700
1300
8
920
1080
160
21
7700
9500
1800
9
1080
1270
190
22
9500
12000
2500
10
1270
1480
210
23
12000
15500
3500
11
1480
1720
240
24
15500
22050
6550
12
1720
2000
280
2.时域掩蔽
除了同时发出的声音之间有掩蔽现象之外,在时间上相邻的声音之间也有掩蔽现象,并且称为时域掩蔽。
时域掩蔽又分为超前掩蔽(pre-masking)和滞后掩蔽(post-masking),如图9-05所示。
产生时域掩蔽的主要原因是人的大脑处理信息需要花费一定的时间。
一般来说,超前掩蔽很短,只有大约5~20ms,而滞后掩蔽可以持续50~200ms。
这个区别也是很容易理解的。
图9-05时域掩蔽
9.2MPEGAudio与感知特性
MPEGAudio标准在本书中是指MPEG-1Audio、MPEG-2Audio和MPEG-2AAC,它们处理10Hz~20000Hz范围里的声音数据,数据压缩的的主要依据是人耳朵的听觉特性,使用“心理声学模型(psychoacousticmodel)”来达到压缩声音数据的目的。
心理声学模型中一个基本的概念就是听觉系统中存在一个听觉阈值电平,低于这个电平的声音信号就听不到,因此就可以把这部分信号去掉。
听觉阈值的大小随声音频率的改变而改变,各个人的听觉阈值也不同。
大多数人的听觉系统对2kHz~5kHz之间的声音最敏感。
一个人是否能听到声音取决于声音的频率,以及声音的幅度是否高于这种频率下的听觉阈值。
心理声学模型中的另一个概念是听觉掩饰特性,意思是听觉阈值电平是自适应的,即听觉阈值电平会随听到的不同频率的声音而发生变化。
例如,同时有两种频率的声音存在,一种是1000Hz的声音,另一种是1100Hz的声音,但它的强度比前者低18分贝,在这种情况下,1100Hz的声音就听不到。
也许你有这样的体验,在一安静房间里的普通谈话可以听得很清楚,但在播放摇滚乐的环境下同样的普通谈话就听不清楚了。
声音压缩算法也同样可以确立这种特性的模型来取消更多的冗余数据。
9.3MPEG-1Audio
9.3.1声音编码
声音的数据量由两方面决定:
采样频率和样本精度。
对单声道信号而言,每秒钟的数据量(位数)=采样频率⨯样本精度。
要减小数据量,就需要降低采样频率或者降低样本精度。
但是人耳可听到的频率范围大约是20Hz~20kHz。
根据奈奎斯特理论,要想不失真地重构信号,采样频率不能低于40kHz。
再考虑到实际中使用的滤波器都不可能是理想滤波器,以及考虑各国所用的交流电源的频率,为保证声音频带的宽度,所以采样频率一般不能低于44.1kHz。
这样,压缩就必须从降低样本精度这个角度出发,即减少每位样本所需要的位数。
第3章介绍了线性预测编码(linearpredictivecoding,LPC)的方法,这种方法主要是针对话音的编码,这种编码方法称为音源特定编码法(sourcespecificmethods)。
MPEG-1和MPEG-2的声音压缩采用了另一种方法,称为子带编码(sub-bandcoding,SBC)方法,这也是一种功能很强而且很有效的声音信号编码方法。
与音源特定编码法不同,SBC不局限于只对话音进行编码,也不局限于哪一种声源。
这种方法的具体思想是首先把时域中的声音数据变换到频域,对频域内的子带分量分别进行量化和编码,然后根据心理声学模型确定样本的精度,从而达到压缩数据量的目的。
MPEG声音数据压缩的基础是量化。
虽然量化会带来失真,但MPEG标准要求量化失真对于人耳来说是感觉不到的。
在MPEG标准的制定过程中,MPEG-Audio委员会作了大量的主观测试实验。
实验表明,采样频率为48kHz、样本精度为16比特的声音数据压缩到256kb/s时,即在6:
1的压缩率下,即使是专业测试员也很难分辨出是原始声音还是编码压缩后的声音。
MPEGAudio是一个子带编码系统,声音数据压缩算法的根据是心理声学模型,心理声学模型中一个最基本的概念是听觉系统中存在一个听觉阈值电平,低于这个电平的声音信号就听不到。
听觉阈值的大小随声音频率的改变而改变,各个人的听觉阈值也不同。
大多数人的听觉系统对2kHz~5kHz之间的声音最敏感。
一个人是否能听到声音取决于声音的频率,以及声音的幅度是否高于这种频率下的听觉阈值。
心理声学模型中的另一个概念是听觉掩饰特性,意思是听觉阈值电平是自适应的,即听觉阈值电平会随听到的频率不同的声音而发生变化。
例如,在一般环境下房间里的普通谈话可以听得很清楚,但在摇滚乐环境下同样的普通谈话就听不清楚了。
声音压缩算法也同样可以确立这种特性的模型,根据这个模型可取消冗余的声音数据。
MPEGAudio的压缩算法框图如图9-06所示。
图9-06MPEGAudio压缩算法框图
DolbyAC-3同样利用人的听觉系统特性来压缩声音数据,它的压缩编码算法框图如图9-07所示。
有兴趣的读者请浏览网址:
http:
//atsc.org/stan&rps.html(浏览日期:
1999年2月3日)
图9-07DolbyAC-3压缩编码算法框图
9.3.2声音的性能
目前,除了Dolby公司的数字声音数据压缩编码算法AC-3(AudioCodeNumber3)之外,其他的声音压缩算法主要是针对话音。
例如,μ-law,A-Law,ADPCM(adaptivedifferencepulsecodemodulation),GSM(GlobalSystemforMobilecommunications)、CELP(codeexcitedlinearprediction)和MELP(mixedexcitationlinearprediction)等算法。
当这些算法用来压缩宽带声音(如音乐)信号时,在相同压缩比的情况下,输出的声音质量比较低。
而MPEG声音(ISO/IEC11172-3)压缩算法是世界上第一个高保真声音数据压缩国际标准,并且得到了极其广泛的应用。
虽然MPEG声音标准是MPEG标准的一部分,但它也完全可以独立应用。
MPEG-1声音标准的主要性能如下:
(1)如图9-08所示,MPEG编码器的输入信号为线性PCM信号,采样率为32,44.1或48kHz,输出为32kb/s~384kb/s。
图9-08MPEG编码器的输入/输出
(2)MPEG声音标准提供三个独立的压缩层次:
层1(Layer1)、层2(Layer2)和层3(Layer3),用户对层次的选择可在复杂性和声音质量之间进行权衡。
①层1的编码器最为简单,编码器的输出数据率为384kb/s,主要用于小型数字盒式磁带(digitalcompactcassette,DCC)。
②层2的编码器的复杂程度属中等,编码器的输出数据率为256kb/s~192kb/s,其应用包括数字广播声音(digitalbroadcastaudio,DBA)、数字音乐、CD-I(compactdisc-interactive)和VCD(videocompactdisc)等。
③层3的编码器最为复杂,编码器的输出数据率为64kb/s,主要应用于ISDN上的声音传输。
在尽可能保持CD音质为前提的条件下,MPEG声音标准一般所能达到的压缩率如表9-02所示,从编码器的输入到输出的延迟时间如表9-03所示。
表9-02MPEG声音的压缩率
层次
算法
压缩率
立体声信号所对应的
位率(kb/s)
1
MUSICAM*
4:
1
384
2
MUSICAM*
6:
1~8:
1
256~192
3
ASPEC**
10:
1~12:
1
128~112
*MUSICAM(MaskingpatternadaptedUniversalSubbandIntegratedCodingAndMultiplexing)自适应声音掩蔽特性的通用子带综合编码和复合技术
**ASPEC(AdaptiveSpectralPerceptualEntropyCodingofhighqualitymusicalsignal)高质量音乐信号自适应谱感知熵编码(技术)
表9-03MPEG编码解码器的延迟时间
延迟时间
理论最小值(ms)
实际实现中的一般值(ms)
层1(Layer1)
19
<50
层2(Layer2)
35
100
层3(Layer3)
59
150
(3)可预先定义压缩后的数据率,如表9-04所示。
另外,MPEG声音标准也支持用户预定义的数据率。
表9-04MPEG层3在各种数据率下的性能:
音质要求
声音带宽(kHz)
方式
数据率(kb/s)
压缩比
电话
2.5
单声道
8
96:
1
优于短波
5.5
单声道
16
48:
1
优于调幅广播
7.5
单声道
32
24:
1
类似于调频广播
11
立体声
56~64
26~24:
1
接近CD
15
立体声
96
16:
1
CD
>15
立体声
112~128
12~10:
1
(4)编码后的数据流支持循环冗余校验CRC(cyclicredundancycheck)。
(5)MPEG声音标准还支持在数据流中添加附加信息。
9.3.3子带编码
在第三章已经介绍了子带编码的基本思想,MPEG-1使用子带编码来达到既压缩声音数据又尽可能保留声音原有质量的目的。
听觉系统有许多特性,子带编码的理论根据是听觉系统的掩蔽特性,并且主要是利用频域掩蔽特性。
SBC的基本想法就是在编码过程中保留信号的带宽而扔掉被掩蔽的信号,其结果是编码之后还原的声音,也就是解码或者叫做重构的声音信号与编码之前的声音信号不相同,但人的听觉系统很难感觉到它们之间的差别。
这也就是说,对听觉系统来说这种压缩是“无损压缩”。
大多数SBC编码器都使用如图9-09所示的结构,这也是MPEG-1声音编码器的结构图。
输入声音信号经过一个“时间-频率多相滤波器组”变换到频域里的多个子带中。
输入声音信号同时经过“心理声学模型(计算掩蔽特性)”,该模型计算以频率为自变量的噪声掩蔽阈值(maskingthreshold),查看输入信号和子带中的信号以确定每个子带里的信号能量与掩蔽阈值的比率。
“量化和编码”部分用信掩比(signal-to-maskratio,SMR)来决定分配给子带信号的量化位数,使量化噪声低于掩蔽阈值。
最后通过“数据流帧包装”将量化的子带样本和其他数据按照规定的称为“帧(frame)”的格式组装成位数据流。
信掩比是指最大的信号功率与全局掩蔽阈值之比,图9-10表示了某个子带中的信掩比。
图9-09MPEG声音编码器结构图
SNR(signalnoiseratio)——信号噪声比
SMR(signal-to-maskratio)——信号掩蔽比
NMR(noise-to-maskratio)——噪声掩蔽比
图9-10掩蔽阈值和SMR
图9-11是MPEG-1声音解码器的结构图。
解码器对位数据流进行解码,恢复被量化的子带样本值以重建声音信号。
由于解码器无需心理声学模型,只需拆包、重构子带样本和把它们变换回声音信号,因此解码器就比编码器简单得多。
图9-11MPEG声音解码器结构图
9.3.4多相滤波器组
在图9-09中,用来分割子带也就是时间-频率变换部件是一个多相滤波器组。
在MPEG-1中,多相滤波器组是MPEG声音压缩的关键部分部件之一,它把输入信号变换到32个频域子带中去。
子带的划分方法有两种,一种是线性划分,另一种是非线性划分。
如果把声音频带划分成带宽相等的子带,这种划分就不能精确地反映人耳的听觉特性,因为人耳的听觉特性是以“临界频带”来划分的,在一个临界频带之内,很多心理声学特性都是一样的。
图9-12对多相滤波器组的带宽和临界频带的带宽作了比较。
从图中可以看到,在低频区域,一个子带覆盖好几个临界频带。
在这种情况下,某个子带中量化器的比特分配就不能根据每个临界频带的掩蔽阈值进行分配,而要以其中最低的掩蔽阈值为准。
如果需要具体计算多相滤波器组的输出信号,请参看参考文献和站点[1]
图9-12滤波器组的带宽与临界频带带宽的比较[1]
9.3.5编码层
MPEG声音压缩定义了3个分明的层次,它们的基本模型是相同的。
层1是最基础的,层2和层3都在层1的基础上有所提高。
每个后继的层次都有更高的压缩比,但需要更复杂的编码解码器。
MPEG声音的每一个层都自含SBC编码器,其中包含如图9-09所示的“时间-频率多相滤波器组”、“心理声学模型(计算掩蔽特性)”、“量化和编码”和“数据流帧包装”,而高层SBC可使用低层SBC编码的声音数据。
MPEG的声音数据分成帧(frame),层1每帧包含384个样本的数据,每帧由32个子带分别输出的12个样本组成。
层2和层3每帧为1152个样本,如图9-13所示。
图9-13层1、2和层3的子带样本
MPEG编码器的输入以12个样本为一组,每组样本经过时间-频率变换之后进行一次比特分配并记录一个比例因子(scalefactor)。
比特分配信息告诉解码器每个样本由几位表示,比例因子用6比特表示,解码器使用这个6比特的比例因子乘逆量化器的每个输出样本值,以恢复被量化的子带值。
比例因子的作用是充分利用量化器的量化范围,通过比特分配和比例因子相配合,可以表示动态范围超过120DB的样本。
1.层1
层1和层2的比较详细的框图如图9-14所示。
层1的子带是频带相等的子带,它的心理声学模型仅使用频域掩蔽特性。
层1的“时间-频率多相滤波器组”使用类似于离散余弦变换DCT(discretecosinetransform)的分析滤波器组进行变换,以获得详细的信号频谱信息。
根据信号的频率、强度和音调,滤波器组的输出可用来找出掩蔽阈值,然后组合每个子带的单个掩蔽阈值以形成全局的掩蔽阈值。
使用这个阈值与子带中的最大信号进行比较,产生信掩比SMR之后再输入到“量化和编码器”。
“量化和编码器”首先检查每个子带的样本,找出这些样本中的最大的绝对值,然后量化成6比特,这个比特数称为比例因子(scalefactor)。
“量化和编码器”然后根据SMR确定每个子带的比特分配(bitallocation),子带样本按照比特分配进行量化和编码。
对被高度掩蔽的子带自然就不需要对它进行编码。
图9-14ISO/MPEGaudio层1和层2编码器和解码器的结构
“数据流帧包装”按规定的帧格式进行包装,实际上就是一个多路复合器MUX。
层1的帧结构如图9-15所示。
每帧都包含:
①用于同步和记录该帧信息的同步头,长度为32比特,它的结构如图9-16所示,②用于检查是否有错误的循环冗余码CRC(cyclicredundancycode),长度为16比特,③用于描述比特分配的比特分配域,长度为4比特,④比例因子域,长度为6比特,⑤子带样本域,⑥有可能添加的附加数据域,长度未规定。
图9-15层1的帧结构
图9-16MPEG声音比特流同步头的格式
2.层2
层2对层1作了一些直观的改进,相当于3个层1的帧,每帧有1152个样本。
它使用的心理声学模型除了使用频域掩蔽特性之外还利用了时间掩蔽特性,并且在低、中和高频段对比特分配作了一些限制,对比特分配、比例因子和量化样本值的编码也更紧凑。
由于层2采用了上述措施,因此所需的比特数减少了,这样就可以有更多的比特用来表示声音数据,音质也比层1更高。
层1是对一个子带中的一个样本组(由12个样本组成)进行编码,而层2和层3是对一个子带中的三个样本组进行编码。
图9-13也表示了层2和层3的分组方法。
如图9-17所示,层2使用与层1相同的同步头和CRC结构,但描述比特分配的位数(即比特数)随子带不同而变化:
低频段的子带用4比特,中频段的子带用3比特,高频段的子带用2比特。
层2比特流中有一个比例因子选择信息(scalefactorselectioninformation,SCFSI)域,解码器根据这个域的信息可知道是否需要以及如何共享比例因子。
图9-17层2比特流数据格式
3.层3
层3使用比较好的临界频带滤波器,把声音频带分成非等带宽的子带,心理声学模型除了使用频域掩蔽特性和时间掩蔽特性之外,还考虑了立体声数据的冗余,并且使用了霍夫曼(Huffman)编码器。
层3编码器的详细框图如图9-18所示。
图9-18ISO/MPE