dsp 课程设计.docx

上传人:b****1 文档编号:14225854 上传时间:2023-06-21 格式:DOCX 页数:33 大小:280.65KB
下载 相关 举报
dsp 课程设计.docx_第1页
第1页 / 共33页
dsp 课程设计.docx_第2页
第2页 / 共33页
dsp 课程设计.docx_第3页
第3页 / 共33页
dsp 课程设计.docx_第4页
第4页 / 共33页
dsp 课程设计.docx_第5页
第5页 / 共33页
dsp 课程设计.docx_第6页
第6页 / 共33页
dsp 课程设计.docx_第7页
第7页 / 共33页
dsp 课程设计.docx_第8页
第8页 / 共33页
dsp 课程设计.docx_第9页
第9页 / 共33页
dsp 课程设计.docx_第10页
第10页 / 共33页
dsp 课程设计.docx_第11页
第11页 / 共33页
dsp 课程设计.docx_第12页
第12页 / 共33页
dsp 课程设计.docx_第13页
第13页 / 共33页
dsp 课程设计.docx_第14页
第14页 / 共33页
dsp 课程设计.docx_第15页
第15页 / 共33页
dsp 课程设计.docx_第16页
第16页 / 共33页
dsp 课程设计.docx_第17页
第17页 / 共33页
dsp 课程设计.docx_第18页
第18页 / 共33页
dsp 课程设计.docx_第19页
第19页 / 共33页
dsp 课程设计.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

dsp 课程设计.docx

《dsp 课程设计.docx》由会员分享,可在线阅读,更多相关《dsp 课程设计.docx(33页珍藏版)》请在冰点文库上搜索。

dsp 课程设计.docx

dsp课程设计

Dsp课程设计

基于Matlab的声音的延迟与混响

摘要

数字信号处理技术自诞生以来,有了快速的发展,主要是研究用数字或符号序列表示和处理信号,被广泛应用于各个领域。

本次设计是用MATLAB语言对语音信号进行采样分析,并设计数字滤波器对信号进行滤波,比较滤波前后信号特性的变化。

用MATLAB提供的GUI界面开发环境设计用户图形界面使布局编程简化。

关键词

Matlab语音信号处理

正文

1.背景资料:

数字信号处理是随着计算机技术的发展而迅速发展起来的一门新兴而古老的学科,它在新的领域如生物医学工程、声学、雷达、地震不、语音通信、数据通信、核科学等学科发挥着重要的作用,而它所采用的各种方法及众多应用已有悠久的历史;同时也是一门具有很强的理论性与实践性,且理论和技术发展都十分迅速的前沿性学科。

随着数字化时代的来临,科学技术的进步而生产发展需求的与日俱增,促进了数字信号处理学科的发展,产生了各种巧妙的信号处理算法;特别是计算机技术的飞速发展,为数字信号处理增添了巨大的生命力。

  数字信号处理主要是研究用数字或符号序列表示和处理信号。

处理的目的可以是削弱信号中的多余内容,滤除混杂的噪声和干扰,或者是将信号变换为容易分析和识别的形式,便于估计和选择它的特征参数。

例如通过分析和运算,可以估计脑电图或心电图中的某种特征参数,帮助医生查找病因和分析病情,确定合理的治疗方案;又如,信号在传输时,要受到各种干扰,包括失真、衰落和混入的背景噪声,信号处理要排除这些干扰。

声音信号是一维连续信号,而计算机只能处理离散信号。

为了从离散信号还原连续信号,根据采样定理,可以确定采样频率的最小值。

wav文件是一种数字声音文件格式,本课程设计基于Matlab分析了wav声音文件频谱与声音的关系。

通过采集个人的一段声音进行频谱分析等处理,然后设计数字滤波器处理这个原始声音的wav文件,并比较滤波以后输出声音信号与原声音信号的异同。

2设计要求

(1)利用Windows下的录音机或其他软件,录制一段语音信号,时间控制在1min左右。

(2)将音频文件加载到matlab中,用合适的方式对信号经行处理

(3)回答以下四个问题:

为什么要选择这段语音信号?

你怎么处理这段语音信号?

为什么你选择用这种方式进行处理?

处理结果是什么?

3设计的总体方案与原理

3.1基本思路

根据设计要求,我们商定的处理方式是基于matlab来进行声音的延迟与混响

3.2设计流程

录制一段语音信号,时长为15s,并对录制的信号进行采样

语音信号的频谱分析,画出采样后语音信号的时域波形和频谱图

将信号加入延时和混响,再分析其频谱,并与原始信号频谱进行比较

设计几种特殊类型的滤波器:

单回声滤波器,多重回声滤波器,无限个回声滤波器,全通结构的混响器,并画出滤波器的频域响应

用自己设计的滤波器对采集的语音信号进行滤波

分析得到信号的频谱,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化

回放语音信号

3.3设计的详细原理

3.3.1信号采样

(1)采样频率

采样频率是指计算机每秒钟采集多少个声音样本,采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。

只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。

(2)采样位数

即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。

声卡的位客观地反映了数字声音信号对输入声音信号描述的准确程度。

声卡的主要的作用之一是对声音信息进行录制与回放,在这个过程中采样的位数和采样的频率决定了声音采集的质量。

3.3.2混响与延时

(1)混响效果主要是用于增加音源的融合感。

自然音源的延时声阵列非常密集、复杂,所以模拟混响效果的程序也复杂多变。

常见参数有以下几种:

混响时间:

能逼真的模拟自然混响的数码混响器上都有一套复杂的程序,其上虽然有很多技术参数可调,然而对这些技术参数的调整都不会比原有的效果更为自然,尤其是混响时间。

高频滚降:

此项参数用于模拟自然混响当中,空气对高频的吸收效应,以产生较为自然的混响效果。

一般高频混降的可调范围为0.1~1.0。

此值较高时,混响效果也较接近自然混响;此值较低时,混响效果则较清澈。

扩散度:

此项参数可调整混响声阵密度的增长速度,其可调范围为0~10,其值较高时,混响效果比较丰厚、温暖;其值较低时,混响效果则较空旷、冷僻。

预延时:

自然混响声阵的建立都会延迟一段时间,预延时即为模拟次效应而设置。

声阵密度:

此项参数可调整声阵的密度,其值较高时,混响效果较为温暖,但有明显的声染色;其值较低时,混响效果较深邃,切声染色也较弱。

频率调制:

这是一项技术性的参数,因为电子混响的声阵密度比自然混响稀疏,为了使混响的声音比较平滑、连贯,需要对混响声阵列的延时时间进行调制。

此项技术可以有效的消除延时声阵列的段裂声,可以增加混响声的柔和感。

调治深度:

指上述调频电路的调治深度。

(2)延时就是将音源延迟一段时间后,再欲播放的效果处理。

依其延迟时间的不同,可分别产生合唱、镶边、回音等效果。

当延迟时间在3~35ms之间时人耳感觉不到滞后音的存在,并且他与原音源叠加后,会因其相位干涉而产生"梳状滤波"效应,这就是镶边效果。

如果延迟时间在50ms以上时,其延迟音就清晰可辨,此时的处理效果才是回音。

回音处理一般都是用于产生简单的混响效果。

延时、合唱、镶边、回音等效果的可调参数都差不多,具体有以下几项:

*延时时间(Dly),即主延时电路的延时时间调整。

*反馈增益(FBGain),即延时反馈的增益控制。

*反馈高频比(HiRatio),即反馈回路上的高频衰减控制。

*调制频率(Freq),指主延时的调频周期。

*调制深度(Depth),指上述调频电路的调制深度。

*高频增益(HF),指高频均衡控制。

*预延时(IniDly),指主延时电路预延时时间调整。

*均衡频率(EQF),这里的频率均衡用于音色调整,此为均衡的中点频率选择。

由于延时产生的效果都比较复杂多变,如果不是效果处理专家,建议使用设备提供的预置参数,因为这些预置参数给出的处理效果一般都比较好。

3.3.3滤波器设计

本次设计用IIR滤波器对信号进行滤波,函数名为filter

函数filter的调用格式为         y=filter(b,a,x)

该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。

其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a=1,此时表示FIR滤波器,否则就是IIR滤波器。

该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。

(1)单回声滤波器

回音可以由简单的延时单元产生。

直达声和在R抽样周期后出现的一种单个回音,可以用FIR滤波器产生,微分方程为:

y[n]=x[n]+αx[n-R]|α|<1

传输函数为:

H(z)=1+αz-R

传递函数的幅频响应形状象梳子,这种滤波器又叫梳状滤波器。

(2)多重回声滤波器

为了产生以间隔R个抽样周期分开的具有指数衰减振幅的多重回声,可用一个以下形式传输函数的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点之前的输入与输出计算而得。

由于这个IIR滤波器的频率响应为水平直线,所以被称为全通滤波器。

3.3.4GUI界面

图形用户界面GUI(GraphicsUserInterface)是由各种图形对象,如图形窗口、图轴、菜单、按钮、文本框等构建的用户界面,是人机交流信息的工具和方法。

GUI设计即可以基本的MATLAB程序设计为主,也可以鼠标为主利用GUIDE工具进行设计。

GUIDE(GraphicsUserInterfaceDesignEnviron2ment)是一个专用于GUI程序设计的快速开发环境,使用者通过鼠标就能迅速地产生各种GUI控件,并随心所欲地改变它们的外形、大小及颜色等,从而帮助用户方便地设计出各种符合要求的图形

用户界面。

调用GUIDE的方法有2种,在MATLAB命令窗口中输入guide命令,或在MATLAB主菜单中点击File→New→GUI即可打开一个可编辑的新窗口。

在GUIDE设计环境中,需要用到的工具有属性编辑器、控件布置编辑器、菜单编辑器、对象浏览器、网格标尺设置编辑器以及GUI应用属性设置编辑器等。

GUI设计面板是GUI设计工具应用的平台,面板上部提供了菜单和常用工具按钮,左边提供了多种GUI控件,如按钮、单选按钮、复选框、文本框等。

进行GUI设计时,首先单击GUI面板左边所需的控件,然后在右边的图形界面编辑区中再次单击某一恰当的位置,这时将在该位置上为图形界面添加一相应的控件,接下来,通过属性编辑器和对齐编辑器对各控件设置相关属性和进行界面布置,以完善界面功能。

3.4程序流程

4程序设计步骤

(1)GUI界面的设计

functionvarargout=untitled(varargin)

gui_Singleton=1;

gui_State=struct('gui_Name',mfilename,...

'gui_Singleton',gui_Singleton,...

'gui_OpeningFcn',@untitled_OpeningFcn,...

'gui_OutputFcn',@untitled_OutputFcn,...

'gui_LayoutFcn',[],...

'gui_Callback',[]);

ifnargin&&ischar(varargin{1})

gui_State.gui_Callback=str2func(varargin{1});

end

ifnargout

[varargout{1:

nargout}]=gui_mainfcn(gui_State,varargin{:

});

else

gui_mainfcn(gui_State,varargin{:

});

end

functionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)

handles.output=hObject;

guidata(hObject,handles);

functionvarargout=untitled_OutputFcn(hObject,eventdata,handles)

varargout{1}=handles.output;

(2)原始语音信号时域波形和频谱

functionpushbutton1_Callback(hObject,eventdata,handles)

[y,fs,bits]=wavread('C:

\Users\Administrator\Desktop\音频信号.wav');%读取原始音频信号

y=y(:

1);%只取单信道

sound(y,fs,bits);%播放原始信号

Y=fft(y);%对原始信号取傅里叶变换

subplot(2,2,1:

2);plot(y);title('原始信号时域波形');

subplot(2,2,3);plot(abs(Y));title('原始信号幅频');

subplot(2,2,4);plot(angle(Y));title('原始信号相频');

(3)采样后语音信号的时域波形和频谱

functionpushbutton2_Callback(hObject,eventdata,handles)

[y,fs,bits]=wavread('C:

\Users\Administrator\Desktop\音频信号.wav',[50000500000]);%只取原信号的一部分,即时间区间[50000150000]

y=y(:

1);

Y=fft(y,6001);%抽取6001点

subplot(2,2,1:

2);plot(y);title('采样信号时域波形');

subplot(2,2,3);plot(abs(Y));title('采样信号幅频');

subplot(2,2,4);plot(angle(Y));title('采样信号相频');

sound(y,fs,bits);%回放采样信号

(4)对采样后的信号延时

functionpushbutton3_Callback(hObject,eventdata,handles)

[y,fs,bits]=wavread('C:

\Users\Administrator\Desktop\音频信号.wav',[50000500000]);

y=y(:

1);

z=[zeros(20000,1);y];%延迟3000

Z=fft(z,6001);

subplot(2,2,1:

2);plot(z);title('延时后时域波形');

subplot(2,2,3);plot(abs(Z));title('延时后幅频');

subplot(2,2,4);plot(angle(Z));title('延时后相频');

sound(y,fs,bits);%回放延迟信号

(5)对采样后的信号混响

functionpushbutton4_Callback(hObject,eventdata,handles)

[y,fs,bits]=wavread('C:

\Users\Administrator\Desktop\音频信号.wav',[50000150000]);

y=y(:

1);

z=[zeros(3000,1);y];

y=[y;zeros(3000,1)];%补3000

y1=y+z;%将原始信号与延迟信号相加,产生混响信号

Y1=fft(y1,6001);

subplot(2,2,1:

2);plot(y1);title('混响的时域波形');

subplot(2,2,3);plot(abs(Y1));title('混响的幅频');

subplot(2,2,4);plot(angle(Y1));title('混响的相频');

sound(y,fs,bits);%回放混响信号

(6)单回声滤波器程序设计

functionpushbutton5_Callback(hObject,eventdata,handles)

[y,fs,bits]=wavread('C:

\Users\Administrator\Desktop\音频信号.wav',[50000500000]);

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);%单回声滤波器系统函数分母

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(Y2));title('单回声滤波器相频');

sound(y2,fs,bits);

(7)多重回声滤波器程序设计

functionpushbutton6_Callback(hObject,eventdata,handles)

[y,fs,bits]=wavread('C:

\Users\Administrator\Desktop\音频信号.wav',[50000500000]);

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),-a^N];%多重回声滤波器系统函数分子

Az1=[1,zeros(1,R-1),-a];%多重回声滤波器系统函数分母

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(Y2));title('多重回声滤波器相频');

sound(y2,fs,bits);

(8)无限个回声滤波器程序设计

functionpushbutton7_Callback(hObject,eventdata,handles)

[y,fs,bits]=wavread('C:

\Users\Administrator\Desktop\音频信号.wav',[50000500000]);

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));

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);

(9)全通结构滤波器程序设计

functionpushbutton8_Callback(hObject,eventdata,handles)

[y,fs,bits]=wavread('C:

\Users\Administrator\Desktop\音频信号.wav',[50000500000]);

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('全通滤波器相频响应');

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);

6结果分析

GUI设计界面

对信号采样后,信号时域波形出现了离散化的分布,不像原始图像那样密集分布,频谱图也是同样的变换,幅度和频率都是根据采样区间变化的

从时域图出延时是让原来的波形向右移动3000,频域的幅度发生了变化。

混响:

在时域图看前面几乎没变化,后面的幅度有一定变化。

在频谱图幅度变化很大,中间的上下相互抵消,两边的跳动很大。

时域上形状大致相同,幅度有微小变化。

频谱上也是滤波前后两边跳动变换较大,幅度变化较大。

时域上滤波前的幅度比滤波后的数值大,形状上滤波后是连续的,滤波前是间断的

频谱上变化两边上下跳的动变化,中间变化抵消

时域上波形变得稀疏了,幅度相对变化较大。

频谱上变化两边上下跳的动变化,中间变化抵消

全通结构时域大致一样,滤波前比滤波后幅度有变化6000以后上下跳动抵消

频域上变化的不为明显,幅度发生了变化。

7总结及心得体会

选择这段音频的原因:

这段音频虽然只有15秒,但是它无伴奏音乐,因此处理起来比较得心应手,且声音优美清晰

处理目的:

基于matlab实现语音信号的延迟与混响

处理方式:

处理结果:

利用matlab成功实现了语音信号的延迟与混响

通过此次课程设计,使我更加扎实的掌握了有关语音信号处理方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。

实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。

过而能改,善莫大焉。

在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取,最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。

这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后我们大家的不懈努力下,终于游逆而解。

在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2