1、毕业设计基于matlab的声音的延迟与混响课程设计任务书课程设计任务书题 目:基于MATLAB的声音延迟与混响 初始条件:1 MATLAB软件2 数字信号处理与声音处理基础知识要求完成的主要任务:1 较全面了解常用的数据分析与处理原理及方法;2 能够运用相关软件进行模拟分析;3 掌握基本的文献检索和文献阅读的方法;4 提高正确地撰写论文的基本能力。参考书目:1.刘泉,数字信号处理原理与实现(第二版),电子工业出版社,2009; 2张雄伟,DSP集成开发与应用实例,第1版,电子工业出版社,2002;3. 张洪涛等,数字信号处理,第一版,华中科技大学出版社,20074. 彭启琮等,DSP技术的发展
2、与应用,第二版,高等教育出版社,20075. 杨述斌等,数字信号处理实践教程,第一版,华中科技大学出版社,2007时间安排17周 仿真设计18周 鉴主15楼答辩指导教师签名:_ 年 月 日系主任(或责任教师)签名:_ 年 月 日摘要数字信号处理技术自诞生以来,有了快速的发展,主要是研究用数字或符号序列表示和处理信号,被广泛应用于各个领域。本次设计是用MATLAB语言对语音信号进行采样分析,并设计数字滤波器对信号进行滤波,比较滤波前后信号特性的变化。用MATLAB开发环境设计用户图形界面使布局编程简化。ABSTRACTDigital signal processing technology si
3、nce its birth had rapid development. the technology is to study the sequence of numbers or symbols used to represent and signal processing, it is widely used in various field. the design is to use theMATLAB language sampling and analysis of voice signal, and digital design for signal filtering, comp
4、aring before and after filtering the signal properties change .GUI interface provided with MATLAB development environment for designing the layout of graphical user interface makes programming simpler.1 绪论 数字信号处理是随着计算机技术的发展而迅速发展起来的一门新兴而古老的学科,它在新的领域如生物医学工程、声学、雷达、地震不、语音通信、数据通信、核科学等学科发挥着重要的作用,而它所采用的各种方
5、法及众多应用已有悠久的历史;同时也是一门具有很强的理论性与实践性,且理论和技术发展都十分迅速的前沿性学科。随着数字化时代的来临,科学技术的进步而生产发展需求的与日俱增,促进了数字信号处理学科的发展,产生了各种巧妙的信号处理算法;特别是计算机技术的飞速发展,为数字信号处理增添了巨大的生命力。数字信号处理主要是研究用数字或符号序列表示和处理信号。处理的目的可以是削弱信号中的多余内容,滤除混杂的噪声和干扰,或者是将信号变换为容易分析和识别的形式,便于估计和选择它的特征参数。例如通过分析和运算,可以估计脑电图或心电图中的某种特征参数,帮助医生查找病因和分析病情,确定合理的治疗方案;又如,信号在传输时,
6、要受到各种干扰,包括失真、衰落和混入的背景噪声,信号处理要排除这些干扰。声音信号是一维连续信号,而计算机只能处理离散信号。为了从离散信号还原连续信号,根据采样定理,可以确定采样频率的最小值。wav文件是一种数字声音文件格式,本课程设计基于Matlab分析了wav声音文件频谱与声音的关系。通过采集个人的一段声音进行频谱分析等处理,然后设计数字滤波器处理这个原始声音的wav文件,并比较滤波以后输出声音信号与原声音信号的异同。1.1设计任务(1)利用Windows下的录音机或其他软件,录制一段自己的语音信号,时间控制在1s左右,并对录制的信号进行采样。(2)语音信号的频谱分析,画出采样后语音信号的时
7、域波形和频谱图。(3)将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较。(4)设计几种特殊类型的滤波器:单回声滤波器,多重回声滤波器,无限个回声滤波器,全通结构的混响器,并画出滤波器的频域响应。(5)用自己设计的滤波器对采集的语音信号进行滤波。(6)分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化。(7)回放语音信号。1.2 设计要求(1)熟悉离散信号和系统的时域特性。(2)熟悉语音信号的特点。(3)掌握数字信号处理的基本概念,基本理论和基本方法。(4)掌握序列快速傅里叶变换方法。(5)学会MATLAB的使用,掌握MATLAB的程序设计
8、方法。(6)掌握MATLAB设计各种数字滤波器的方法和对信号进行滤波的方法2 设计的总体方案与原理2.1 设计的总体方案图语音信号的延时和混响设计方案框图12.2 程序流程图语音信号的延时和混响设计程序流程图22.3 设计的详细原理2.3.1 信号采样(1)采样频率采样频率是指计算机每秒钟采集多少个声音样本,采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。(2)采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用
9、数字声音信号的二进制位数。声卡的位客观地反映了数字声音信号对输入声音信号描述的准确程度。声卡的主要的作用之一是对声音信息进行录制与回放,在这个过程中采样的位数和采样的频率决定了声音采集的质量。2.3.2 混响与延时(1)混响效果主要是用于增加音源的融合感。自然音源的延时声阵列非常密集、复杂,所以模拟混响效果的程序也复杂多变。常见参数有以下几种:混响时间:能逼真的模拟自然混响的数码混响器上都有一套复杂的程序,其上虽然有很多技术参数可调,然而对这些技术参数的调整都不会比原有的效果更为自然,尤其是混响时间。高频滚降:此项参数用于模拟自然混响当中,空气对高频的吸收效应,以产生较为自然的混响效果。一般高
10、频混降的可调范围为0.11.0。此值较高时,混响效果也较接近自然混响;此值较低时,混响效果则较清澈。扩散度:此项参数可调整混响声阵密度的增长速度,其可调范围为010,其值较高时,混响效果比较丰厚、温暖;其值较低时,混响效果则较空旷、冷僻。预延时:自然混响声阵的建立都会延迟一段时间,预延时即为模拟次效应而设置。声阵密度:此项参数可调整声阵的密度,其值较高时,混响效果较为温暖,但有明显的声染色;其值较低时,混响效果较深邃,切声染色也较弱。频率调制:这是一项技术性的参数,因为电子混响的声阵密度比自然混响稀疏,为了使混响的声音比较平滑、连贯,需要对混响声阵列的延时时间进行调制。此项技术可以有效的消除延
11、时声阵列的段裂声,可以增加混响声的柔和感。调治深度:指上述调频电路的调治深度。(2)延时就是将音源延迟一段时间后,再欲播放的效果处理。依其延迟时间的不同,可分别产生合唱、镶边、回音等效果。当延迟时间在335ms之间时人耳感觉不到滞后音的存在,并且他与原音源叠加后,会因其相位干涉而产生梳状滤波效应,这就是镶边效果。如果延迟时间在50ms以上时,其延迟音就清晰可辨,此时的处理效果才是回音。回音处理一般都是用于产生简单的混响效果。延时、合唱、镶边、回音等效果的可调参数都差不多,具体有以下几项:*延时时间(Dly),即主延时电路的延时时间调整。*反馈增益(FB Gain),即延时反馈的增益控制。*反馈
12、高频比(Hi Ratio),即反馈回路上的高频衰减控制。*调制频率(Freq),指主延时的调频周期。*调制深度(Depth),指上述调频电路的调制深度。*高频增益(HF),指高频均衡控制。*预延时(Ini Dly),指主延时电路预延时时间调整。*均衡频率(EQ F),这里的频率均衡用于音色调整,此为均衡的中点频率选择。由于延时产生的效果都比较复杂多变,如果不是效果处理专家,建议使用设备提供的预置参数,因为这些预置参数给出的处理效果一般都比较好。2.3.3 离散傅立叶变换在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。下面介绍这些函数。函数FFT用于序列快速傅立叶
13、变换。函数的一种调用格式为 y=fft(x)其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT。且和x相同长度。若x为一矩阵,则y是对矩阵的每一列向量进行FFT。如果x长度是2的幂次方,函数fft执行高速基2FFT算法;否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。函数FFT的另一种调用格式为 y=fft(x,N)式中,x,y意义同前,N为正整数。函数执行N点的FFT。若x为向量且长度小于N,则函数将x补零至长度N。若向量x的长度大于N,则函数截短x使之长度为N。若x 为矩阵,按相同方法对x进行处理。经函数fft求得的序列y一般是复序列,通常要求
14、其幅值和相位。MATLAB提供求复数的幅值和相位函数:abs,angle,这些函数一般和FFT同时使用。函数abs(x)用于计算复向量x的幅值,函数angle(x)用于计算复向量的相角,介于 和 之间,以弧度表示。函数unwrap(p)用于展开弧度相位角p ,当相位角绝对变化超过 时,函数把它扩展至 。用MATLAB工具箱函数fft进行频谱分析时需注意:(1)函数fft返回值y的数据结构对称性。(2) 频率计算。(3)作FFT分析时,幅值大小与FFT选择点数有关,但不影响分析结果。2.3.4 滤波器设计本次设计用IIR滤波器对信号进行滤波,函数名为filter函数filter的调用格式为y=f
15、ilter(b,a,x)该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a1,此时表示FIR滤波器,否则就是IIR滤波器。该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。(1)单回声滤波器回音可以由简单的延时单元产生。直达声和在R抽样周期后出现的一种单个回音,可以用FIR滤波器产生,微分方程为:yn=xn+xn-R |1传输函数为:H(z)=1+z-R传递函数的幅频响应形状象梳子,这种滤波器又叫梳状滤波器。(2)多重回声滤波器为了产生以间隔R个抽样周期分开的具有指数衰减振幅的多重回
16、声,可用一个以下形式传输函数的FIR滤波器: 无限个振幅以指数衰减间隔为R个抽样周期的多重回声可用以下形式传输函数的IIR滤波器生成: IIR多重回声滤波器的基本频率FR=Fs/R,通常锁定在伴音设备的基频上,比如基鼓拍子。(3)无限个回声滤波器的系统函数: , 1 (4)全通结构的混响器的系统函数:全通滤波器的传递函数公式为H(Z)=y(Z)/X(Z)=(-K+Z(-m)/(1-K*Z(-m)其中m为回声延时取样,k为反馈系数。用直接1型表示这个传递函数则为:y(n)=k*x(n)+x(n-m)+k*y(n-m)可见其实际上是一个简单的IIR滤波器,时间n的输出有时间n的输入和m点之前的输入
17、与输出计算而得。由于这个IIR滤波器的频率响应为水平直线,所以被称为全通滤波器。3 程序设计的步骤和过程3.1 原始语音信号时域波形和频谱y,fs,bits=wavread(C:UsersAdministratorDesktop音频信号.wav);%用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。50000 150000表示读取从50000点到150000点的值(若只有一个N的点则表示读取前N点的采样值)。y=y(:,1);%只取单信道sound(y,fs,bits);%播放原始信号Y=fft(y);%对原始信号取傅里叶变换subplot(2,2,1:2);p
18、lot(y);title(原始信号时域波形);subplot(2,2,3);plot(abs(Y);title(原始信号幅频);subplot(2,2,4);plot(angle(Y);title(原始信号相频);3.2 采样后语音信号的时域波形和频谱y,fs,bits=wavread(C:UsersAdministratorDesktop音频信号.wav,50000 150000);%只取原信号的一部分,即时间区间50000 150000y=y(:,1);Y=fft(y,6001);%抽取6001点subplot(2,2,1:2);plot(y);title(采样信号时域波形);subplo
19、t(2,2,3);plot(abs(Y);title(采样信号幅频);subplot(2,2,4);plot(angle(Y);title(采样信号相频);sound(y,fs,bits);%回放采样信号3.3 对采样后的信号延时y,fs,bits=wavread(C:UsersAdministratorDesktop音频信号.wav,50000 150000);y=y(:,1);z=zeros(3000,1);y;%延迟3000Z=fft(z,6001);subplot(2,2,1:2);plot(z);title(延时后时域波形);subplot(2,2,3);plot(abs(Z);ti
20、tle(延时后幅频);subplot(2,2,4);plot(angle(Z);title(延时后相频);sound(y,fs,bits);%回放延迟信号3.4 对采样后的信号混响y,fs,bits=wavread(C:UsersAdministratorDesktop音频信号.wav,50000 150000);y=y(:,1);z=zeros(3000,1);y;y=y;zeros(3000,1);%补3000y1=y+z;%将原始信号与延迟信号相加,产生混响信号Y1=fft(y1,6001);subplot(2,2,1:2);plot(y1);title(混响的时域波形);subplot
21、(2,2,3);plot(abs(Y1);title(混响的幅频);subplot(2,2,4);plot(angle(Y1);title(混响的相频);sound(y,fs,bits);%回放混响信号3.5 单回声滤波器程序设计y,fs,bits=wavread(C:UsersAdministratorDesktop音频信号.wav,50000 150000);y=y(:,1);z=zeros(3000,1);y;y=y;zeros(3000,1);a=0.5;R=5000;%滤波器阶数设置,其值越高,回声越明显Bz1=1,zeros(1,R-1),a;%单回声滤波器系统函数分子Az1=(1
22、);%单回声滤波器系统函数分母y2=filter(Bz1,Az1,y);%单回声滤波器系统函数 Y2=fft(y2,6001);h,w=freqz(Bz1,Az1);%求设计的滤波器频谱subplot(3,2,1);plot(abs(h);title(单回声滤波器幅频响应);subplot(3,2,2); plot(angle(h);title(单回声滤波器相频响应);subplot(3,2,3:4);plot(y2);title(单回声滤波器时域图 );subplot(3,2,5);plot(abs(Y2);title(单回声滤波器幅频 );subplot(3,2,6);plot(angle
23、(Y2);title(单回声滤波器相频 );sound(y2,fs,bits); 3.6 多重回声滤波器程序设计y,fs,bits=wavread(C:UsersAdministratorDesktop音频信号.wav,50000 150000);y=y(:,1);z=zeros(3000,1);y;y=y;zeros(3000,1);a=0.5;N=5;R=9000;%滤波器阶数设置,其值越高,回声越明显Bz1=1,zeros(1,N*R-1),-aN;%多重回声滤波器系统函数分子Az1=1,zeros(1,R-1),-a;%多重回声滤波器系统函数分母y2=filter(Bz1,Az1,y)
24、;Y2=fft(y2,6001);h,w=freqz(Bz1,Az1);subplot(3,2,1);plot(abs(h);title(多重回声滤波器幅频响应);subplot(3,2,2); plot(angle(h);title(多重回声滤波器相频响应);subplot(3,2,3:4);plot(y2);title(多重回声滤波器时域图 );subplot(3,2,5);plot(abs(Y2);title(多重回声滤波器幅频 );subplot(3,2,6);plot(angle(Y2);title(多重回声滤波器相频 );sound(y2,fs,bits); 3.7 无限个回声滤波
25、器程序设计y,fs,bits=wavread(C:UsersAdministratorDesktop音频信号.wav,50000 150000);y=y(:,1);z=zeros(3000,1);y;y=y;zeros(3000,1);a=0.5;R=5000;%滤波器阶数设置,其值越高,回声越明显Bz=0,zeros(1,R-1),1;%无限个回声滤波器系统函数分子Az=1,zeros(1,R-1),-a;%无限个回声滤波器系统函数分母y2=filter(Bz,Az,y);Y2=fft(y2,6001);h,w=freqz(Bz,Az);subplot(3,2,1);plot(abs(h);
26、title(无限个回声滤波器幅频响应);subplot(3,2,2); plot(angle(h);title(无限个回声滤波器相频响应);subplot(3,2,3:4);plot(y2);title(无限个回声滤波器时域图 );subplot(3,2,5);plot(abs(Y2);title(无限个回声滤波器信号幅频 );subplot(3,2,6);plot(angle(Y2);title(无限个回声滤波器信号相频 );sound(y2,fs,bits); 3.8 全通结构滤波器程序设计y,fs,bits=wavread(C:UsersAdministratorDesktop音频信号.
27、wav,50000 150000);y=y(:,1);z=zeros(3000,1);y;y=y;zeros(3000,1);a=0.5;R=5000;%滤波器阶数设置,其值越高,回声越明显Bz1=a,zeros(1,R-1),1;%全通滤波器系统函数分子Az1=1,zeros(1,R-1),a;%全通滤波器系统函数分母h,w=freqz(Bz1,Az1);yy2=filter(Bz1,Az1,y);YY2=fft(yy2,6001);subplot(3,2,1);plot(abs(h);title(全通滤波器幅频响应);subplot(3,2,2); plot(angle(h);title(
28、全通滤波器相频响应);subplot(3,2,3:4);plot(yy2);title(全通结构时域图 );subplot(3,2,5);plot(abs(YY2);title(全通结构幅频 );subplot(3,2,6);plot(angle(YY2);title(全通结构相频 );sound(yy2,fs,bits); 4 结果分析与体会运行结果:对信号采样后,信号时域波形出现了离散化的分布,不像原始图像那样密集分布,频谱图也是同样的变换,幅度和频率都是根据采样区间变化的从时域图出延时是让原来的波形向右移动3000,频域的幅度发生了变化。混响:在时域图看前面几乎没变化,后面的幅度有一定变
29、化。在频谱图幅度变化很大,中间的上下相互抵消,两边的跳动很大。时域上形状大致相同,幅度有微小变化。频谱上也是滤波前后两边跳动变换较大,幅度变化较大。时域上滤波前的幅度比滤波后的数值大,形状上滤波后是连续的,滤波前是间断的频谱上变化两边上下跳的动变化,中间变化抵消时域上波形变得稀疏了,幅度相对变化较大。频谱上变化两边上下跳的动变化,中间变化抵消全通结构时域大致一样,滤波前比滤波后幅度有变化6000以后上下跳动抵消频域上变化的不为明显,幅度发生了变化。5 设计心得体会 课程设计是培养我们综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们实际工作能力的具体训练和考察过
30、程,通过课程设计我们能够比较系统的了解理论知识,把理论和实践相结合,并且用到生活当中。在做设计的过程中总会出现各种问题,在这种情况下我们都会努力寻求最佳路径解决问题,无形间提高了我们的动手,动脑能力,并且同学之间还能相互探讨问题,研究解决方案,增进大家的团队意识。 此次课程设计综合了数字信号处理的理论知识和实践经验,经过这段时间查阅的相关资料并结合以前学过的数字信号处理课程和实验,我如期完成了设计任务要求,并加深了对知识的理解,提高了自己的实践动手能力。拿到课程设计任务的时候,不知道从哪儿入手,选定题目后,上网查阅了相关资源,去图书馆搜集资料,确定了设计的基本方案,步骤,开始用软件进行实现,实现过程中出现了很多问题,上网查阅资料,在专业的论坛里面去看,下载MATLAB的视频,慢慢的开始有了进一步的理解。在以前的实验中没有接触过GUI界面的问题,根本不知道从哪入手,在查阅了资料,看视频,有了一定的了解,但是由于初次接触,出现问题的时候还是很难解决,经过