基于matlab的语音信号的合成(加入延迟混响)_第1页
基于matlab的语音信号的合成(加入延迟混响)_第2页
基于matlab的语音信号的合成(加入延迟混响)_第3页
基于matlab的语音信号的合成(加入延迟混响)_第4页
基于matlab的语音信号的合成(加入延迟混响)_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中北大学课 程 设 计 说 明 书学生姓名: 学 号: 学生姓名: 学 号: 学生姓名: 学 号: 学 院: 信息与通信工程学院 专 业: 电子信息工程 题 目:信息处理实践: 语言信号的合成 指导教师: 杨 娜 职称: 副教授 2016 年 1月 3 日 中北大学课程设计任务书 15/16 学年第 一 学期学 院: 信息与通信工程学院 专 业: 电子信息工程 学生姓名: 学 号: 学生姓名: 学 号: 学生姓名: 学 号: 课程设计题目:信息处理实践: 语言信号的合成 起 迄 日 期: 2016年1 月4日2016年1月 22 日 课程设计地点: 201,503,1号楼教室 指 导 教 师:

2、 杨 娜 系 主 任: 王浩全 下达任务书日期: 2016 年1 月 3 日课 程 设 计 任 务 书1设计目的: 通过本次课程设计使学生掌握信息处理理论的相关知识。通过具体的设计问题将理论与实践相结合,培养学生运用所学独立解决问题的能力。(1)了解信号的读取、保存、截取、拼接等技术。(2)了解MATLAB的信号处理技术。(3)掌握MATLAB 实现语音信号的读取、保存、拼接。2设计内容和要求(包括原始数据、技术参数、条件、设计要求等):(1)利用windows的录音机或其他外部设备获取两种或两种以上音乐信号,并将信号进行转换和存储。(2)自行截取各采集信号中的一段进行信号的拼接。(3)保存拼

3、接后的音乐信号,并进行播放证实存储的正确性。3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:(1)要求设计组的每个成员都要了解设计的要求和思路;(2)编写详细的设计说明书三份;(3)要求有正确的运行结果及结果分析。 课 程 设 计 任 务 书4主要参考文献:1程佩青. 数字信号处理教程. 北京:清华大学出版社,20022刘敏,魏玲. Matlab通信仿真与应用. 北京:国防工业出版社,20013高政. 信号处理与系统分析. 北京:中国水利水电出版社,20014俞一彪,孙兵. 数字信号处理理论与应用. 南京:东南大学出版社,20005数字信号处理 孙洪等译 电子工业

4、出版社 6精通MATLAB6.5版 张志涌等编著 北京航空航天大学出版社 7 MATLAB扩展编程 何强 何英 编著 清华大学出版社 8数字信号处理教程 程佩青编著 清华大学出版社 5设计成果形式及要求:(1)提供详细的设计说明书三份;(2)提供详细数据及分析结果。6工作计划及进度:2007年6月25日 2007年7 月 1 日:查资料 2007年7 月2日 7月5日:在指导教师指导下设计方案及程序7月6 日 7月10日:学生上机调试程序,指导教师辅导7月11日 7月12 日:完成课程设计说明书7月13日:答辩系主任审查意见: 签字: 年 月 日I目 录摘 要.(1)1.MATLAB简介.(1

5、)2.GUI简介.(1)1. 设计方案.2 设计步骤及结果1.语音信号的采集.2.语音信号的截取.3.语音信号的合成.4.合成语音的验证.5.GUI界面设计及实现.3 设计评述参考文献.附 录.II摘 要语音信号处理是一门比较实用的电子工程专业课程,语音是人类获取信息的的重要来源和利用信息的重要手段。通过语言相互传递信息是人类最重要的基本功能之一。语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。 Matlab是一个数据分析和处理功能十分强大的工程实用软件。本文介绍了利用matlab软件及其中的图形用户界

6、面(GUI)实现驱动声卡采集语音信号和语音信号采集后的文档处理方法,并通过实例利用matlab分析了语音信号处理的过程。关键词:语音信号处理 MATLAB 频谱分析 语音合成 1.MATLAB简介MATLAB是美国Math Works公司推出的一种面向工程和科学计算的交互式计算软件,它以矩阵运算为基础,把计算、可视化、程序设计融合到了一个简单易用的交互式工作环境中。同时由于MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。 2

7、.GUI简介GUIDE 是 Graphic User Interface Design Environment 的简称。它是一个设计图形用户界面的集成开发环境。它使得图形对象的生成和管理变得简单、直接。在MATLAB 的命令窗口中输入guide命令,即可开启 GUIDE的主界面 图形用户界面(GUI)是包含图形的对象,如:窗口、图标、菜单和文本的用户界面。1一设计方案语音验证信号拼接信号采集信号截取图1-1 总体设计方案女声录入男声录入时频分析时频分析提取信号提取信号 信号的合成 分析处理图1-2 具体运行流程图本实验通过应用MATLAB软件实现声音信号的采集、截取、拼接与结果分析。分析和处理

8、音频信号,首先要对声音信号进行采集,MATLAB的数据采集工具箱提供了一整套命令和函数,通过调用这些函数和命令,可直接控制声卡进行数据采集。Windows自带的录音机程序也可驱动声卡来采集语音信号,并能保存为WAV格式文件,供MATLAB相关函数直接读取、写入或播放。本实验以WAV格式音频信号作为分析处理的输入数据,用MATLAB处理音频信号的基本流程是:先将WAV格式音频信号经过wavread函数转换成MATLAB列数组变量;再用MATLAB强大的运算能力进行数据分析和处理,如时域分析、频域分析、数字滤波、信号合成、信号变换、识别和增强等等;处理后的数据如是音频数据,则可用wavwrite转

9、换成WAV格式文件或用sound函数直接回放。二设计步骤及结果 1.语音信号的采集首先利用windows下的录音机,录制一段信号,时间控制在10秒左右,然后将音频文件保存“yuan1.wav”、“yuan2.wav”。再在MATLAB软件平台下,利用函数audioread对语音信号进行采样,记住采样频率和采样点数。然后进行语音信号的分析,首先画出语音信号的时域波形图,并利用fft画出频域图。参数设定:采样频率88060Hz,采样时间10s,作88060点fft。程序如下:fs=88060; %采样频率 x1=audiorecorder(fs,16,1);recordblocking(x1,10

10、);%10秒y1 = getaudiodata(x1);subplot(2,2,1);plot(y1);title(男声录入波形图);xlabel(样本数);ylabel(幅值);Y1=fft(y1);subplot(2,2,3);plot(abs(Y1);title(男声录入频谱图);xlabel(Freq/HZ);ylabel(幅值);filename= yuan1.wavaudiowrite(filename,y1,fs);x2=audiorecorder(fs,16,1);recordblocking(x2,10);y2 = getaudiodata(x2);subplot(2,2,2

11、);plot(y2);title(女声录入波形图);xlabel(样本数);ylabel(幅值);Y2=fft(y2);subplot(2,2,4);plot(abs(Y2);title(女声录入频谱图);xlabel(Freq/HZ);ylabel(幅值);filename= yuan2.wavaudiowrite(filename,y2,fs);结果如下:图2-1 采集信号波形和频谱图图2-2 生成原始信号文件 2.语音信号的截取自行设定截取起始时间和结束时间,对原始信号进行截取,并将截取后的数据保存为wav格式文件;再对截取后的信号波形图显示。程序如下:%截取信号sec1= 2 %剪切开

12、始的时间sec2= 5 %剪切结束的时间filename=yuan1.wavn1,F=audioread(filename);n1_new=n1(F*sec1+1):F*sec2),:);subplot(1,2,1);plot(n1_new);title(截取男声波形图);xlabel(样本数);ylabel(幅值);filename=yuan1new.wavaudiowrite(filename,n1_new,F); filename=yuan2.wavn2,F=audioread(filename);n2_new=n2(F*sec1+1):F*sec2),:);subplot(1,2,2)

13、;plot(n2_new);title(截取女声波形图);xlabel(样本数);ylabel(幅值);filename=yuan2new.wavaudiowrite(filename,n2_new,F);结果如下:图2-3 截取信号的波形图对比图2-1,可以发现截取信号的波形正是图2-1波形中设定截取的一段。图2-4 生成截取信号文件 3.语音信号的合成按照设计要求将截取的语音信号进行拼接,并保存在新的wav文件中。但设计过程中发现单纯的拼接信号,在拼接处会给听者极大的突兀感,所以在设计中加入信号的延迟混响,以达到减少突兀感,使语音过渡更加平滑。合成后,生成波形和频谱图进行分析。所谓延迟混响

14、,就是在各自截取段的基础上,对第一段的末尾进行延时补零,再对第二段的开头进行延时补零,在此基础上采取部分相加的方法实现该时段内的混响,延长的时长设定在0.1s,混响的时间取在1s。程序如下:sec1= 2 %剪切开始的时间sec2= 5 %剪切结束的时间filename= yuan1new.wavnew1,F=audioread(filename);filename= yuan2new.wavnew2,F=audioread(filename);n_1=new1(sec2-sec1-1)*F:(sec2-sec1)*F);n_2=new2(1:F);j=10;z1=n_1;zeros(F/j,

15、1);z2=zeros(F/j+1,1);n_2;z=z1+z2;new3(1:(sec2-sec1-1)*F)=new1(1:(sec2-sec1-1)*F);new3(sec2-sec1-1)*F:(sec2-sec1+1/j)*F)=z;new3(sec2-sec1+1/j)*F-1:(2*(sec2-sec1)-1+1/j)*F)=new2(F:(sec2-sec1)*F);subplot(1,2,1);plot(new3);title(合成波形图);xlabel(样本数);ylabel(幅值);N1=fft(new3);subplot(1,2,2);plot(abs(N1);titl

16、e(合成频谱图);xlabel(Freq/HZ);ylabel(幅值);filename= hecheng.wavaudiowrite(filename,new3,F);结果如下:图2-5 合成信号波形与频谱图对比图2-3,可看出波形大致为两个阶段信号的拼接合成。图2-6 生成合成信号文件 4.合成语音的验证通过sound函数实现在matlab在直接听取截取段的语音和合成之后的录音。程序如下:filename=yuan1new.wavyan1,F=audioread(filename);sound(yan1,F)filename=yuan2new.wavyan2,F=audioread(fil

17、ename);sound(yan2,F)filename=hecheng.wavyan3,F=audioread(filename);sound(yan3,F); 5.GUI界面设计及实现考虑到系统的实现目的是为了让用户有更好的体验,借助于matlab的图形用户界面(以下成为GUI),做出完整的用户界面来完成本次课程设计。由于程序部分较长,详细程序见附录,此处只展示结果。结果如下:图2-7 GUI设计界面图2-8 最终结果实现界面三设计评述通过本次课程设计,我学会了使用MATLAB分析连续时间信号的频谱,能够基本运用了MATLAB的图形用户界面(GUI)编程。实验之初由于对课题和相关知识理解不

18、深,因而设计起来很困难。通过查阅相关书籍,同学之间相互讨论以及询问老师,我理解并掌握了课题的实质。由于之前很少接触MATLAB软件, MATLAB中的许多函数,如fft,plot,subplot,abs等用起来比较吃力。通过老师的讲解以及下课后自己对MATLAB的学习,我基本可运用MATLAB软件做一些简单的程序来看信号的频谱或各种信号的波形。通过分析连续时间信号的频谱,使我更加深入的理解了书本上的知识。要真正熟练运用MATLAB还要靠自己多学习和使用。而且在写MATLAB程序时不能马虎,否则程序很容易出错,这培养了自己的细心和耐心。通过不断使用MATLAB,我发现并解决了很多问题,使我更加了

19、解MATLAB。课程设计虽然是一门专业课,但是通过课设使我专业知识得到了丰富,专业技能上的提升。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在谢老师和林老师的辛勤指导下,终于迎刃而解。同时,在老师的身上我学得到很多实用的知识,在此我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示衷心的感谢!参 考 文 献1程佩青. 数字信号处理教程. 北京:清华大学出版社,20022刘敏,魏玲. Matlab通信仿真与应用. 北京:国防工业出版社,20013高政. 信号处理与系统分析. 北京:中国水利水电出版社,20014俞一彪,孙兵. 数字信号处理理论与应用. 南京:东南大学出版

20、社,20005数字信号处理 孙洪等译 电子工业出版社 6精通MATLAB6.5版 张志涌等编著 北京航空航天大学出版社 7MATLAB扩展编程 何强 何英 编著 清华大学出版社 8数字信号处理教程 程佩青编著 清华大学出版社附 录GUI设计界面程序如下:function varargout = shiyan1(varargin)% SHIYAN1 MATLAB code for shiyan1.fig% SHIYAN1, by itself, creates a new SHIYAN1 or raises the existing% singleton*.% H = SHIYAN1 retur

21、ns the handle to a new SHIYAN1 or the handle to% the existing singleton*.% SHIYAN1(CALLBACK,hObject,eventData,handles,.) calls the local% function named CALLBACK in SHIYAN1.M with the given input arguments.% SHIYAN1(Property,Value,.) creates a new SHIYAN1 or raises the% existing singleton*. Starting

22、 from the left, property value pairs are% applied to the GUI before shiyan1_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to shiyan1_OpeningFcn via varargin.% *See GUI Options on GUIDEs Tools menu. Choose GUI allows on

23、ly one% instance to run (singleton).% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help shiyan1 % Last Modified by GUIDE v2.5 14-Jan-2016 09:18:41 % Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleto

24、n, gui_Singleton, . gui_OpeningFcn, shiyan1_OpeningFcn, . gui_OutputFcn, shiyan1_OutputFcn, . gui_LayoutFcn, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_Callback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State

25、, varargin:);end% End initialization code - DO NOT EDIT % - Executes just before shiyan1 is made visible.function shiyan1_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future vers

26、ion of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to shiyan1 (see VARARGIN) % Choose default command line output for shiyan1handles.output = hObject; % Update handles structureguidata(hObject, handles); % UIWAIT makes shiyan1 wait for user res

27、ponse (see UIRESUME)% uiwait(handles.figure1); % - Outputs from this function are returned to the command line.function varargout = shiyan1_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be d

28、efined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structurevarargout1 = handles.output; % - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle

29、 to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)fs=88060; %采样频率 sd =get(handles.edit1,string);sheding=str2double(sd) x1=audiorecorder(fs,16,1);recordblocking(x1,sheding);%8秒y1 = getaudiodata(x1);a

30、xes(handles.axes1); plot(y1);title(男声录入波形图);xlabel(样本数);ylabel(幅值);Y1=fft(y1);axes(handles.axes4); plot(abs(Y1);title(男声录入频谱图);xlabel(Freq/HZ);ylabel(幅值);filename= yuan1.wavaudiowrite(filename,y1,fs);guidata(hObject, handles); % - Executes on button press in pushbutton2.function pushbutton2_Callback

31、(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)fs=88060; %采样频率 sd =get(handles.edit1,string);sheding=str2double(sd) x2=audiorecorder(fs,16,1);recordbl

32、ocking(x2,sheding);y2 = getaudiodata(x2);axes(handles.axes5);plot(y2);title(女声录入波形图);xlabel(样本数);ylabel(幅值);Y2=fft(y2);axes(handles.axes6);plot(abs(Y2);title(女声录入频谱图);xlabel(Freq/HZ);ylabel(幅值);filename= yuan2.wavaudiowrite(filename,y2,fs);guidata(hObject, handles); % - Executes during object creati

33、on, after setting all properties.function pushbutton2_CreateFcn(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called function edit1_Callback(hObj

34、ect, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,String) returns contents of edit1 as text% str2double(get(hObject,String) returns contents o

35、f edit1 as a double % - Executes during object creation, after setting all properties.function edit1_CreateFcn(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all Creat

36、eFcns called % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function edit2_CreateFcn(hObject, eventdata, handles)% hObject handle to

37、 edit2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc & isequal(get(hObject,BackgroundColor), get(0,de

38、faultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end function edit3_Callback(hObject, eventdata, handles)% hObject handle to edit3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Hints: get(hO

39、bject,String) returns contents of edit3 as text% str2double(get(hObject,String) returns contents of edit3 as a double % - Executes during object creation, after setting all properties.function edit3_CreateFcn(hObject, eventdata, handles)% hObject handle to edit3 (see GCBO)% eventdata reserved - to b

40、e defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,B

41、ackgroundColor,white);end % - Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObject handle to pushbutton3 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)s1=g

42、et(handles.edit3,string);sec1=str2double(s1) s2=get(handles.edit2,string);sec2=str2double(s2) filename=yuan1.wavn1,F=audioread(filename);n1_new=n1(F*sec1+1):F*sec2),:);axes(handles.axes7);plot(n1_new);title(截取男声波形图);xlabel(样本数);ylabel(幅值);filename=yuan1new.wavaudiowrite(filename,n1_new,F); filename=

43、yuan2.wavn2,F=audioread(filename);n2_new=n2(F*sec1+1):F*sec2),:);axes(handles.axes8);plot(n2_new);title(截取女声波形图);xlabel(样本数);ylabel(幅值);filename=yuan2new.wavaudiowrite(filename,n2_new,F);guidata(hObject, handles); % - Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eve

44、ntdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)s1=get(handles.edit3,string);sec1=str2double(s1) s2=get(handles.edit2,string);sec2=str2double(s2) filename= yuan1new

45、.wavnew1,F=audioread(filename);filename= yuan2new.wavnew2,F=audioread(filename);n_1=new1(sec2-sec1-1)*F:(sec2-sec1)*F);n_2=new2(1:F);j=10;z1=n_1;zeros(F/j,1);z2=zeros(F/j+1,1);n_2;z=z1+z2;new3(1:(sec2-sec1-1)*F)=new1(1:(sec2-sec1-1)*F);new3(sec2-sec1-1)*F:(sec2-sec1+1/j)*F)=z;new3(sec2-sec1+1/j)*F-1:(2*(sec2-sec1)-1+1/j)*F)=new2(F:(sec2-sec1)*F);axes(handles.axes9);plot(new3);title(合成波形图);xlabel(样本数);ylabel(幅值);N

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论