论文格式(样本)

上传人:F****n 文档编号:99738712 上传时间:2019-09-20 格式:DOC 页数:13 大小:227KB
返回 下载 相关 举报
论文格式(样本)_第1页
第1页 / 共13页
论文格式(样本)_第2页
第2页 / 共13页
论文格式(样本)_第3页
第3页 / 共13页
论文格式(样本)_第4页
第4页 / 共13页
论文格式(样本)_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《论文格式(样本)》由会员分享,可在线阅读,更多相关《论文格式(样本)(13页珍藏版)》请在金锄头文库上搜索。

1、姓名: 班级: 学号: 一个简单的音频处理程序题目简述。1 功能介绍本程序是一个简单的音频处理程序,使用MATLAB软件编写完成。主要具有音频录制、播放、播放速率控制、播放音量控制、播放模式选择(渐强、渐弱、倒放、快放、单声道、交换声道、回音、往返播放等,可扩展)、同步绘制音频数据波形等功能,并通过图形化交互界面(GUI)进行程序使用的交互。交互界面如图1.图1 程序的交互界面2 功能实现程序由两个部分组成:MATLAB代码(.m文件)和GUI图形(.fig)。程序使用的流程:获得音频文件 播放功能选项(可选) 播放音频文件。在第一步获得音频文件后,程序在交互界面右侧的绘图控件中显示相应的音频

2、数据波形,并持续到音频文件被更新。备注:软件版本:MATLAB R2011b2.1 获得音频文件有两种方式获得音频文件:一、现场录制音频数据(形成数据文件voice.mat);二、打开已有音频文件(仅支持.wav文件格式)。点击“音频来源”的下拉菜单,可以选择录音或打开已有音频文件,默认是录音。图2.1-1 音频来源:录音2.1.1 录制音频文件音频来源默认:录音,设置录音长度(单位:秒),点击“开始录制”按钮。录音文件的音频数据显示在交互界面右上侧的绘图控件中。此时在指令窗会看到同步的提示信息,其中ans返回的是当前录制文件的数据维度。图2.1-2 录制音频文件(录制10s文件完成时)具体代

3、码参见:function pushbutton1_Callback(hObject, eventdata, handles)function popupmenu2_Callback(hObject, eventdata, handles)2.1.2 打开已有文件音频来源打开已有音频文件。在弹出的文件查找对话框中找到目标音频文件,并打开。可见当前文件路径显示在界面的右上方“路径:”中,.wav格式的音频文件一般包含左声道和右声道数据,将不同声道数据绘制在不同的图形控件中。此时在指令窗会看到同步的提示信息,其中size_FileData返回的是当前录制文件的数据维度。图2.1-3 打开已有文件具体

4、代码参见:function popupmenu2_Callback(hObject, eventdata, handles)2.2 音频数据显示主要包括合成音频、左声道和右声道数据的显示。2.2.1 合成音频数据通过录音模式获得的音频文件,是通过调用windows录音机完成的,受限于所用电脑的声道,仅获得单声道数据。故此情况下不存在左右声道的区别。.wav格式的音频文件是一种无损格式音频,一般有左右声道,分别保存在文件数据的第1列和第2列。合成音频数据取自左右声道数据之和的二分之一。波形数据显示在交互界面的右侧绘图控件之中。如图2.1-2和图2.1-3.具体代码参见:function push

5、button1_Callback(hObject, eventdata, handles)function popupmenu2_Callback(hObject, eventdata, handles)2.2.2 左声道数据左声道数据取自.wav格式的音频文件的第1列数据。显示在交互界面的右下方的两个绘图控件中左侧这个控件之中。具体代码参见:function popupmenu2_Callback(hObject, eventdata, handles)2.2.3 右声道数据右声道数据取自.wav格式的音频文件的第2列数据。显示在交互界面的右下方的两个绘图控件中右侧这个控件之中。具体代码参见

6、:function popupmenu2_Callback(hObject, eventdata, handles)2.3 播放功能选项在已获得音频文件(详见2.1节)的基础上,再进行播放功能选项的选择。播放功能选项包括播放速度控制、播放音量控制和播放模式选择3个功能选项。此部分均可跳过。图2.3-1 播放功能选项2.3.1 播放速度控制播放速度通过改变播放音频文件时每秒播放音频数据的个数(即频率)进行控制。如选择播放速度为8000Hz即每秒播放8000个音频数据。频率越高,播放速度越快。可选择的播放频率有:8000 Hz(默认)、11025 Hz、22050 Hz、44100 Hz。图2.3

7、-2 播放速度控制具体代码详见:function pushbutton2_Callback(hObject, eventdata, handles)FS_chioceswitch-case结构2.3.2 播放音量控制播放音量控制通过改变音频数据被放大或缩小的倍数分别来控制播放时声音的增大或减小(即乘以一个系数)。系数大于1,则音频数据被放大;系数小于1,则音频数据被缩小。通过拖动音量大小的滚动条来改变播放音量的大小,变化范围为-20dB +20dB,默认为0dB。图2.3-3 播放音量控制具体代码详见:function pushbutton2_Callback(hObject, eventda

8、ta, handles)timesif-else 结构2.3.3 播放模式选择通过选择下拉菜单中不同的播放方式来进行播放模式选择。可选择的范围:正常播放(默认)、音量渐弱、音量渐强、音频倒放、音频快放(2倍)、左声道声音播放、右声道声音播放。图2.3-4 播放模式选择具体代码详见:function pushbutton2_Callback(hObject, eventdata, handles)func_choiceswitch-case结构说明:正常播放(默认):otherwise,正常播放原数据。音量渐弱:case 2,在原数据基础上乘以衰减系数(exp(-t./FS)。音量渐强:case

9、 3,在原数据基础上乘以增强系数(exp(4*t./FS)。音频倒放:case 4,将原数据倒置sound_rec(size_voice:-1:1)。音频快放(2倍):case 5,改变播放速率为2*FS。左声道声音播放:case 6,取原数据的第1列。右声道声音播放:case 7,取原数据的第2列。交换声道播放:case 8,交换原数据的前两列。增加回音播放:case 9,在原数据基础上从2/3处叠加一半幅度的原数据。w1=sound_rec; zeros(size_voice(1)/2,size_voice(2); w2=zeros(size_voice(1)/2,size_voice(2

10、); sound_rec; sound_rec=times*(w1 + w2/2);往返回音:case 10,将原数据以1秒为单位进行分割,然后倒序排列形成新的声音数据。原数据续接新的声音数据形成往返回音数据。2.4 音频播放在已获得音频文件(详见2.1节)、设置播放功能选项(详见2.2节)的基础上,再进行音频播放。点击“播放/回放”按钮,进行音频播放。在相应的播放结束时,指令窗(command window)中会有相应的提示,此时可以重新选择音频文件输入(可选)并设置播放功能选项(可选),进行音频播放的反复操作。具体代码详见:function pushbutton2_Callback(hOb

11、ject, eventdata, handles)func_choiceswitch-case结构2.5 其他无。3 程序总结本程序实现简单的音频处理功能及便捷的图形化交互界面。具有以下特点与缺陷:1、程序可扩展性好。其中“播放模式”采用switch-case语句实现,方便功能扩展;2、图形化用户交互界面简洁明了。左侧放置音频播放的各选项控件,且从上到下的排布体现操作步骤;右侧显示音频文件的数据波形。提示信息丰富,方便操作。3、重复地进行音频数据载入时,上一次的音频数据在未被新数据覆盖之前会持续在绘图控件中显示,容易让人产生错觉。(已改)未尽功能:(1)、播放的数据文件采用先保存,再加载的方式

12、实现数据在不同控件回调函数中的传递,应该可以优化。(2)、声音播放时,实时的显示播放进度。(3)、更为实际的音频处理功能待加强。(4)、将整体程序打包成可执行的.exe文件。4 课程总结待补!附录(部分程序)% - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future ver

13、sion of MATLAB% handles structure with handles and user data (see GUIDATA) t_str = get(handles.edit1, string);t_record = str2double(t_str); % Record your voice for t_record seconds.recObj = audiorecorder;disp(Please Start speaking.)axes(handles.axes1)text(0,0, .);recordblocking(recObj, t_record);dis

14、p(End of Recording.)text(0,0.5, ); % Store data in double-precision array.myRecording = getaudiodata(recObj);size(myRecording) % Plot the waveform.plot(handles.axes1, myRecording);axes(handles.axes2),plot(0:9,zeros(1,10)%text(0.2, 0.5, );axes(handles.axes3),plot(0:9,zeros(1,10)%text(0.2, 0.5, ); %save myRecording data as voice.matsavefile = voice.mat;save(savefile, myRecording)% - Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a f

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号