您的当前位置:首页正文

MATLAB课程设计

2022-12-13 来源:星星旅游
河南理工大学物理与电子信息学院

MATLAB基础与应用课程论文

2016— 2017学年第 二 学期

学生姓名 胥守振

学 号 311508000123

专业班级 电科1501

2017年 6月 28日

教师评语:

评定成绩:

目 录

目 录 .................................................................................................................................................................................................................. 1 摘 要 ................................................................................................................................................................................................................ 1 3.1语音信号的录入与提取 ........................................................................................................................................................................ 5

摘 要

语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。

Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。信号处理是Matlab重要应用的领域之一。

本实验设计用电脑自带的录音机采集了一段语音,对其进行了时域分析,频谱分析,分析语音信号的特性。并应用matlab平台对语音信号加入了不同的噪声,进一步用窗函数法,椭圆函数法分别设计了一个带阻滤波器和一个高通滤波器,然后对加噪的语音信号进行滤波处理。最后对比滤波前后的语音信号的时域和频域特性,回放加噪语音信号和去噪语音信号。对比研究处理前和处理后的声音的不同。

【关键词】 语音信号;频域特性; 时域特性; 滤波器

第 1 页

1.设计目的和要求

1.1 设计目的及要求

本次课程设计要求利用MATLAB对语音信号进行处理和分析,要求学生采集语音信号后,在MATLAB软件平台进行频谱分析,并对速配采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪音,恢复信号。

1.2 课题的研究意义

语言是我们人类所特有的功能,它是传承和记载人类几千年文明史,没有语言就没有我们今天人类的文明。语音是语言最基本的表现形式,是相互传递信息最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。

语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展;它是研究用数字信号处理技术对语音信号进行处理的一门新兴学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,因此我们进行语言信号处理具有时代的意义。

2.设计原理

2.1 采样频率

采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。通俗的讲采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、

第 2 页

音调,衡量声卡、声音文件的质量标准。采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。采样频率与声音频率之间有一定的关系,根据奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。

2.2 采样位数

采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。

采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。

2.3 采样定理

在进行模拟/数字信号的转换过程中,当采样频率最大值大于信号中最高频率fmax的2.56倍时,即:fs.max>=2.56fmax,则采样之后的数字信号完整地保留了原始信号中的信息.

2.4 时域信号的FFT分析

FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。函数FFT

第 3 页

用于序列快速傅立叶变换,其调用格式为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进行处理。

2.5 数字滤波器的设计原理和方法

数字滤波是数字信号分析中最重要的组成部分之一,与模拟滤波相比,它具有精度和稳定性高、系统函数容易改变、灵活性强、便于大规模集成和可实现多维滤波等优点。在信号的过滤、检测和参数的估计等方面,经典数字滤波器是使用最广泛的一种线性系统。

数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对信号进行变换。

2.6 各种滤波器的性能比较

IIR滤波器与FIR滤波器的性能比较

FIR:Finite Impulse response,有限冲击响应

IIR:Infinite Impulse response,无限冲击响应

从性能上来说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用较低的阶数

第 4 页

获得高的选择性,所用的存贮单元少,所以经济而效率高。但是这个高效率是以相位的非线性为代价的。选择性越好,则相位非线性越严重。相反,FIR滤波器却可以得到严格的线性相位,然而由于FIR滤波器传输函数的极点固定在原点,所以只能用较高的阶数达到高的选择性;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高5~10倍,结果,成本较高,信号延时也较大;如果按相同的选择性和相同的线性要求来说,则IIR滤波器就必须加全通网络进行相位较正,同样要大增加滤波器的节数和复杂性。

整体来看,IIR滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大

3.设计内容

3.1语音信号的录入与提取

用电脑所带的录音工具录制一段录音,时间约为1s,并将声音保存成扩展名为(.wav)格式,并且应注意,录取的声音应为单声道的,否则图形会出不来。

对采集的信号进行FFT分析,并且画出源信号的时域波形图形和频域图形。

fs=16000;

x0=wavread('E:\\xinhao1');

t=(0:length(x0)-1)/16000;

f=fs*(0:10239)/20480;

第 5 页

y1=fft(x0,20480);

%画语音信号时域图

figure(1)

subplot(1,1,1);

plot(t,x0)

grid on;

axis tight;

title('原始语音信号时域');

xlabel('time(s)');

ylabel('幅度');

%画语音信号频域图

figure(2)

subplot(1,1,1);

plot(f,abs(y1(1:10240)));

第 6 页

grid on;

axis([0,8000,0,20]);

title('原始语音信号频谱');

xlabel('Hz');

ylabel('幅度');

程序运行结果如下:

第 7 页

3.2 加噪处理,对信号加高频噪音

在MATLAB软件平台下,给原始的语音信号叠加上噪声,绘出加噪声后的语音信号时域和频谱图,在视觉上与原始语音信号图形对比,也可通过Windows播放软件从听觉上进行对比,分析并体会含噪语音信号频谱和时域波形的改变。程序代码如下:

%加噪后语音信号变化

d=[0.15*cos(2*pi*4000*t)]'; %加噪

x1=x0+d;

y2=fft(x1,20480);

%加噪后语音信号的时域图

figure(3)

第 8 页

subplot(1,1,1);

plot(t,x0)

grid on;

axis tight;

title('加噪后的信号时域');

xlabel('time(s)');

ylabel('幅度');

%加噪后语音信号的频域图

figure(4)

subplot(1,1,1);

plot(f,abs(y2(1:10240)));

grid on;

axis([0,8000,0,20]);

title('加噪语音信号频谱');

第 9 页

xlabel('Hz');

ylabel('幅度');

程序运行结果如下:

第 10 页

加噪声后,听起来明显感觉嘈杂。通过图形比较也可以看出,时域波形图的变化不大,但频谱图的变化明显,显示出加了干扰。

3.3 设计窗函数带阻滤波器

要对加入噪声的语音信号进行滤波,需设计合适的滤波器。由图形可看出,用窗函数法设计带阻滤波器可对对加噪语音信号进行滤波。设计带阻滤波器,并绘制滤波器的图形。

程序设计如下:

%设计带阻滤波器

wlp=2850*pi*2/fs;wls=3400*pi*2/fs;

wup=4900*pi*2/fs;wus=4600*pi*2/fs;

第 11 页

B=(wus-wls);

M=ceil(12*pi/B)-1;

wp=[(wls+wlp)/2/pi,(wus+wup)/2/pi];

[bz,az]=fir1(M,wp,'stop',blackman(M+2));

hn=fir1(M,wp,'stop',blackman(M+2));

%带阻滤波器窗函数图像

figure(5)

subplot(1,1,1);

freqz(hn);

grid on;

axis tight;

title('窗函数图像');

xlabel('Hz');

ylabel('幅度');

第 12 页

程序运行结果如下:

3.4 对信号进行滤波处理

对加入噪声的语音信号进行滤波。用加窗函数的方法设计了巴带阻滤波器对加噪语音信号进行滤波,并绘制了加噪语音信号滤波后的时域图和频谱图。

程序设计如下:

%画滤波后的图

figure(6)

freqz(bz,az);

grid on; axis tight;

y3=filter(bz,az,x1);

第 13 页

X=fft(y3,20480);

%滤波后时域图

subplot(2,1,1);

plot(y3);

grid on;

ylim([-0.03 ,0.03]);

title('滤波后信号时域波形');

xlabel('time(s)');

ylabel('幅度');

%滤波后频谱

subplot(2,1,2);

plot(abs(X(1:10240)));

title('滤波后信号频谱');

grid on;

第 14 页

ylim([0,20]);

xlabel('Hz');

ylabel('幅度');

程序运行结果如下;

经过滤波后得出的语音信号相比较,低通滤波后,声音稍微有些发闷,但是很接近原来的声音。

3.5对信号加低频噪音

程序如下:

第 15 页

%加低频噪音

d1=[0.5*cos(2*pi*200*t)]'; %加噪

x4=x0+d1;

y4=fft(x4,20480);

%加噪后语音信号的时域图

figure(7)

subplot(1,1,1);

plot(t,x4)

grid on;

axis tight;

title('加噪后的信号时域');

xlabel('time(s)');

ylabel('幅度');

%加噪后语音信号的频域图

第 16 页

figure(8)

subplot(1,1,1);

plot(f,abs(y4(1:10240)));

grid on;

axis([0,8000,0,20]);

title('加噪语音信号频谱');

xlabel('Hz');

ylabel('幅度');

运行结果:

第 17 页

3.6对加高频噪音的程序进行滤波处理

用椭圆滤波器对信号的高频噪音进行滤波,程序如下:

%加高通滤波

wp1=100*pi*2/fs;

ws1=60*pi*2/fs;

Rp1=1;

As1=100;

[N1,wso]=ellipord(wp1,ws1,Rp1,As1);

[B1,A1]=ellip(N1,Rp1,As1,wso,'high');

figure(9)

freqz(B1,A1);

grid on;

ylim([0,1]);

y4=filter(B1,A1,x4);

第 18 页

X1=fft(y4,20480);

%滤波后时域图

subplot(2,1,1);

plot(y4);

grid on;

%axis tight;

ylim([-0.03,0.03]);

title('滤波后信号时域波形');

xlabel('time(s)');

ylabel('幅度');

%滤波后频谱

subplot(2,1,2);

plot(abs(X1(1:10240)));

title('滤波后信号频谱');

第 19 页

grid on;

%ylim([0,20]);

axis tight;

xlabel('Hz');

ylabel('幅度');

程序运行结果:

椭圆高通滤波器图像

%滤波器图像

第 20 页

figure(10)

hn1=ellip(N1,Rp1,As1,wso,'high');

subplot(1,1,1);

freqz(hn1);

grid on;

xlim([0,0.2]);

%axis tight;

title('椭圆函数图像');

xlabel('Hz');

ylabel('幅度');

运行结果:

第 21 页

参考文献

[1] 高西全、丁玉美编著,数字信号处理。西安:西安电子科技大学出版社,2008.

[2]丁玉美、高西全编著,数字信号处理学习指导。西安:西安电子科技大学出版社,2001.

[3]郑君里等编,信号与系统。北京:高等教育出版社,2000.

[4]刘树棠译,数字信号处理——使用MATLAB。西安:西安交通大学出版社,2002.

[5]导向科技编著,MATLAB程序设计与实例应用。北京:中国铁道出版社,2001.

[6]罗军辉等编著,MATLAB7.0在数字信号处理中的应用。北京:机械工程出版社,2005.

第 22 页

[7]陈怀琛等编著,MATLAB及在电子信息课中的应用。北京:电子工业出版社,2002.

[8]胡广书编组,数字信号处理——理论、算法与实现。北京:清华大学出版社,2002.

[9]梁虹等编,信号与线性系统分析——机遇MATLAB的方法与实现。北京:高等教育出版社,2006.

[10]刘卫国主编,MATLAB程序设计与应用(第二版)。北京:高等教育出版社,2006.

第 23 页

因篇幅问题不能全部显示,请点此查看更多更全内容