基于matlab语音信号合成与处理课程设计_第1页
基于matlab语音信号合成与处理课程设计_第2页
基于matlab语音信号合成与处理课程设计_第3页
基于matlab语音信号合成与处理课程设计_第4页
基于matlab语音信号合成与处理课程设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、摘要语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴学科,是目前发展最为迅速的学科之一,通过语音传递信息是人类最重要,最有效,最常用和最方便的交换信息的手段,所以对其研究就显得尤为重要。Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以讲声音文件变成离散的数据文件,然后用其强大的矩阵运算能力处理数据。这为本次课程设计提供了强大并良好的环境。本设计要求自己通过手机清唱一段歌曲,并用windows自带的录音机录制下来,保存格式为.wav格式,而且要求对所录的语音进行频率均衡和加入混响效果。从网上下载相应的歌曲伴奏,经过截取、加噪、消噪后,与混响后的清唱

2、语音进行合成,制作成一首歌曲。采用语音合成可帮助学生加强理解,MATLAB里面有很多应用示波器滤波,利用这些滤波器可以很容易地实现语音信号的消噪过程,利用MATLAB的声音处理函数设计一组语音合成实验,配合Windows操作系统支持的语音媒体播放器可以很方便地将经过数字处理后的语音效果直观地体现出来,对于学生深刻理解数字信号处理中抽象数学运算的现实物理意义很有帮助。关键字:信号处理 语音合成 加噪 混响- 10 -一、 设计目的与任务录制各自的一段清唱歌曲语音信号,并对其进行频谱分析;然后在时域用数字信号处理的方法将信号加入延时与混响。然后从网上下载一段该歌曲的伴奏,对伴奏进行截取、格式转换、

3、加噪和去噪后,与伴唱歌曲进行合成,制作成一首歌曲,在分析其频谱,并与原始伴唱语音信号频谱进行比较。通过数字信号处理的课程设计,巩固和运用数字信号处理课程中的理论知识和实践技能,掌握最基本的运用Matlab软件处理信号的理论和方法,培养发现问题,分析问题和解决问题的能力。二、 设计的基本要求1. 录制的语音清晰,分析语音信号的特点;2. 探讨语音分析、加噪、去噪、混响以及合成的基本方法;3. 写出各个步骤的Matlab的程序代码;4. 分析录制的语音信号的时域波形与频谱;分析加噪、去噪与合成前后的语音信号波形与频谱;5. 熟悉加强滤波器的设计原理和滤波的过程;三、 设计思路图-1语音合成的方案设

4、计方框图整体设计思路:将录制的语音信号进行频谱分析,并进行频率均衡和加入混响效果。将下载的伴奏语音进行加噪和去噪处理,并对其加噪去噪后的语音信号进行频谱分析,比较处理前后的差异。最后,把录制的伴唱语音与下载的伴奏语音合成,即制作成为一首歌曲,再对其进行时域波形和频谱进行分析,并与伴唱语音信号进行比较。四、 设计过程4.1 语音信号概述 语言是人类创造的,是人类区别于其他地球生命的本质特征之一。人类用语言交流的过程可以看成是一个复杂的通信过程,为了获取更便于分析和处理的语音信源,必须在空气中传播的声波转变为包含语音信箱并且记载着声波物理性质的模拟(或数字)电信号,即语音信号,因此语音稀罕就成为语

5、音的表现形式或载体。语音学和数字信号处理的交叉结合便形成了语音信号处理。语音信号处理是建立在语音学和数字信号处理的基础上的,对语音信号模拟进行分析处理等方面的一门综合性学科。4.2 语音信号的采集 把录制的语音信号保存为.wav文件,长度要大于三十秒,小于一分钟,并对语音信号进行采样;录制软件可以使用Windows 自带的录音机,也可以使用其他专业的录音软件,录制时需要配备录音硬件(麦克风),为了减少噪音,需要在安静、无噪干扰小的环境下录制。4.21 语音信号的读入与打开 在Matlab中,用y=wavread(YY.wav)命令读入原始语音文件,fs为采样频率(Hz),本课程设计中的语音信号

6、采样频率都为fs=22050Hz。 下面是语音信号在Matlab中的语言程序,实现了语音的读入与打开,并绘制出语音信号的时域波形和信号频谱。fs=22050;程序:x=wavread('YY.wav');%读入原始语音信号%L=length(x);Xw=fft(x,L);n=0:L-1;w=0:fs/L:fs*(L-1)/L;subplot(2,1,1),plot(n,x);title('伴唱时域波形');subplot(2,1,2),plot(w,abs(Xw);title('伴唱信号频谱');程序运行的结果如下图所示:图-2语音读入与打开4.

7、22 语音信号的延时混响 将原始伴唱的语音信号YY.wav文件,进行延时混响处理,使语音听起来带有回声,运行下面的程序生成新的带有混响效果的语音信号YYhx.wav文件。%延时混响%x=wavread('YY.wav'); %读入原始声音n=1200; %设定延迟时间t=n/fs秒,改变该数据可改变混响深度(时间间隔)N=50; %y设定延迟级数为N级,改变该数据可改变次数x1=x;zeros(N*n,1); %将x通过补零延长到经N级延时后的长度for i=1:N %进行N次延时,第一次延时在x前补n 个0,后补(N-1)*n个0x2=zeros(i*n,1);x;zeros

8、(N-i)*n,1); %第i次延时在x前补i*n个0,后补(N-i)*n个0x1=x1+1/(2*i)*x2; %将经延时的信号x1跟x逐次相加endwavwrite(x1,22050,'YYhx.wav'); %将混响后的数据转换为声音Xw=fft(x);L=length(Xw);w=0:fs/L:fs*(L-1)/L;Xw1=fft(x1);L1=length(Xw1);w1=0:fs/L1:fs*(L1-1)/L1;subplot(2,1,1);plot(w,abs(Xw); ylabel('YY');subplot(2,1,2);plot(w1,abs

9、(Xw1); ylabel('YYhx');程序运行的结果如下图-3所示图-3 语音信号加入混响前后的频谱图通过伴唱时域波形可以看出,频率比较集中,所以就没有进行频率均衡,直接进行了混响的添加,加入后的语音信号从频谱波形可以看出,语音进行混响后,语音有一部分的延时性,从而达到有回声的效果。4.3 伴奏的采集从网上下载伴唱歌曲的伴奏.mp3文件,然后再酷狗音乐软件上,将其演唱的部分的伴奏截取下来,转换格式为.wav文件。由于网络上下载的采样频率为44100Hz的,而录音的频率为22050Hz,因此,这两种采样频率的语音信号不能有叠加合成,需要将44100Hz的伴奏通过格式工厂格式

10、转换软件,将其采样频率转换为22050Hz。将截取转换后的文件命名为YY0.wav文件。4.31 伴奏的加噪由于伴奏中要含有3种单一频率噪声,3种噪声频率的频差不大于3kHz不小于2kHz,且落在音频范围内。因此需要先给伴奏加上三种频率的噪声,其给伴奏加噪的程序如下:%在语音中加噪声%x1=wavread('YY0.wav');%读取原语音信号,lei1中无噪声.fs=22050; %原语音信的采样率为22050Hzfn1=1000;fn2=3500;fn3=6000;t=1:length(x1); %设置噪声的度度跟原语音信一样长,x21=0.4*sin(2*pi*fn1/f

11、s*t);x22=0.4*sin(2*pi*fn2/fs*t);x23=0.4*sin(2*pi*fn3/fs*t);%产生幅度为2频率为fn的正弦波作为噪声.x=x1+x21'+x22'+x23'%将原子核语音信号跟噪声相加,x为带有噪声的语音信号.wavwrite(x,22050,'YY0jz.wav');%将带有噪声的语音信号转换为声音,lei2中将有噪声Xw=fft(x);L=length(Xw);w=0:fs/L:fs*(L-1)/L;Xw1=fft(x1);L1=length(Xw1);w1=0:fs/L1:fs*(L1-1)/L1;subp

12、lot(2,1,1);plot(w1,abs(Xw1); ylabel('YY0');subplot(2,1,2);plot(w,abs(Xw); ylabel('YY0jz');加噪后生成新的伴奏语音,命名为YY0jz.wav文件。程序运行的结果如下图所示:图-5伴奏加噪前后的波形图有程序和波形图可知:加入的三种噪声的频率分别为1000Hz、3500Hz、6000Hz。由于噪声的幅度非常大,所以看到加噪后的波形图里三个噪声非常明显,听YY0jz.wav文件时,听到非常尖锐的噪声。4.32 带通滤波器的设计及消噪由于三种频率的噪声分别为1000Hz、3500Hz

13、、6000Hz,所以要设计三个带通滤波器,连续滤掉这三个噪声。三个滤波器的设置参数分别为:Bndstop,FIR,Equiripple,Minimumorder,Fs=22050,Fpass1=950,Fstop1=980,Fstop2=1020,Fpass2=1050,Apass1=1,Astop=60,Apass2=1。滤波后生成的无噪声伴奏YY0qa,wav文件,其消噪程序如下:%消除语音中的噪声%x1=wavread('YY0jz.wav');%读取原语音信号,lei2中带有噪声.x=y2;y=filter(hn1,1,x); %将带有噪声的语音信号x经过带阻滤波器进行

14、滤波,以达到消噪目的.y1=filter(hn2,1,y);y2=filter(hn3,1,y1);%Bndstop,FIR,Equiripple,Minimumorder,Fs=22050,Fpass1=950,Fstop1=980,Fstop2=1020,Fpass2=1050,Apass1=1,Astop=60,Apass2=1wavwrite(y2,22050,'YY0qz.wav');%将经带阻滤波消噪后的信号转换为语音,lei3中将不再有噪声Xw=fft(x);L=length(Xw);w=0:fs/L:fs*(L-1)/L;Xw1=fft(x1);L1=lengt

15、h(Xw1);w1=0:fs/L1:fs*(L1-1)/L1;subplot(2,1,1);plot(w1,abs(Xw1); ylabel('YY0jz');subplot(2,1,2);plot(w,abs(Xw); ylabel('YY0qz');程序运行后的结果如下图所示:图-6伴奏去噪前后的波形图去掉噪声后,伴奏恢复到了原来的频率。通过对伴奏的加噪、去噪,熟悉如何设计滤波器来去掉语音中的噪声。4.4 语音的合成语音合成就是将两种采样频率相同的语音在时域进行混合,利用Matlab软件对两个语音信号混合达到制作一个新的语音信号,合成后的语音信号中既有伴唱也

16、有伴唱,即形成一首有伴奏伴唱的歌曲。本次课程设计的任务就是伴唱和伴奏两个语音信号合成一个,制作成一首歌曲,其合成程序如下所示:%将两首语音合成一首%m1=wavread('YY0qz.wav');%读取一首语音m1m2=wavread('YYhx.wav'); %读取另一首语音m2if length(m1)>length(m2) %比较两首语音的长度,将短的补成跟长的相等 m3=m2;zeros(length(m1)-length(m2),1);else m3=m1;zeros(length(m2)-length(m1),1);end m=1.0*m2+m

17、3; %将两个语音相加,为分辩明,将其中一个衰减wavwrite(m,22050,'YYhc.wav'); %将合成后的信转为语音生成的歌曲文件 YYhc.wav文件。对其进行频谱分析的程序运行结果如下图所示:图-7 合成后的语音信号的波形图将合成的歌曲文件在酷狗音乐里面播放,比较与原唱进行比较,基本达到了课程设计的要求。4.5 课程设计主意事项:一、录制伴唱语音的时候应该要保持安静的环境,在电脑上录制最好使用比较好的录音设备,这样录制的效果会比较好。二、在设计滤波器的时候,应该先找出噪声的频率,再设计滤波器。对加噪的伴奏语音信号应该连续滤波。三、在进行语音合成的时候应该对程序

18、进行仔细的分析,如果伴奏的声音大,伴唱的声音小,那么就应该吧伴奏的声音进行适度的衰减,从而保证伴奏与伴唱的幅度相匹配。结语: 为期两周的课程设计接近了尾声,虽然在设计中遇到了许多的困难,但是通过查阅资料,与同学探讨交流彼此的意见,解决了不少的问题。在雷学堂老师的知道下,最终还是用Matlab软件完成了我的课程设计下面介绍下我设计的课题:基于MATLAB的数字语音处理本设计采用了高效快捷的开发工具MATLAB,实现了语音信号的采集,对语音信号的加噪以及设计滤波器消除噪声的一系列工作。从伴奏加噪的频率波形图可以看出来:所加的噪声的幅度远远超过了语音信号的幅度,因此在加载噪声后生成的语音信号中,原语音信号被噪

温馨提示

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

评论

0/150

提交评论