2苏州科技大学《信号处理课程设计》报告题目:音乐回声效果处理专业班级:电子1412学号:14200106214姓名:孙玮组员:盛建东陈司宇夏诗楠指导教师:季剑岚2017年4月2目录摘要.......................................................................................................................................01设计内容...........................................................................................................................12设计原理...........................................................................................................................13设计过程...........................................................................................................................23.1声音信号的采集........................................................................................................23.2单回声滤波器的设计................................................................................................13.3多回声滤波器的设计................................................................................................23.4回声信号的文件输出................................................................................................33.5原始信号的分析........................................................................................................33.6单回声信号的分析....................................................................................................43.7多回声信号的分析....................................................................................................54设计结论...........................................................................................................................7参考文献...................................................................................................................................70摘要随着视听技术的快速发展,人们对音乐的要求越来越高,而其中音乐的现场感就显得尤为重要。这种现场感可以通过回声产生。因此,本文提出了一种关于音乐回声效果处理的设计,详细分析了回声信号的产生原理,并使用MATLAB对实际声音进行采集、处理、衰减和延时等来实现单回声和多回声滤波器,完成了单回声和多回声信号的产生。关键词信号处理;回声;MATLAB11设计内容本设计的主要任务是学会综合应用数字信号处理中信号的采集、衰减和延时等知识,通过MATLAB编程实现回声信号的产生,并分别进行时域和频域上的分析。本设计的主要要求为:首先,通过MATLAB编程实现对一段声音信号的采集,并给出其时域波形和频谱图;然后,通过FIR滤波器实现单回声滤波器,产生单回声信号,并给出单回声滤波器的脉冲响应和幅频特性以及单回声信号的时域波形和频谱图;最后,通过IIR滤波器实现多回声滤波器,产生多回声信号,并给出多回声滤波器的脉冲响应和幅频特性以及多回声信号的时域波形和频谱图。2设计原理声音信号在传播过程中,遇到大面积物体时,一部分声能会被吸收,另一部分则会被反射回来,且可以被人耳听到。这种由声波的反射引起的声音的重复叫回声。在一个相对封闭的环境下,人们所听到的声音包括原始的声音、单回声和多回声等。单回声是由原始声音单次反射形成的,而多回声信号则是由多次的单回声叠加而成。由回声的定义可知,回声信号可以通过将原始语音信号延时和衰减来完成。假设x(n)表示原始声音信号,其采样频率为fsHz,延时的时间为ts,y(n)表示单回声信号,图1为其结构示意图。如图所示,y(n)是由x(n)和其延迟了ts并衰减倍的信号αx(n-t∙fs)叠加而成,且要求小于,t∙fs必须为正整数。y(n)用方程表示为:y(n)=x(n)+αx(n-t∙fs)上式中,上述差分方程的系统函数为:H(z)=1+αz-t∙fs由系统函数可以看出,其为FIR滤波器。此外可以得出其单位冲激响应h(n)在2个n值处不为零,其他n值处均为零。由单回声信号同理可知多回声信号y(n)的方程为:y(n)=x(n)+αx(n-t∙fs)+αx(n-2t∙fs)+⋯+αN[n-N∙t∙fs]其系统函数为:2H(z)=1+α∙z-t∙fs+α2∙z-2t∙fs+⋯+αN∙z-N∙t∙fs上式通过等比数列求和可得:H(z)=1-αN+1∙z-(N+1)t∙fs1-α∙z-t∙fs当回声次数N→+∞时,α𝑁+1→0,此时式(5)可以化简为:H(z)=11-α∙z-t∙fs根据上式可以看出,多重滤波器为IIR滤波器,其结构示意图如图2所示。Σz-Rx(n)y(n)图1单回声滤波器结构示意图ΣZ-Rx(n)y(n)图2多回声滤波器结构示意图3设计过程3.1声音信号的采集在MATLABR2014a中,audioread函数可以从文件中读取数据,并返回抽样频率和抽样数据,其格式为[y,Fs]=audioread(filename)。先用audioread从文件中采集数据,完成读取后通过plot函数将原始信号时域波形输出,然后通过快速卷积法计算其频谱,并输出其频谱图。具体实现代码如下:[x,fs]=audioread('filename.wav');L=length(x);figure(1);plot(x);3title('原始信号时域图');xlabel('时间');ylabel('幅值');grid;f=-1:2/L:1-2/L;y=fft(x);figure(2);plot(f,fftshift(abs(y)));title('原始语音信号频谱图');xlabel('频率/π');ylabel('幅度');grid;3.2单回声滤波器的设计在MATLABR2014a中,filter函数可以通过输入的分子和分母的系数向量产生数字滤波器,并对输入的信号进行滤波,然后返回处理后的信号,其格式为y=filter(b,a,X)。式中b为分子系数向量,a为分母系数向量,X为输入信号。由式(2)知在产生FIR滤波器时,a=1。impz函数可以产生数字滤波器的N点的脉冲响应,其格式为[h,t]=impz(hfilt,n)。完成信号采集后,先设置延时时间,接着通过filter函数产生单回声滤波器,并将产生的单回声信号输出,然后通过impz函数产生单回声滤波器的脉冲响应,最后将单回声滤波器的脉冲响应和幅频特性以及单回声信号的时域波形图和频谱图输出。具体实现代码如下:t=0.3;k1=filter([1,zeros(1,fs*t),0.5],1,x);d1=impz([1,zeros(1,fs*t),0.5],1,fs*t*2);figure(3);stem(d1,'.');title('单回声滤波器脉冲响应');xlabel('周期');grid;figure(4);[H1,W1]=freqz([1,zeros(1,fs*t),0.5],1);plot(W1/pi,20*log10(abs(H1)));title('单回声滤波器幅频特性');xlabel('数字频率/π');ylabel('幅度/dB');grid;4figure(5);plot(k1);title('单回声信号时域图');xlabel('时间');ylabel('幅值');grid;y1=fft(k1);figure(6);plot(f,fftshift(abs(y1)));title('单回声语音信号频谱图');xlabel('频率');ylabel('幅度');grid;3.3多回声滤波器的设计对于多回声滤波器的产生,我们仍采用filter函数。由式(6)知在产生IIR滤波器时,b=1。完成信号采集后,先设置延时时间,接着通过filter函数产生多回声滤波器,并将产生的多回声信号输出,然后通过impz函数产生单回声滤波器的脉冲响应,最后将单回声滤波器的脉冲响应和幅频特性以及单回声信号的时域波形图和频谱图输出。具体实现代码如下:k2=filter(1,[1,zeros(1,fs*t),-0.5],x);d2=impz(1,[1,zeros(1,fs*t),-0.5],fs*t*30);figure(7);stem(d2,'.');title('多回声滤波器脉冲响应');xlabel('周期');grid;figure(8);[H2,W2]=freqz(1,[1,zeros(1,fs*t),-0.5]);plot(W2/pi,20*log10(abs(H2)));title('多回声滤波器幅频特性');xlabel('数字频率/π');ylabel('幅度/dB');grid;figure(9);plot(k2);title('多回声信号时域图');5xlabel('时间');ylabel('幅值');grid;y2=fft(k2);figure(10);plot(f,fftshift(abs(y2)));title('多回声语音信号频谱图');xlabel('频率');ylabel('幅度');grid;3.4回声信号的文件输出在MATLABR2014a中,audiowrite函数可以将数据通过所输入的采样频率写入成文件,其格式为audiowrite(filename,y,Fs)。在完成单回声信号和多回声信号的产生后,我们使用audiowrite函数将生成的信号输出成文件。具体实现代码如下:audiowrite('单回声.wav',k1,fs);audiowrite('多回声.wav',k2,fs);3.5原始信号的分析首先录制一段wav格式的录音,该录音采样频率fs为44100Hz。接下来,通过代码读取文件并输出原始信号时域波形图和频谱图。图3所示为原始信号时域波形图,图4为原始信号频谱图。由时域波形图可以看出原始信号是一个时间较短且高幅值区域较少的信号,采用这种信号是因为在设计过程中,我们发现太长且全程幅值