有噪声的语音信号分析与处理设计 - 图文 联系客服

发布时间 : 星期五 文章有噪声的语音信号分析与处理设计 - 图文更新完毕开始阅读95c91ebf960590c69ec376e2

武汉工程大学

电气信息学院

课程设计报告

课程名称:基于MATLAB的有噪声的语音信号的处理班 级: 通信01班 学 号: 0804140127 姓 名: 叶莹莹 指导教师: 杨述斌 完成时间:

9

一、课程设计目的

综合运用数字信号处理的理论知识对语音信号进行时频分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。

二、课程设计要求

1 ) 学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。 2 ) 掌握在 Windows 环境下语音信号采集的方法。

3 ) 掌握数字信号处理的基本概念、基本理论和基本方法。 4 ) 掌握 MATLAB 设计 FIR 和IIR 数字滤波器的方法。 5 ) 学会用 MATLAB 对信号进行分析和处理。

三、详细设计过程

1.原理

噪声 语音信号 加噪后信号 数字滤波器 滤波后信号 输出信号分析 DFT频谱分析 滤波器设计 IIR DF(双线性变换法) 滤波器 系数 FIR DF(窗函数法) 窗口选择 加噪语音信号的滤波原理示意图

2,过程:

语音信号的采集

利用计算机上的收音机和WINDOWS 操作系统可以进行数字信号的采集。如果是简单的录音,可用“开始——程序——附件——娱乐——录音机”,然后再打开windows media任选一首歌,进行录音。

这种录音时间默认时间是1分钟,如果想录长一些的话,可在正要录到1分钟时,再点一下录音,如此反复可延长录音时间。

录好以后命名保存入D :\\ MATLAB \\ work 中。可以看到,文件存储器的后缀默认为. wav ,这是WINDOWS 操作系统规定的声音文件存的标准。

10

语音信号的时频分析

利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。下面介绍Wavread 函数几种调用格式。

(1)y=wavread(file)

功能说明:读取file所规定的wav文件,返回采样值放在向量y中。 (2)[y,fs,nbits]=wavread(file)

功能说明:采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。 (3)y=wavread(file,N)

功能说明:读取钱N点的采样值放在向量y中。 (4)y=wavread(file,[N1,N2])

功能说明:读取从N1到N2点的采样值放在向量y中。

接下来,对语音信号speech off.wav进行采样。其程序如下: [y,fs,nbits]=wavered (‘speech off.wav’);

功能说明:把语音信号加载入Matlab 仿真软件平台中

然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:

Xk=fft(xn,N)

参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。语音信号加噪与频谱分析

MATLAB中产生高斯白噪声非常方便,有两个产生高斯白噪声的两个函数 。我们可以直接应用两个函数:一个是WGN,另一个是AWGN。WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。也可直接用randn函数产生高斯分布序列。

在本次课程设计中,我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。Randn函数有两种基本调用格式:Randn(n)和Randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。在这里,我们选用Randn(m,n)函数。 设计FIR和IIR数字滤波器

IIR滤波器和FIR滤波器的设计方法完全不同。IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。其设计步骤是:先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。FIR滤波器比鞥采用间接法,常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。对于线性相位滤波器,经常采用FIR滤波器。

对于数字高通、带通滤波器的设计,通用方法为双线性变换法。可以借助于模拟滤波器的频率转换设计一个所需类型的过渡模拟滤波器,再经过双线性变换将其转换策划那个所需的数字滤波器。具体设计步骤如下:

(1)确定所需类型数字滤波器的技术指标。

(2)将所需类型数字滤波器的边界频率转换成相应的模拟滤波器的边界频率,转换公式为Ω=2/T tan(0.5ω)

(3)将相应类型的模拟滤波器技术指标转换成模拟低通滤波器技术指标。 (4)设计模拟低通滤波器。

(5)通过频率变换将模拟低通转换成相应类型的过渡模拟滤波器。

(6)采用双线性变换法将相应类型的过渡模拟滤波器转换成所需类型的数字滤波器。

我们知道,脉冲响应不变法的主要缺点是会产生频谱混叠现象,使数字滤波器的频响偏离模拟滤波器的频响特性。为了克服之一缺点,可以采用双线性变换法。

利用模拟滤波器设计IIR数字低通滤波器的步骤:

11

(1)确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。

(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。 (3)按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。

(4)用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。

如前所述,IIR滤波器和FIR滤波器的设计方法有很大的区别。下面我们着重介绍用窗函数法设计FIR滤波器的步骤。如下:

(1)根据对阻带衰减及过渡带的指标要求,选择串窗数类型(矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N。先按照阻带衰减选择窗函数类型。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。

(2)构造希望逼近的频率响应函数。 (3)计算h(n).。

(4)加窗得到设计结果。

接下来,我们根据语音信号的特点给出有关滤波器的技术指标: ①低通滤波器的性能指标:

fp=1000Hz,fc=1200Hz,As=50db ,Ap=1dB

②高通滤波器的性能指标:

fp=3500Hz,fc=4000Hz,As=50dB,Ap=1dB;

在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1和ellip设计IIR滤波器,利用Matlab中的函数freqz画出各步步器的频率响应。

hn=fir1(M,wc,window),可以指定窗函数向量window。如果缺省window参数,则fir1默认为哈明窗。其中可选的窗函数有Rectangular Barlrtt Hamming Hann Blackman窗,其相应的都有实现函数。

MATLAB信号处理工具箱函数buttp buttor butter是巴特沃斯滤波器设计函数,其有5种调用格式,本课程设计中用到的是[N,wc]=butter(N,wc,Rp,As,’s’),该格式用于计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc。

MATLAB信号处理工具箱函数cheblap,cheblord和cheeby1是切比雪夫I型滤波器设计函数。我们用到的是cheeby1函数,其调用格式如下:

[B,A]=cheby1(N,Rp,wpo,’ftypr’) [B,A]=cheby1(N,Rp,wpo,’ftypr’,’s’)

函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。

用滤波器对加噪语音信号进行滤波

用自己设计的各滤波器分别对加噪的语音信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。

函数fftfilt用的是重叠相加法实现线性卷积的计算。调用格式为:y=fftfilter(h,x,M)。其中,h是系统单位冲击响应向量;x是输入序列向量;y是系统的输出序列向量;M是有用户选择的输入序列的分段长度,缺省时,默认的输入向量的重长度M=512。

函数filter的调用格式:yn=filter(B,A.xn),它是按照直线型结构实现对xn的滤波。其中xn是输入信号向量,yn输出信号向量。

用自己设计的各滤波器分别对语音信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。

1.双线性变换法:

1) 低通滤波器z11=filter(num11,den11,s); 2) 带通滤波器z12=filter(num12,den12,s);

12