1《数字信号处理课程设计》课程总结报告题目运用matlab的数字音效处理系统设计学院电子信息工程学院专业通信工程姓名赵亚学号P21314067队员吴双胜程勇2015年12月21日安徽大学电子学院通信工程系2目录一、设计的目的和意义---------------------------------------------41.1设计的目的和意义---------------------------------------------41.2关于MATLAB软件:----------------------------------------41.3课题要求及分工------------------------------------------------5二、实现方案---------------------------------------------------------52.1总体方案---------------------------------------------------------52.2设计流程图------------------------------------------------------6三、设计原理----------------------------------------------------------73.1回声部分设计---------------------------------------------------73.2混响部分设计---------------------------------------------------83.3和声部分设计---------------------------------------------------8四、设计过程----------------------------------------------------------94.1设计方案---------------------------------------------------------94.2实验程序-------------------------------------------------------104.2.1原始信号分析-------------------------------------------104.2.2回声信号的产生与分析-------------------------------124.2.3混响的产生与分析-------------------------------------164.2.4和声的产生与分析-------------------------------------194.4.5简易的界面设计----------------------------------------214.5实验结果分析-------------------------------------------------213五、设计总结--------------------------------------------------------225.1课程设计的可取之处:-------------------------------------225.2课程设计的不足----------------------------------------------225.3编程中遇到的问题-------------------------------------------23六、收获与感受-----------------------------------------------------23七、参考文献--------------------------------------------------------244一、设计的目的和意义1.1设计的目的和意义现在随着时代的发展,人类已开始进入了信息化时代,用现代手段研究语音信号,使人们能更加有效地产生、传输、存储、获取和应用语音信息,这对于促进社会的发展具有十分重要的意义。学习了数字信号处理以及相关课程,就想自己动手做一段音频处理,来锻炼自己的动手能力,把知识学以致用。一般的录音是单声道的,放音时也是由一个扬声器发出声音,感觉不到立体感,因此就需要我们对声音进行处理,使得声音信号在平时听起来也可以产生立体感。综合所学的数字信号处理知识,利用MATLAB语言编程进行单回声、多回声、混音和和声的设计,并对处理后的信号进行频谱分析,实现的单回声、多回声、混音及和声的产生。同时通过处理音乐,我们也能更加的了解编码,熟悉运用MATLAB软件来处理音乐、声音,并熟悉数字信号处理方面的理论知识。1.2关于MATLAB软件:1.MATLAB语言具备高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;2.具有完备的图形处理功能,实现计算结果和编程的可视化;3.友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;4.功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等),5为用户提供了大量方便实用的处理工具。1.3课题要求1.课题要求(1).录制采集一段自己的语音信号;(2).设计滤波器,实现单回声、多回声、混响效果和和声效果;二、实现方案2.1总体方案首先,对原始的音频信号进行频谱分析;然后通过数字信号处理对原声信号进行延时,衰减,产生单回声信号及多回声信号,通过图形与原声信号进行比较。混响效果主要是用于增加音源的融合感。自然音源的延时声阵列非常密集、复杂,所以模拟混响效果也复杂多变。声音在一个密闭的控件到达听众时,包含直达声、早期的反射和混响几部分。早期的反射有几个空间上临近的直达声的基本延迟和衰减组成,而混响则有密集的回声组成。当振幅有少量变换并声音之间有很少的时间差别时,会产生和声效果。延时可用如下函数实现:))(1(2)(0nCOSRn注意:在时刻n处)(n的值通常是一个非整数值,在实际视线中,输出样本值需要用到内插法进行计算。62.2设计流程图1.通过计算机中的y=fft(x)傅里叶变换,对原声信号和回声信号进行频谱分析。2.通过设计FIR、IIR滤波器对原声信号进行衰减、延时产生一次、打开界面选择功能原信号分析输出原信号分析波形原信号取样设计一个FIR滤波器,进行延时及衰减处理,得到回声信号。频谱分析,绘出信号的频谱图以及时域波形单回声设计一个IIR滤波器,进行延时及衰减处理,得到回声信号。将每一级回声相对于上一级回声一次衰减和延时R个周期频谱分析,绘出信号的频谱图以及时域波形多回声设计全通滤波器,进行延时和叠加,达到混响效果。频谱分析,绘出信号的频谱图以及时域波形混响设计滤波器,把原信号进行不同延迟和衰减,叠加达到和声效果。频谱分析,绘出信号的频谱图以及时域波形和声7多次(次数可通过N改变,此处以三次为例)。三、设计原理3.1回声部分设计原理回声的定义:当声音投射到距离声源有一段距离的大面积上时,声能的一部分被吸收,而另一部分声能会被反射会俩,如果听者听到由声源直接发出的声和反射回来的声的时间间隔超过1/10秒,就能分辨这是两个声音,将返回的声音成为“回声”。1、单回声滤波器:回声可以由简单的延时单元产生。直达声和在R抽样周期后出现的一种单个回音可以用FIR滤波器产生。微分方程为:y(n)=x(n)+αx(n-R)该差分方程的系统函数可表示为:H(z)=1+Rz传递函数的幅频响应形状像梳子,这种滤波器又叫做梳状滤波器此滤波器为FIR滤波器,其结构图如下:α图2.2FIR滤波器结构2、多重回声滤波器:y(n)x(n)y(n)8为了产生以间隔R个抽样周期分开的具有指数衰减振幅的多重回声,可用一个以下形式传输函数的IIR滤波器:RNRNRNRRzzzzzzH1)1(1N2211```1)(无限个振幅以指数衰减间隔为R个抽样周期的多重回声可用以下形式传输函数的IIR滤波器生成:1,11)(RzzHIIR滤波器结构图:图2.3IIR滤波器结构图3.2混响部分设计原理混响则有密集的回声组成。上述多重回声滤波器不能提供自然声音混响。有其幅频特性可知其幅度响应对于所有频率不是常数,不能达到应产生的效果。为了产生更真实的混响效果,采用全通结构的混响器器,其传输函数为:1,1)(RRzzzH3.3和声部分设计原理x(n)y(n)9和声是对原始信号进行不同程度的衰减和延时,最后这些信号和原信号进行叠加会产生和声效果。延时可用如下函数实现:ncos12)(0Rn四、设计过程4.1设计方案1.读取语音信号与回放一段合适的原声信号,用“[x,fs]=audioread('d:\v4.mp3');”来读取录制好的语音信号,这是以采样频率fs来读取语音,并将采样信号值放入x中。用sound(x,fs)对声音信号进行回放。2.傅里叶变换FFT傅里叶变换调用格式:y=fft(x)其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT。且和x相同长度。若x为一矩阵,则y是对矩阵的每一列向量进行FFT。如果x长度是2的幂次方,函数fft执行高速基-2FFT算法;否则fft执行一种混合基离散傅里叶变换算法,计算速度大较慢。3.函数filter函数filter的调用格式为:y=filter(b,a,x)该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a=1,此时表示FIR滤波器,否则就是IIR滤波10器。该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。4.函数zearos函数的一种调用格式为:B=zeros(n)返回一个n*n的矩阵,其元素都为0,如果参数n不是一个标量就会报错。函数的另一种调用格式为:B=zeros(m,n)或B=zeros([mn])返回一个m*n的零矩阵。函数的另一种调用格式为:B=zeros(m,n,p,...)或B=zeros([mnp...])返回一个m*n*p*...的零矩阵。注意:参数m,n,p都是非负整数,负整数都会看成0。4.2实验程序4.2.1原始信号分析读取一段语音信号,画出其时域波形图,用fft对语音信号进行傅里叶变换,并画出其相位与幅值。(1)实验程序:[x,fs]=audioread('d:\v4.mp3');x=x(:,1);n1=0:2000;N=size(x,1);figure(1);subplot(2,1,1);plot(x);title('原始信号的时域波形');11Y=fft(x);subplot(2,1,2);plot(n1(1:1000),Y(1:1000));title('原始信号的频谱图');figure(2);subplot(2,1,1);plot(abs(Y));title('幅值');subplot(2,1,2);plot(angle(Y));title('相位');sound(x,fs);(2)实验结果124.2.2回声信号的产生对原始信号取出单声道信号,并用filter函数对其进行衰减和延时,得到回声信号。1、FIR滤波器产生一次回声(1)实验程序:[x,fs]=audioread('d:\v4.mp3');R=5000;n1=0:2000;num=[1,zeros(1,R-1),0.8];den=[1];y=filter(num,den,x);figure(1);subplot(2,1,1);plot(y);13title('单回声后信号时域波形');y1=fft(y);subplot(2,1,2);plot(n1(1:1000),y1(1:1000));title('单回声后信号频谱图');figure(2);subplot(2