文档详情

matlab含噪语音信号的分析.docx

发布:2025-05-28约2.42千字共5页下载文档
文本预览下载声明

大连理工大学实验报告

学院〔系〕:电子信息与电气工程学部专业:电子信息工程班级:

姓名:学号:组:

实验时间:实验室:实验台:

指导教师签字:成绩:

实验四含噪语音信号的分析

一、实验目的

理解并掌握系统的理念

掌握滤波的概念和根本应用方法

提高分析和解决实际问题的能力

二、实验系统的构成

三、实验内容

实验采用自主开发的《信号处理实验平台》,根据给定的系统表达式编制信号频谱分析函数和付立叶反变换函数,在计算机上实现对信号的快速处理。

实验中可选择语音信号库中的任一信号作为系统的输入信号,对其进行频谱分析,观察其频谱图。编程模拟实现高通滤波器、低通滤波器和带通滤波器的功能,对语音信号进行处理,并绘出频响曲线,对处理后的语音信号进行付立叶反变换;把音箱分别接到系统的输入和输出端口,用听觉感受一下经不同的系统处理后的声音变化效果,对产生的失真进行分析和讨论。

四、实验代码及运行结果

界面及局部代码说明:

采用gui制作了实验界面,同时添加了背景图片,视觉鲜果更好。

噪声添加:有两种噪声可以添加:

1、高斯白噪声,代码如下:

globalx;

globalFs;

globaltl;

axes(handles.axes1);

x=awgn(x,15);

plot(tl,x);

title(参加噪声后语音时域波形);

xlabel(时间/s);

gridon;

N=length(x);

df=Fs/N;

w=[0:df:df*(N-1)]-Fs/2;%频率尺度

X=fft(x);

X=fftshift(X);

axes(handles.axes2);

plot(w,abs(X)/max(abs(X)));

axis([-10000,10000,0,1]);

title(参加噪声后语音频谱);

xlabel(频率/Hz);

gridon;

2、某一频率的单音,代码如下:

globalx;

globalFs;

globaltl;

axes(handles.axes1);

size(x);

t=0:1/Fs:(length(x)-1)/Fs;%将所加噪声信号的点数调整到与原始信号相同

Au=0.07;

fn=get(handles.noise_edit2,string);%噪声频率

fn=str2double(fn);

noise=Au*cos(2*pi*fn*t);%噪声为频率

x=x+noise;

plot(tl,x);

title(参加噪声后语音时域波形);

xlabel(时间/s);

gridon;

N=length(x);

df=Fs/N;

w=[0:df:df*(N-1)]-Fs/2;%频率尺度

X=fft(x);

X=fftshift(X);

axes(handles.axes2);

plot(w,abs(X)/max(abs(X)));

axis([-10000,10000,0,1]);

title(参加噪声后语音频谱);

xlabel(频率/Hz);

gridon;

滤涉及时域和频域波形显示:滤波采用巴特沃兹低通滤波器,滤波器截止频率可以通过文本框输入。

代码如下:

globalx;

globalFs;

globaltl;

fp=get(handles.fr_edit1,string);

fp=str2double(fp);

fs=fp+200;

Wp=2*fp/Fs;

Ws=2*fs/Fs;

if(Wp=1)

Wp=0.99;

end

if(Ws=1)

Ws=0.99;

end

[n,Wn]=buttord(Wp,Ws,2,15);

[b,a]=butter(n,Wn,low);

axes(handles.axes3);

%figure

%freqz(b,a);

[h,w]=freqz(b,a);

plot(w/pi*Fs/2,abs(h));

title(滤除噪声后语音时域波形);

xlabel(时间/s);

x=2*filter(b,a,x);%调用函数滤波

axes(handles.axes5);

plot(tl,x);

N=length(x);

df=Fs/N;

w=[0:df:df*(N-1)]-Fs/2;%

显示全部
相似文档