您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > MP3语音压缩的DSP设计与实现
1上海大学2014~2015学年冬季学期研究生实验报告课程名称:DSP技术及其应用课程编号:07S009005题目:MP3语音压缩的DSP设计与实现研究生姓名:学号:评语:成绩:任课教师:评阅日期:2MP3语音压缩的DSP设计与实现2014年12月25日—、实验要求与目的1、实验要求:对单声道、44.1KHz采样率、16位量化精度的音频信号进行压缩,实现*mp3格式的数据结构。2、实验目的:(1)熟悉掌握MatlabR2010a软件的使用,及音频信号的采集与处理;(2)学习掌握C语言,并熟悉掌握VS2013的仿真与调试;(3)熟悉掌握CCS5.5软件的仿真与调试;(4)熟悉掌握PCM、WAV以及MP3等音频信号的数据结构;(5)熟悉掌握MP3压缩的原理;二、实验设备与环境本实验采用的硬件环境为:宏碁笔记本电脑,2.2GHzPentium(R)Dual-CoreCPU,i3处理器,2.00G内存,32位Windows7操作系统。使用的软件有:MatlabR2010a、MicrosoftVisualStudio2013以及CodeComposerStudio5.5.0。其中在CodeComposerStudio5.5.0中,仿真目标芯片选型为:Genericdevice--GenericC64xxDevice。三、整体实验方案设计本实验主要包括以下三个部分:(1)Matlab录音:在Matlab平台,利用其自带的波形记录函数wavecord函数录制单通道、16位分辨率、采样率为44.1K音频信号,并保存为wav格式音频文件(10秒);(2)Matlab压缩:在Matlab平台,利用lamb工具,即mp3write函数,对音频进行mp3压缩(仅作为CCS的参考)。(3)CCS(VS2013)压缩:1、利用fread函数读取WAV文件,并解析其头部信息;2、利用fread函数读取一帧MP3对应的576个PCM数据(1152个采样值);3、对576个PCM数据进行多相滤波器,将其分成32个频宽大小相同的子频带,即变换为18*32个样本数据。4、进行MDCT变换,将分成的32个子带信号进一步细分,产生32*18=576个频线输出。35、对MDCT输出的信号,经过失真控制环和量化率控制环,即量化器的处理,最终实现信号的非线性量化。6、由霍夫曼编码(Huffmancode)做最后压缩处理,压缩后得到一个记录每个符号代表的字符串的编码表以及一连串由符号组成的信息内容,该编码方式可以节约20%的空间。7、将编码后的数据打包成MP3帧格式,并实现比特流数据输出。四、实验原理1、音频信号基本知识声音的数字化过程主要包括四个过程(如图所示):(1)采样,对振幅随时间连续变化的模拟信号波形按一定的时间间隔取出样值,形成在时间上不连续的脉冲序列;(2)量化,将模拟信号的幅度,在动态范围内划分为相等间隔的若干层次,把采样输出的信号电平按照四舍五入的原则归入最靠近的量值。(3)编码,把采样、量化所得的量值变换为二进制数码的过程称为编码。(4)压缩,依据声音信息中存在着多种冗余信息、听觉器官的不敏感性以及采样的标本中存在着相关性,对编码后的二进制信号进行压缩。图、声音数字化流程在对模拟音频信号进行采样量化编码后,将得到数字音频。数字音频的质量取决于采样频率、量化位数和声道数三个因素(如表1所示)。1)采样频率采样频率是指一秒钟时间内采样的次数。采样频率与声音频率之间有一定的关系,根据奈奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。通常声音信号最高频率约为3.4kHz,则采样频率取至少为6.8kHz。在本实验中,我们采用的是CD的采样标准,即44.1kHz.2)量化位数量化位数也称“量化精度”,是描述每个采样点数值的二进制位数。例如,8位量化位数表示每个采样值可以用2的8次方,即256个不同的量化值之一来表示,而16位量化位数表示每个采样值可以用2的16次方,即65536个不同的量化值之一来表示。量化噪声则是指某个采样时间点的模拟值和最近的量化值之间的差,误差最大可以达到离散间距的一半。一般量化位数越大,量化噪声越小。在本实验中,我们采用的是16位的量化精度。3)声道数声音通道的个数称为声道数,是指一次采样所记录产生的声音波形个数。记录声音4时,如果每次生成一个声波数据,称为单声道;每次生成两个声波数据,称为双声道(立体声)。随着声道数的增加,所占用的存储容量也成倍增加。本实验,为了降低语音文件的大小,以及实验的难度采用单声道。表1、数字音频质量的技术参数表采样频率量化位数声道数含义每秒钟抽取声波幅度样本的次数每个采样点用多少二进制位表示数据范围使用声音通道的个数特点采样频率越高、声音质量越好、数据量也越大量化位数越多、音质越好、数据量也越大立体声比单声道的表现力丰富,但数据量翻倍常用值11.025、22.05和44.1k8位、16位单声道、立体声2、WAV音频信号结构WAV文件格式是一种由微软和IBM联合开发的用于音频数字存储的标准,它采用RIFF文件格式结构,非常接近于AIFF和IFF格式。其由文件头和数据体两大部分组成,其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分,而数据体主要包含以脉冲编码调制(PCM)格式表示的样本。WAV文件的由四个部分组成:表2、WAV文件结构RIFFWAVEChunkID='RIFF'RiffType='WAVE'FormatChunkID='fmt'FactChunk(optional)ID='fact'DataChunkID='data'表3、RIFFWAVEChunk结构名称长度内容ID4Bytes'RIFF'Size4BytesFileLen-8,整个文件大小-8Type4Bytes'WAVE'表4、FormatChunk结构名称长度内容备注ID4Bytes'fmt'Size4Bytes18/16(有无附加信息)本结构大小(除ID,Size)FormatTag2Bytes通常0x0001编码方式Channels2Bytes1--单声道;2--双声道立体声声道数目SamplesPerSec4Bytes采样频率AvgBytesPerSec4Bytes每秒所需字节数BlockAlign2Bytes数据块对齐单位BitsPerSample2Bytes每个采样需要的位bit数附加信息2Bytes(可选,通过Size来判断)附加信息表5、FactChunk(optional)结构(可选)5名称长度内容ID4Bytes'fact'Size4Bytes数值为4data4Bytes表6、DataChunk结构:名称长度内容ID4Bytes'data'Size4Bytes数据区大小data4Bytes数据区,真正存储数据的地方表7、PCM数据的存放方式:样本1样本28位单声道0声道0声道8位立体声0声道(左)1声道(右)0声道(左)1声道(右)16位单声道0声道低字节0声道高字节0声道低字节0声道高字节16位立体声0声道左低字节0声道左高字节1声道右低字节1声道右高字节WAVE文件的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数。首先存储低有效字节,表示样本幅度的位放在i的高有效位上,剩下的位置为0,这样8位和16位的PCM波形样本的数据大小如下所示。表8、PCM波形样本大小样本大小数据格式最大值最小值8位PCMunsignedint225016位PCMint32767-327673、MP3音频信号结构MP3的全称为MPEG1Layer-3音频文件,由帧(frame)构成,帧又是MP3文件的最小组成单元。MPEG音频文件是MPEG1标准中的声音部分,也叫MPEG音频层,它根据压缩质量和编码复杂程度划分为三层,即Layer-1、Layer2、Layer3,且分别对应MP1、MP2、MP3这三种声音文件,并根据不同的用途,使用不同层次的编码。MPEG音频编码的层次越高,编码器越复杂,压缩率也越高。MP1和MP2的压缩率分别为4:1和6:1-8:1,而MP3的压缩率则高达10:1---12:1。MP3采取了“感官编码技术”,即编码时先对音频文件进行频谱分析,然后用过滤器滤掉噪音电平,接着通过量化的方式将剩下的每一位打散排列,最后形成具有较高压缩比的MP3文件,并使压缩后的文件在回放时能够达到比较接近原音源的声音效果。MP3文件又三个部分组成,分别是:TAG_V2(ID3V2),Frame,TAG_V1(ID3V1)。表9MP3文件结构每个Frame都有一个帧头Frameheader,长度4Byte(32bit)。头部最前面的11位总是被设置为1并称它为“帧同步”。因此,可以搜索整个文件以确定第一次出现连续11ID3V2包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量。Frame一系列的帧,个数由文件大小和帧长决定。每个Frame的长度可能不固定,也可能固定,由位率bitrate决定。每个Frame又分为帧头和数据实体两部分,帧头记录了mp3的位率,采样率,版本等信息,每个帧之间相互独立。ID3V1包含了作者,作曲,专辑等信息,长度为128Byte。6个被设置为1的地方,然后读整个头部并检测值是否正确。帧头后面可能有两个字节的CRC校验,这两个字节的存在与否取决于Frameheader信息的第16bit:若为0则帧头后面无校验;否则有校验,校验长度为2个字节。紧跟在Frameheader后面的是帧的实体数据,其具体格式如下表所示:表10MP3帧结构FrameheaderCRC(free)Main_Data4Byte0或者2Byte长度由帧头计算得出4、MP3音频压缩算法MP3的编码框图如图所示。从整体来看,MP3编码算法流程刻大致分为:时频映射(包括子带滤波器组和MDCT)和量化编码(包括比特和比例因子分配和哈夫曼编码)等两大功能模块。计算都十分复杂,实现MP3编码的关键也在于这两个功能模块。子带滤波器组MDCT失真控制环哈弗曼编码比特流组装已编码数据流边信息PCM音频信号18*32576FFT声学模型在MP3编码中,输入的数字音频信号(即PCM采样信号)进入子带滤波器组后,被分成32个子带信号,MDCT(改进离散余弦变换))把子带的输出在频域里进一步地细分成18个频线,这样共产生576个频线。(若采用心理声学模型来计算子带信号的信掩比的方式,即根据这些信掩比决定分配给576个频线的比特数,则在比特分配的过程可以实现可变步长量化)接着再对频线进行定长量化,量化后的样值,再经过无失真的哈夫曼编码,以提高编码效率,并与比特分配和量化产生的边信息一起组成一帧数据。MP3编码的一帧数据包括两个组,每组有576个频线和与他们相关的边信息,边信息被存储在每一帧的帧头中。对这样一帧一帧组成的比特流,MP3解码器可以独立的进行解码,而不需要额外的信息了。1)混合滤波器组混合滤波器组包括子带滤波器组和MDCT两部分。子带滤波器组编码完成样本信号从时域到频域的映射,并将规定格式的数字音频信号(若采样频率是44.1kHz,样本量化为16位,则编码比特率为16*44100bit/s)分解成32个子带输出。子带分析滤波器组的32个子带是等带宽的,而由心理声学模型得出的临界带宽则不是等带宽的,所以分析滤波器的带宽与人耳听觉上的临界频带划分并不匹配。为了使得进行编码的各比例因子带与临界频带相匹配,需要对每个子带信号做MDCT变换,从而提供更精细的频率分辨率。将子带滤波器组的输出送到MDCT滤波器组后,每组将细分为18条频线,共产生576条频线,这对处理稳态信号能获得最大的编码增益。子带滤波器由32个FIR型BPF组成,每个BPF的长度为512点。因此实际上是用7一个32×512的变换矩阵C将输入序列{Xi}中的连续512个数据点所构成的输入矢量X,变换成一个具有32个分量的输出矢量S。其中S的32个数据点SK按子带频率从低到高的顺序排列。将PC
本文标题:MP3语音压缩的DSP设计与实现
链接地址:https://www.777doc.com/doc-2214040 .html