




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用DFT对语音信号进行压缩处理学生姓名:XXX学号:XXXXX 指导老师:XXXXX摘要:本文要解决的问题是如何对音频文件(本文仅研究了wav格式的文件)进行微失真压缩,文中使用DFT算法将对音频信号中部分对声音影响较小的部分给去除,以实现音频压缩的目的。关键词:DFT,音频压缩。1DFT原理:对于一个有限长信号,我们可以使用DTFT算法得到其频谱,但是一个有限长的信号,其频谱都是无限长的:但是对于人耳而言,能听到的频率在10Hz到44,1KHz之间,这样频谱中大部分的成分都是不需要的,而且对于计算机而言,无法模拟出一段连续的频谱。这时候我们只能对频谱进行采样,在保证最大程度不失真的程度上模拟出频谱,但是对频谱进行采样后,对得到的频谱信号进行IDTFT,得到的语音信号被周期话,成为一个无限长的序列,这样计算机还是无法模拟。DFT算法就很好的解决了这个问题,时域中的N点序列xn的DFT定义为:,k=0,1,N-1一个有限长信号序列,通过DFT变换后得到的频谱为:由上式可知n个点的DFT仍是n点,这时候我们可以对得到的频谱序列进行裁剪,搬移等操作,得到我们所需要的频谱上的语音信号。而对得到的频谱做IDFT得到的信号不会成为无限长的一个序列,n个点的IDFT仍是n点。这样我们就可以在计算机中得到自己想要的频段上的语音信号了。本文中所实现的就是这样的一个过程。2.音频压缩的基本原理Wav文件保存音频信息的基本原理为将音频信号的每一个采样点的时域数值用1个16bit数记录下来,对应的采样频率越高单位时内记录的数据就越多,音质也就越高。所以在不改变wav文件记录音频文件的基本格式的前提下只有降低采样频率才能实现文件的压缩,当然对采样频率的降低就会带来音质的损耗,所以该类压缩方法不是无失真的压缩方法。在尽量保证源文件的音质效果的前提下有以下两种压缩思路:1. 在源文件的时域序列上间隔取点,再将取点之后的新序列以与取点间隔相对应的采样频率重新写制成为wav文件,以达到压缩的目的。2. 将源文件的时域序列进行DFT后得到频谱,将频谱中能量较低的成分删除,在按照新的频谱的长度做IDFT得到新的较源文件更短的时域序列,同样以相应的采样频率重新写制wav文件。2.1时域间隔采样法在时域的间隔采样等效于将频谱中高频成分向低频搬移,而将低频成分去掉。可以用MATLAB读取一段wav文件并将其间隔1点采样后作DFT得到频谱与源文件的频谱比较如图2-1.MATLAB代码如下:time1 fs1 bits1=wavread(monsterkill.wav);freq1=fft(time1);m1=length(time1)for i=1:m1/2 time2(i)=time1(2*i);endfreq2=fft(time2);subplot(2,1,1);plot(abs(freq1);subplot(2,1,2);plot(abs(freq2);图2-1读取源文件时域序列将时域序列进行DFT变换将DFT得到的频谱进行更少点的IDFT以与IDFT相对应点数的频率进行重写wav文件可以明显的看到高频成分向序列中段靠拢而幅值则缩小了一半,由此可以得到时域间隔采样的DFT压缩基本流程:以压缩一半为例,MATLAB代码如下:time1 fs1 bits1=wavread(monsterkill.wav);freq1=fft(time1);m1=length(time1);time2=real(ifft(freq1,m1/2);wavwrite(time2,fs1/2,monsterkill2-1.wav);freq2=fft(time2);figure(1);subplot(2,1,1);plot(abs(freq1);subplot(2,1,2);plot(abs(freq2);title(频谱成分);figure(2);subplot(2,1,1);plot(time1);subplot(2,1,2);plot(time2);title(时域序列);图 2-2运行结果如(图2-2)、(图2-3)。实际得到新wav文件见附件monsterkill2-1.wav图 2-4图 2-5图 2-3该种方法的优点在于操作方便易于实现,并且能够较好的保留源文件的音质特点。但在压缩比例较大或者源音频文件以中低音为主时将会很大的破坏音质,失真度很高。2.2去除低能频点法频谱上各频点对应值的模长表示能量的分布,将能量较小的部分忽略掉即可以达到压缩的目的,其基本压缩流程如下:读取源文件时域序列将时域序列进行DFT变换选取能量较小的值删除掉,构成新的频谱序列以与新频谱相对应点数的频率进行重写wav文件以去掉小于平均能量20倍的频点为例MATLAB代码如下:time1 fs1 bits1=wavread(monsterkill.wav);freq1=fft(time1);m1=length(time1);en=0;for n=1:m1 en=en+abs(freq1(n);endd=en/m1;n=1;for i=1:m1 if d/abs(freq1(i)20 freq2(n)=freq1(i); n=n+1; endendtime2=real(ifft(freq2);wavwrite(time2,n*fs1/m1,monsterkill2-2.wav);figure(1);subplot(2,1,1);plot(time1);subplot(2,1,2);plot(time2);title(时域序列);figure(2);subplot(2,1,1);plot(abs(freq1);subplot(2,1,2);plot(abs(freq2);title(频谱分布);运行结果如(图2-4)、(图2-5)。实际得到新wav文件见附件monsterkill2-2.wav图 2-4图 2-5该种方法的优点在于能够很好的保留源文件中的有效能量成分,在低能量判别门限较苛刻时能够很好的保持音质,同时通过控制判别门限也能很好的控制压缩比例。但该方法因为较为复杂而运算量大执行缓慢,同时当源文件的低能量成分较为集中时会产生较大的频谱飘逸使得失真度较高。3.总结文中使用两种方法使用DFT对音频信号进行了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 视频会议组织与使用手册
- 网商测试考核试卷及答案
- 动名词用法详解与例句分析:高一英语语法专项教学教案
- 2025年急危重症护理学理论试题(附答案)
- 水质仪表检测分类课件
- 医护家属关系填写指南
- 香料精制工协同作业考核试卷及答案
- 儿童孟氏骨折的临床护理
- 水肿的鉴别诊断
- 卤醇脱卤酶讲解
- 快递分拣人力承包协议书
- 医疗损害责任界定-洞察及研究
- 浙江省G12名校协作体2025学年第一学期9月高三上学期开学联考生物试卷
- 人民防空防护设备管理办法
- 2025年海南省社区工作者招聘考试笔试试题(含答案)
- 2025年全国中学生天文知识竞赛考试题库(含答案)
- 2025至2030中国空间机器人学行业项目调研及市场前景预测评估报告
- 筠连王点科技有限公司3万吨-年复合导电浆料配套10吨-年碳纳米管粉体项目环评报告
- 2025年江苏省档案职称考试(新时代档案工作理论与实践)历年参考题库含答案详解(5套)
- 基于西门子PLC的声控喷泉系统设计
- 2025年全国“质量月”质量知识竞赛题库及答案
评论
0/150
提交评论