基于MATLAB的声音文件播放器设计_毕业论文设计.doc

上传人:小小飞 文档编号:3920796 上传时间:2019-10-10 格式:DOC 页数:23 大小:446KB
返回 下载 相关 举报
基于MATLAB的声音文件播放器设计_毕业论文设计.doc_第1页
第1页 / 共23页
基于MATLAB的声音文件播放器设计_毕业论文设计.doc_第2页
第2页 / 共23页
基于MATLAB的声音文件播放器设计_毕业论文设计.doc_第3页
第3页 / 共23页
基于MATLAB的声音文件播放器设计_毕业论文设计.doc_第4页
第4页 / 共23页
基于MATLAB的声音文件播放器设计_毕业论文设计.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《基于MATLAB的声音文件播放器设计_毕业论文设计.doc》由会员分享,可在线阅读,更多相关《基于MATLAB的声音文件播放器设计_毕业论文设计.doc(23页珍藏版)》请在三一文库上搜索。

1、毕业论文(设计)论文题目:基于MATLAB的声音文件播放器设计学生姓名:学 号:所在院系:电气信息工程学院专业名称:电子信息科学与技术届 次:指导教师:淮南师范学院本科毕业论文(设计)诚信承诺书1. 本人郑重承诺:所呈交的毕业论文(设计),题目 是本人在指导教师指导下独立完成的,没有弄虚作假,没有抄袭、剽窃别人的内容;2.毕业论文(设计)所使用的相关资料、数据、观点等均真实可靠,文中所有引用的他人观点、材料、数据、图表均已注释说明来源;3. 毕业论文(设计)中无抄袭、剽窃或不正当引用他人学术观点、思想和学术成果,伪造、篡改数据的情况;4.本人已被告知并清楚:学院对毕业论文(设计)中的抄袭、剽窃

2、、弄虚作假等违反学术规范的行为将严肃处理,并可能导致毕业论文(设计)成绩不合格,无法正常毕业、取消学士学位资格或注销并追回已发放的毕业证书、学士学位证书等严重后果; 5.若在省教育厅、学院组织的毕业论文(设计)检查、评比中,被发现有抄袭、剽窃、弄虚作假等违反学术规范的行为,本人愿意接受学院按有关规定给予的处理,并承担相应责任。 学生(签名): 日期: 年 月 日目 录前言21 设计背景与概述21.1 设计背景21.2 设计平台MATLAB概述32 声音文件42.1 MP3文件42.2 lame 编码器73 播放器的设计及方法73.1 重叠叠加算法73.2 Matlab的实现算法83.2 Gui

3、设计93.3 Matlab语言113.4 系统流程图114 运行结果125 总结13参考文献:14淮南师范学院2013届本科毕业论文基于MATLAB的声音文件播放器设计学生:赵波(指导教师:陈帅)(淮南师范学院电气信息工程学院)摘 要:本文结合“数字信号处理”课程和“Matlab程序设计”课程的相关知识,给出了基于Matlab的声音播放器的总体设计方案,介绍了播放器主要模块的功能,设计与实现方法我们将该设计作为电子信息类专业数字信号处理课程设计项目,有助于激发学生的学习兴趣,提高其综合设计和应用创新能力。本设计针对现在大部分语音处理软件内容繁多、操作不便等问题,采用MATLAB7.0综合运用各

4、种函数调用等来实现语音信号的变频、变幅、傅里叶变换及滤波,程序界面简练,操作简便,具有一定的实际应用意义。关键词:Matlab;声音播放器;傅里叶变换;变频Audio file player design based on MATLABStudent: Zhao Bo(Faculty Adviser:Chen Shuai)(College of electrical and Information Engineering, Huainan Normal University)Abstract: According to the relevant knowledge of digital sig

5、nal processing course and Matlab program design course, gives the general design of Matlab audio player based on, describes the main module functions and implementation methods of the player, we will design as the design of electronic information specialty of digital signal processing course design

6、projects, help stimulate students interest in learning, improve the comprehensive design and innovation ability. The design for the problem now, most speech processing software content is various, inconvenient operation, using MATLAB7.0 comprehensive use of various function calls to voice signals su

7、ch as frequency, amplitude, Fu Liye transform and filtering, the program interface concise, simple operation, and has certain practical significance.Keywords: Matlab; Sound player; Fu Liye transform; Frequency前言语音是语言的声学表现,是人类交流信息最自然、最有效、最方便的手段。随着社会文化的进步和科学技术的发展,人类开始进入了信息化时代,用现代手段研究语音处理技术,使人们能更加有效地产生

8、、传输、存储、和获取语音信息,这对于促进社会的发展具有十分重要的意义,因此,语音信号处理正越来越受到人们的关注和广泛的研究。20世纪60年代中期形成的一系列数字信号处理的理论和算法,如数字滤波器、快速傅立叶变换(FFT)等是语音信号数字处理的理论和技术基础。随着信息科学技术的飞速发展,语音信号处理取得了重大的进展:进入70年代之后,提出了用于语音信号的信息压缩和特征提取的线性预测技术(LPC),并已成为语音信号处理最强有力的工具,广泛应用于语音信号的分析、合成及各个应用领域,以及用于输入语音与参考样本之间时间匹配的动态规划方法;80年代初一种新的基于聚类分析的高效数据压缩技术矢量量化(VQ)应

9、用于语音信号处理中;而用隐马尔可夫模型(HMM)描述语音信号过程的产生是80年代语音信号处理技术的重大发展,目前HMM已构成了现代语音识别研究的重要基石。近年来人工神经网络(ANN)的研究取得了迅速发展,语音信号处理的各项课题是促进其发展的重要动力之一,同时,它的许多成果也体现在有关语音信号处理的各项技术之中。语音信号处理是一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段。通过语言相互传递信息是人类最重要的基本功能之一。语言是人类特有的功能,它是创造和记载几千年人类文明史的根本手段,没有语言就没有今天的人类文明。语音是语言的声学表现,是相互传递信息的最重要的手

10、段,是人类最重要、最有效、最常用和最方便的交换信息的形式。语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域和涉及面很广的交叉学科。1 设计背景与概述1.1 设计背景随着软硬件技术的发展,仪器的智能化与虚拟化已成为未来实验室及研究机构的发展方向。虚拟仪器技术的优势在于可由用户定义自己的专用仪器系统,且功能灵活,很容易构建,所以应用面极为广泛。基于计算机软硬件平台的虚拟仪器可代替传统的测量仪器,如示波器、逻辑分析仪、信号发生器、频谱分析仪等。从发展史看,电子测量仪器经历了由模拟仪器、智能仪器到虚拟仪器,由于计算机性能的飞速发展,已把传

11、统仪器远远抛到后面,并给虚拟仪器生产厂家不断带来连锅端的技术更新速率。目前已经有许多较成熟的频谱分析软件,如SpectraLAB、RSAVu、dBFA等。声卡是多媒体计算机最基本的配置硬件之一,价格便宜,使用软件,他的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令。本文将给出基于声卡与MATLAB的声音信号频谱分析仪的设计原理与实现方法,功能包括:(1) 音频信号信号输入,从声卡输入、从WAV文件输入、从标准信号发生器输入;(2) 信号波形分析,包括幅值、频率、周期、相位的估计,以及统计量峰值、均值、均方值和方差的计算;(3) 信号频谱分析,频率、周期的估计,图形显示幅值谱、相

12、位谱、实频谱、虚频谱和功率谱的曲线。1.2 设计平台MATLAB概述MATLAB 是国际上公认的最优秀的科技应用软件,它在数据分析和处理功能都是很强大,利用它可以灵活方便地处理音频信号。MATLAB 是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB已成为国际公认的最优秀的科技应用软件之一,具有编程简单、数据可视化功能强、可操作性强等特点,而且配有功能强大、专业函数丰富的图像处理工具箱,是进行图像处理方面工作必备的软件工具。MATLAB是矩阵实验室(Matri

13、x Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。目前数字滤波器的设计有许多现成的高级语言设计程序,但他们都存在设计效率较低,不具有可视图形,不便于修改参数等缺点,而Matlab为数字滤波的研究和应用提供了一个直观、高效、便捷的工具。它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个交互式的工作环境中。尤其是Matl

14、ab工具箱使各个领域的研究人员可以直观而方便地进行科学研究与工程应用。其中的信号处理工具箱、图像处理工具箱、小波工具箱等更是为数字滤波研究的蓬勃发展提供了可能。本文将使用matlab对MP3进行解码,做一个简易的MP3播放器。2 声音文件首先,我们来明确一下数字音频的概念,它是指一个用来表示声音强弱的数据序列,由模拟声音经抽样、量化和编码后得到的。简单地说,数字音频的编码方式就是数字音频格式,我们所使用的不同的数字音频设备一般都对应着不同的音频文件格式。常见的数字音频格式有:WAV格式、MIDI格式、CDA格式、MP3格式、WMA格式等。1. WAV格式,是微软公司开发的一种声音文件格式,也叫

15、波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持。WAV格式支持许多压缩算法,支持多种音频位数、采样频率和声道,采用44.1kHz的采样频率,16位量化位数,跟CD一样,对存储空间需求太大不便于交流和传播。2. MIDI,是Musical Instrument Digital Interface的缩写,又称作乐器数字接口,是数字音乐/电子合成乐器的统一国际标准。它定义了计算机音乐程序、数字合成器及其它电子设备交换音乐信号的方式,规定了不同厂家的电子乐器与计算机连接的电缆和硬件及设备间数据传输的协议,可以模拟多种乐器的声音。MIDI文件就是MIDI格式的文件,在MID

16、I文件中存储的是一些指令。把这些指令发送给声卡,由声卡按照指令将声音合成出来。3. 大家都很熟悉CD这种音乐格式了,扩展名CDA,其取样频率为44.1kHz,16位量化位数,跟WAV一样,但CD存储采用了音轨的形式,又叫“红皮书”格式,记录的是波形流,是一种近似无损的格式。4. MP3全称是MPEG-1 Audio Layer 3,它在1992年合并至MPEG规范中。MP3能够以高音质、低采样率对数字音频文件进行压缩。换句话说,音频文件(主要是大型文件,比如WAV文件)能够在音质丢失很小的情况下(人耳根本无法察觉这种音质损失)把文件压缩到更小的程度。5.WMA (Windows Media A

17、udio),是微软在互联网音频、视频领域的力作。WMA格式是以减少数据流量但保持音质的方法来达到更高的压缩率目的,其压缩率一般可以达到1:18。此外,WMA还可以通过DRM(Digital Rights Management)方案加入防止拷贝,或者加入限制播放时间和播放次数,甚至是播放机器的限制,可有力地防止盗版。2.1 MP3文件MP3文件大体分为三部分:TAG_V2(ID3V2),frame,TAG_V1(ID3V1);它们的详细特征如下表:表2.1 MP3各类文件特点ID3V2包含了作者,作曲,专辑等信息,长度不固定,扩展了ID3V1的信息量Frame一系列的帧,个数由文件大小和帧长决定

18、 每个FRAME的长度可能不固定,由位率bitrate决定 每个FRAME又分为帧头和数据实体两部分 帧头记录了mp3的位率,采样率版本等信息,每个帧之间相互独立ID3V1 包含了作者,作曲,专辑等信息,长度为128BYTE 一个MPEG音频文件是许多的称为帧的较小部分组成的,通常,帧是独立的组成部分,每个帧都拥有之间的头和音频信息,没有文件头。所以我们可以剪切MPEG文件的任何部分并且能够正常播放。但在LayerIII中就并不总是正确的。2.1.1 帧头格式下表2.2是一个头内容图示,使用字符A到M表示不同的区域AAAAAAAAAAA BB CC D EEEE FF G H II JJ K

19、L MMA 表示帧同步,都为1,长度为11; B 表示MPEG音频版本ID (00 MPEG 2.5; 01 保留; 10 MPEG 2; 11 MPEG 1); C 表示Layer描述,(00 保留 ; 01- LayerIII; 10 LayerII; 11 - LayerI); D 表示校验位 (0 有跟16位CRC校验位; 1 无校验位); E 位率索引,长度为4,对不同的版本,不同层索引值表示不同的位率;单位KbitF 采样频率,单位:HzG 填充位 (0 无填充; 1 额外的填充) H 私有bit,用做特殊应用 I 声道 (00 立体声; 01 联合立体声; 10 双声道; 11

20、单声道); J 扩展模式,仅在联合立体声有效 K 版权 (0 无版权; 1 有版权); L 原创 (0 拷贝; 1 原创); M 强调 (00 无; 01 50/15ms; 10 保留; 11 CCIT J.17);表2.2 帧头内容图表MPEG 1 Layer IMPEG 1 Layer II MPEG 1Layer IIIMPEG,2.5Layer ILayer II & Layer III0000FREE000132323232800106448404816001196 56 48 56 240100 128 64 56 64 320101 160 80 64 80 40 0110 19

21、2 96 80 96 480111 224 112 96 112 56 1000 256 128 112 128 64 1001 288 160 128 144 80 1010 320 192 160 160 96 1011 352 224 192 176 112 1100 384 256 224 192 1281101 416 320 256 224 144 1110 448 384 320 256 160 1111BitsMPEG 1MPEG 2MPEG 2.50044100220501102501480002400012000103200016000800011保留2.1.2 CRC 校

22、验如果帧头的校验位为0 ,则帧头后就有一个16位的CRC值,这个值是big-endian的值, 把这个值和该帧通过计算得出的CRC 值进行比较就可以知道该帧是否有效。2.1.3 帧数据在帧头后边是 Side Info(姑且称之为通道信息)。对标准的立体声 MP3 文件来说其长度 为 32字节。通道信息后面是 Scale factor(增益因子)信息。当解码器在读到上述信息后,就可以进行解码了。当 MP3 文件被打开后,播放器首先试图对帧进行同步,然后分别读取通道信息及增益因子等数据,再进行霍夫曼解码,至此我们已经获得解压后的数据。但这些数据仍然不能进行播放,它们还处于频域,要想听到歌曲还要将它

23、由频域通过特定的手段转换到时域。接下来的处理分别为立体化处理;抗锯齿处理;IMDCT变换;IDCT 变换及窗口化滑动处理。2.2 lame 编码器LAME 是最好的MP3编码器,编码高品质MP3的最好也是唯一的选择。LAME本身是DOS下的文件,需要加外壳程序才比较容易使用,也可以在别的软件(比如EAC)中间调用。是一款出色的MP3压缩程序,它使用了独创的人体听音心理学模型和声学模型,改变了人们对MP3高音发哑、低音发破的音质的印象。LAME分DLL和EXE两种版本,DLL版本做为一个方便的接口程序在大多数抓轨软件中都能看到(比如AltoMP3Maker),但由于可控性差,与具备丰富调节参数的

24、EXE版相比,其压缩出来的MP3效果稍逊一筹。 VBR(Variable Bitrate)动态比特率。也就是没有固定的比特率,压缩软件在压缩时根据音频数据即时确定使用什么比特率,这是以质量为前提兼顾文件大小的方式,推荐编码模式;ABR(Average Bitrate)平均比特率,是VBR的一种插值参数。LAME针对CBR不佳的文件体积比和VBR生成文件大小不定的特点独创了这种编码模式。ABR在指定的文件大小内,以每50帧(30帧约1秒)为一段,低频和不敏感频率使用相对低的流量,高频和大动态表现时使用高流量,可以做为VBR和CBR的一种折衷选择。CBR(Constant Bitrate),常数比

25、特率,指文件从头到尾都是一种位速率。相对于VBR和ABR来讲,它压缩出来的文件体积很大,而且音质相对于VBR和ABR不会有明显的提高。3 播放器的设计及方法本毕业设计通过抽样插值来改变基频 也使播放速度,播放时间发生改变, 因此通过时长规整的方式来使播放速度 和时间恢复到原来。3.1 重叠叠加算法本程序使用的是用重叠叠加算法来达到时长规整。重叠叠加算法原理:它分为两个阶段分解和合成。将原始信号以帧长N,帧间距sa进行分解,然后以帧间距ss进行合成。sa与ss的的比值决定了时长规整因子F=sa/ss。为保证重叠区域幅度不变,加了汉明窗。3.2 Matlab的实现算法Matlab的实现及程序流程分

26、为编程和gui的设计编程,y=resample(x,i,d);%重采样来达到抽值和插值的目的,然后就是时长规整。在具体介绍算法之前,先简要地介绍一下几种参数:1)W:窗长度(Window Length)。它代表了接受处理的语音信号的最小长度。2)Sa:分析延时(Analysis shift)。它代表了依次截取并进行处理的语音段首地址之间的间隔。3)Ss:综合延时(Synthesis shift)。依次输出的语音段首地址之间的间隔。4)kmax:查找延时。这一延时是指分析窗口为了与输出信号的尾部相一致而必须发生的一段延时。5)Wov:后一段语音与前一段语音相叠加的长度。整个算法首先将语音段中的前

27、W个数值取出来,直接存入到输出序列中。然后根据Sa的值取出下一段语音,也就是从第Sa个点开始取,一直取W个点。然后将这W个点中的前Wov个点与输出序列的最后Wov个点进行比较,比较它们之间的一致性。记录下比较的情况,然后整个分析窗口(也就是截取W个点的窗口)向后移动一个样值,再将新的序列中的前Wov个点与输出序列中的后Wov个点进行比较,同时记录下比较结果。这样依次做Kmax次,然后取出比较结果中最一致的那种情况。将这种情况下,所截取的语音序列的前Wov个点与输出序列的最后Wov个点按某种方式进行叠加,然后再将W个点的窗口中剩余的Ss个点存入到输出序列中去。至此完成了一轮语音操作。下一轮语音段

28、处理,与上面基本相同,只不过从输入序列中截取的语音段不是从原先的起点开始而是在原先的起点的基础上向后延时Sa个点。如果我们用表示第m段语音信号,用表示原始信号的序列。那么两者的关系可以用下面的等式表示:km是第m个分析窗口的移动量。km的值得变化范围是0至Kmax。对于每一个分析窗口,km的值取遍这些值,同时比较每次语音段的前Wov个点与输出序列中的最后Wov个点的一致性。取出其中一致性最好的那个语音段将其前Wov个点叠加到输出序列中去。设叠加时所用的窗用表示,输出序列用那么公式表明,已经在输出序列中的最后Wov个点通过与所选定的窗口中的前Wov个语音点以加权的方式叠加。加权值与有关。叠加后将

29、W个点中剩余的Ss(Ss=W-Wov)个点补充到输出序列中去。通过调整Sa的值和Ss的值(或者是Wov)的值就可以达到对语音信号进行时间长度上的变化。那么具体的每一段语音的km值究竟如何确定呢?要解决这一问题,关键在于解决一致性的判决标准。我们采用互相关系数来表示一致性的程度。那么对于第m轮处理,其中是所取的分析窗口的前Wov个点和输出序列的最后Wov个点之间的互相关性,它的定义是这样的:几点初步的讨论:1)首先从每一次处理后,我们从输入语音段中取序列的起点向后推迟了Sa个点,而输出序列的长度也增大了Ss个点。所以可以认为每处理一次有Sa-Ss个点被丢弃(如果Sa要大于Ss),如果我们处理的语

30、音信号长度较长。可以很容易地证明,新旧序列的长度之比是:Ss / Sa。根据这一比例关系,我们就可以认为地控制输出序列的长度(当然,这种控制是十分粗略的,并且只是在语音信号较长时有效)。2)的选取应当使得输入与输出序列之间实现平滑的连接。实验表明,采用简单的斜坡函数也可以达到较好的语音效果(只要采样率足够大)。3)对于km的求取是降低时间复杂度的重要一步。实际上,我们不需要每轮处理数据时都去计算一遍km,计算一遍km会花去不少时间。我们假定在任何一点,最多有两个窗会在这点上重叠。现在考虑第m个窗,从输出端的最后Wov个点可以看出,它其实就是输入序列中的某些点:其中从上面几个等式可以看出:如果。

31、那么,不需要计算km的值,只需要将km的值直接取为tm就可以了。而如果tm的值超出了上面的这个范围,就必须按照前面的计算方法进行计算。3.2 Gui设计Gui设计的基本原则:1、关注用户及其任务,而不是技术;2、首先考虑功能,然后才是表示;3、从用户的视角看问题,使用用户的词汇进行描述;4、不要向用户暴露实现细节;5、使常用的用户任务简单化,不要让用户解决额外的问题;6、保持一致性,引导用户的使用习惯;7、保持显示惯性,传递信息,而不仅仅是数据;8、设计应满足响应需求;使用Gui编程时需要注意以下几点:1、同一页面包含重复功能的链接或按钮;2、将复选框用作单选按钮;3、无初始值的多选一设置;4

32、、在非开/关设置中使用复选框;5、用文本框显示只读数据;6、单选按钮之间间隔太大;7、属性标记对齐方式不一致;8、当前无效的控件不充分置灰;9、显示对用户无意义的错误提示;10、不同的类型页面窗口显示相同的标题;11、窗口的标题和调用的命令不一致;12、要求用户输入随机数;13、相似的功能却有不一致的用户操作界面;14、取消按钮无法真正取消操作;15、网站结构反映公司的结构或网站升级的历史;16、返回按钮不能达到预期的目的;17、搜索选项过多,过度复杂;18、使用容易被忽略的隐藏的图片链接;19、需要向下滚动才能看到当前页的重要信息;20、图片按钮对鼠标按下操作没有视觉变化;21、无意义的虚假

33、进度条;22、执行长时间的任务时鼠标指针不显示成忙状态;23、不考虑用户可能的人为的错误输入;24、认为好的UI就是漂亮的UI;25、盲目错误的使用页面模块化设计从前面的讨论中可以看出,要使得在每一点只有最多两个窗相互叠加,实际上是要求,输出序列的最后Wov个点在前一轮没有参与到叠加运算中。这就要求在参数选择上要满足Ss Wov。另外,为了减小对于km的计算次数,可以选择将Kmax选取得大一些,比如取为500,同时Sa与Ss要尽量接近。对于采用互相关法求km的情况,作如下算法上的改动:首先,对于所有的k值,要比较它们对应得互相关之间的关系,只需要比较就可以了,这样就避免了开方这一麻烦得运算。同

34、时,由于对于所有的k值都是一样的,所以比较时不需要去考虑它。因此最终我们对于每一个k值只要比较。最后,对于的计算算可以采用递推的方法,即:Gui设计。通过设计,完成频谱搬移后的界面如下图:图3.1 频谱搬移后的界面3.3 Matlab语言Matlab语言本身就是一种对线性系统进行分析和仿真的方便工具,他特别适用于对电子系统进行计算机仿真。其对声音处理主要有以下几个函数: Sound 函数,播放声音,格式如下: Sound (y,fs)或 sound (y)或 sound (y,fs, bits) Wavwrite 函数,将声音数据按指定格式存入wav文件中,格式如下: Wavwrite(k,f

35、s,nbits,file) Wavread 函数,从wav文件中读取声音信号,格式如下: y, fs = Wavread (file) 6.0以上版本提供更好的声音处理函数; Audioplayer 函数,用来播放wav文件,可以暂停,停止,格式如下: Y = audioplayer(y,fs,nbits) Y = audioplayer(y,fs) Y必须定义成全局函数,它是一个audio player 对象。 Matlab 并没有mp3播放函数,因此要自己写M函数来播放mp3文件,函数如下: Y,FS,NBITS,OPTS = mp3read(FILE,N,MONO,DOWNSAMP,DE

36、LAY) FILE表示mp3文件名;N表示读到第N个采样帧,若N为n1,n2,则表示从n1到n2; MONO 表示读文件的通道:1表示单声道,0表示立体声 DOWNSAMP 表示采样频率,默认为1,若为2 或 4 ,则FS为22050 或11025 DELAY 是为了适应mpg123-0.59,控制开始读文件的延迟时间,在1.9版本以后就不需要,默认为0; Y 表示读出的数据 FS 采样频率 NBITS 采样位数 OPTS 可选项 3.4 系统流程图本次设计的,是基于maitlab软件平台,运用matlab语言编写,并运用了Gui编程,整个设计主要对声音信号,进行处理转换,从而播放出我们所需的

37、声音。CRC校验帧边信息解码返回开始同步头头信息解码有CRC否否3.1 系统流程图4 运行结果我们在windows7 ,cpu intel i3 2.4G主频,内存2G的运行环境中,测试了本次设计系统。本次设计的主界面如下图,其为matlab平台界面。4.1 matlab平台界面实现了如下功能:播放列表(图4.2),可以添加(open),删除(delete)mp3文件.显示格式为:艺术家 音乐名。添加时只能一个个添加,但删除可以批量删除,这跟open中uigetfile有关系。图4.2 播放列表播放(play)mp3文件,暂停(pause),停止(stop),若mp3未播放,使用暂停,停止,将

38、有错误提示。和普通的mp3播放器一样,要先等该文件播放完才播放下个文件,或按stop再选择播放列表想要播放的文件,再按play,如图4.3选择文件路径。关闭(close),将清空列表,关闭mp3播放器。音量控制(volume),因为其值最大为1,所以只能减小音量,不能对其原声音进行放大。另一方面,其声音控制并不是以中断的方式进行的,所以,只能等该文件播放完后,进行下个声音播放时,才能显现出声音的控制。 音频信息(Info),对播放的音频信息进行显示,要先等到音乐全都加载完才能显示。图4.3 音乐文件路径5 总结从功能上基本实现mp3的播放,能够暂停,停止,有播放列表,选择播放,但仍然存在一些b

39、ug 和一些需要改进的地方,总结如下: 首先,关于播放列表在第一次增加和删除,没问题,在第一次完全清空后,再增加一个文件,就会出现第一行为空,文件从第二行开始添加,若删除第一个没问题,若删除第二个就会出现如下警告:Warning: multi-selection listbox control requires that Value be an integer within String range Control will not be rendered until all of its parameter values are valid.其次,matlab的多线程能力比较差,本人有考虑使

40、用timer定时器来实现一些功能,但效果不佳,不知道问题出现在哪里。使用定时器就可以实现音量的随时改变,还有播放时间显示,甚至可以控制播放的进程,这是个很大的问题。在网上,书上,定时器的例子都比较少,看不出个所以然。接着,不能实现播放完该文件顺序播放下个文件,不够人性化。当数据读入,正在播放中,关闭播放器,界面没有了,但仍在播放。要先按close才能实现真正的关闭。最后是速度慢,对一首夜曲进行分析,歌曲时间长度为4:24,数据量为11638784*2 ,要花3.6秒的时间,这是不能接受的。并可以得到以下mp3信息(图5.1):位率为128KHz;版本为1;层数为III;声道模式为联合立体声;采

41、样位数为16位;时间可以计算出来。图5.1 mp3信息参考文献:1 仲麟,MATLAB仿真技术与应用教程M.北京:国防工业出版社,20042 张亮,王继阳,MATLAB与C/C+混合编程M.北京:人民邮电出版社,20083 马兰,沈晓云,精通视频/音频编码解码技术M.北京:人民邮电出版社,20084 Tay Vaughan著.晓波,倪敏译.多媒体技术及其应用M.清华大学出版社,2004,123-1285 刘汇丹.基于Qt的国际化图形用户界面设计与实现J,中文信息学报,2006,(04):21-246 黎洪松,数字视频技术及其应用M,清华大学出版社,19977 王玲,王正林. 精通Matlab

42、GUI设计(第2版)M,电子工业出版社,2011,18 马燕,李存,李晓勇,刘海涛.基于ARM平台的多媒体播放器的设计与实现J. 计算机工程. 2006 (24)9 陈泽宇,黄海晔.多媒体音频、视频文件格式及其播放器概览J.电脑技术.1998 (11)10 郭四海.无界面播放器的设计J. 电脑爱好者. 1998 (16)11 胡锦承.豪华播放器Jet-AudioJ. 电脑. 2000 (07)12 龚月琴.多功能媒体播放器的设计与开发J. 福建电脑. 2004 (07)13 陈泽宇,黄海晔.多媒体音频、视频文件格式及其播放器概览J. 电脑技术. 1998 (11)14 罗华飞,Matlab G

43、UI设计学习手记M,北京航空航天大学出版社,2011,215 马文刚.影视类多媒体控件大比拼J.中文信息.2003(06)16 姜丽娜,李争艳,牛茂苍.简易音乐播放器的设计与实现J. 科技资讯. 2009 (28)17 李金山,张文丽.多媒体播放器的设计与实现J. 内蒙古电大学刊. 2006 (02)15附录:程序代码function Y=voice1(x)%更改采样率使基频改变d=resample(x,3,2);%时长整合使语音文件恢复原来时长W=400;Wov=W/2;Kmax=W*2;Wsim=Wov;xdecim=8;kdecim=2;X=d;F=1.5;Ss =W-Wov;xpts

44、= size(X,2);ypts = round(xpts / F);Y = zeros(1, ypts);xfwin = (1:Wov)/(Wov+1);ovix = (1-Wov):0;newix = 1:(W-Wov);simix = (1:xdecim:Wsim) - Wsim;padX = zeros(1, Wsim), X, zeros(1,Kmax+W-Wov);Y(1:Wsim) = X(1:Wsim);xabs = 0;lastxpos = 0;km = 0;for ypos = Wsim:Ss:(ypts-W);xpos = F * ypos;kmpred = km + (

45、xpos - lastxpos);lastxpos = xpos;if (kmpred = Kmax)km = kmpred;elseysim = Y(ypos + simix);rxy = zeros(1, Kmax+1);rxx = zeros(1, Kmax+1);Kmin = 0;for k = Kmin:kdecim:Kmaxxsim = padX(Wsim + xpos + k + simix);rxx(k+1) = norm(xsim);rxy(k+1) = (ysim * xsim);endRxy = (rxx = 0).*rxy./(rxx+(rxx=0);km = min(

46、find(Rxy = max(Rxy)-1);endxabs = xpos+km;Y(ypos+ovix) = (1-xfwin).*Y(ypos+ovix) + (xfwin.*padX(Wsim+xabs+ovix);Y(ypos+newix) = padX(Wsim+xabs+newix);endend致谢通过这次毕业设计,我学会了将数字信号处理技术应用于某一实际领域,即指对音频信号的处理。作为存储于计算机中的语音信号,其本身就是离散化了的向量,我们只需将这些离散的量提取出来,就可以对其进行处理了。在这里,用到了处理数字信号的强有力工具MATLAB,通过MATLAB里几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。最后,还利用了MATLAB的另一强大功能GUI界

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1