基于matlab的语音信号滤波去噪 下载本文

内容发布更新时间 : 2024/4/27 2:09:41星期一 下面是文章的全部内容请认真阅读。

宿州学院毕业设计 绪论

绪论

语音信号的采集与分析技术的应用和发展与语音学、声音测量学、电子测量技术以及数字信号处理等学科紧密联系,同时也是一门涉及面很广的交叉学科。语音是人类获取信息的重要来源,是利用信息的重要手段。由于实验条件或各种其他主、客观条件的限制,在信号的传输过程中,语音处理系统都不可避免地要会受到各种噪声的干扰。噪声不仅降低了语音的可懂度,破坏了语音质量,而且还将会导致系统性能的急剧恶化,严重时会使整个系统无法正常工作。Matlab是由美国Mathworks公司发布的一款软件,该软件主要面对的是科学计算、可视化以及交互式程序设计的高科技计算环境。它具有数值分析、矩阵计算、非线性动态系统的建模和仿真以及科学数据可视化等功能。它被集成在一个易于使用的视窗环境下,为工程设计、科学研究以及其它一些必须进行有效数值计算的众多科学领域提供了一种全面有效的解决方案。它在很大程度上摆脱了传统的其它编程语言的限制,如C语言、Fortran语言的编辑模式,代表了当今国际科学计算软件的先进水平。其强大的数据处理能力可以极大程度上削弱噪声影响,其还原出的真实的语音信号相符度一般都在90%以上。

数字滤波器和快速傅立叶变换(FFT)等是语音信号数字处理的理论和技术基础,是20世纪60年代形成的一系列数字信号处理的理论和算法。随着信息科学技术的快速发展,语音信号处理技术也相应取得了重大的进展:进入70年代之后,出现了很多新兴技术,其中语音信号的信息压缩和特征提取的线性预测技术(LPC)作用日益突出,逐渐在数字信号处理领域占据统治地位,并广泛应用于语音信号的分析、合成及其他各个应用领域。进入80年代后,一种新的技术:基于聚类分析的高效数据压缩技术—矢量量化(VQ),被应用到语音信号处理领域之中;而随着隐马尔可夫模型(HMM)描述语音信号过程的产生,80年代语音信号处理技术也随之发生了重大的发展。目前,HMM已构成了现代语音识别研究的重要基石。进入21世纪之后,人工神经网络,也即是人们所称的ANN的研究,取得了快速发展,语音信号处理的各项研究的发展是促进其进步的重要源泉之一,他的各项成果也体现在语音信号处理的各项技术之中。

本论文主要介绍的是语音信号的简单处理。由于语音信号的处理有很多种类,本论文仅针对滤波处理去噪这一范围,运用数字信号处理所学基本原理,以实现语音信号的处理,在Matlab7.0环境下综合运用信号提取,幅频变换以及傅里叶变换、滤波等技术来进行语音信号滤波去噪。我所做的工作就是运用Matlab软件,在其上编写几个处理语音信号的程序,能对语音信号进行采集,并对其进行各种处理,达到简单的语音信号处理的目的。

·

1

宿州学院毕业设计 绪论

硬件环境:

(1)处理器:Inter Pentium B950 (2)内存:2G (3)硬盘空间:460G (4)显卡:NVIDIA GeForce GT520 开发环境:

(1)操作系统:Windows 7(64位旗舰版) (2)开发环境:Matlab 7.0 基本方法步骤: (1)语音信号的录制。

(2)在Matlab平台上读入语音信号。 (3)绘制频谱图并回放原始语音信号。

(4)利用Matlab编程加入一段正弦波噪音,设计滤波器去噪。

(5)利用Matlab编程加入一段随机噪音信号,设计FIR和IIR滤波器去噪,并分别绘制频谱图、回放语音信号。

(6)通过仿真后的图像以及对语音信号的回放,对比两种去噪方式的优缺点。 具体流程图如下所示: 语音信号录入 语音信号变换 语音信号采集 信号加噪 语音信号滤波 效果显示对比 图1 论文设计流程

·

2

宿州学院毕业设计 语音信号处理的基本知识

1 语音信号处理的基本知识

1.1语音的录入和打开

在Matlab中,[y,fs,bits]=wavread('Blip',[N1 N2]),用于读取语音信号,采样值放在向量y中。fs表示采样频率(Hz),bits表示采样位数。[N1 N2]表示读取从N1点到N2点的值。若只有一个N的点,则表示读取前N点的采样值。

sound(x,fs,bits)该函数的作用是用于对声音进行回放。向量x是一个复杂的“函数表达式”,代表了一个信号,可以像处理一个信号表达式一样处理这个声音信号。

1.2采样位数和采样频率

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

对于音频接口来说,采样位数和采样率是最为重要的两个指标,也是选择音频接口的两个重要标准。单从理论上来说,无论采样频率如何,采样的位数决定了音频数据最大的力度范围。每增加一个采样位数,则相当于力度范围增加了6dB。采样位数越多,则捕捉到的信号就会越精确。对于采样率来说,你可以想象它类似于一个照相机,40kHz则意味着当音频流进入计算机时,计算机每秒会对其拍照达40000次。显然采样率越高,计算机摄取的图片会越多,对于原始音频的还原也将会更加精确。

1.3时域信号FFT分析

FFT,即快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换DFT的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进而后获得的。在Matlab的信号处理工具箱中,函数FFT和IFFT用于快速傅立叶变换及其逆变换。函数FFT用于序列快速傅立叶变换,其调用格式为: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进行处理。

·

3

宿州学院毕业设计 语音信号处理的基本知识

1.4数字滤波器设计原理

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

可以将数字滤波器理解为一个算法或者程序,将代表输入信号的数字时间序列,转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。

数字滤波器有多种,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,一种是无限长冲激响应(IIR)滤波器,另外一种则是有限长冲激响应(FIR)滤波器。从性能上说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用于较低的阶数,以获得高的选择性,所用的存贮单元少,所以经济且效率较高。但是这个高效率是以牺牲相位的非线性为代价的。若选择性越好,则相位非线性失真会越严重。相反,FIR滤波器却可以得到严格的线性相位输出,但由于FIR滤波器传输函数的极点固定在原点,因而只能用较高的阶数以达到高的选择性;对于同样的滤波器设计指标,FIR滤波器所要求的阶数可以比IIR滤波器高5~10倍,但是成本较高,信号延时也较大;所以如若按相同的选择性和相同的线性要求来说的话,则IIR滤波器就必须加全通网络以进行相位较正,同时要增加滤波器的节数和复杂性。

整体来看,IIR与FIR各有优缺点。IIR滤波器能达到同样效果,且阶数少,延迟也较低,但是会有稳定性和非线性相位问题;FIR滤波器虽然没有稳定性问题,且线性相位,但阶数多,延迟大。

·

4

宿州学院毕业设计 Matlab相关函数

2 Matlab相关函数

2.1 wavread函数

选取一段声音信号,而后利用该函数,在Matlab软件平台下对语音信号进行采样处理,同时记住采样频率与采样点数。通过使用wavread函数,加深理解采样频率、采样位数等概念。

wavread函数调用格式一般有以下几种:

y=wavread(file),该式读取file所规定的wav文件,返回的采样值放在向量y中。

[y,fs,nbits]=wavread(file),所得采样值放在向量y中,fs表示采样频率(Hz),nbits表示采样位数。

y=wavread(file,N),读取前N点的采样值并放在向量y中。

y=wavread(file,[1N,2N]),读入从1N到2N点的采样值并放在向量y中。

2.2其他相关函数

(1)函数fftfilt

函数fftfilt的调用格式为:

y=fftfilt(b,x)。

该格式是利用基于FFT的重叠相加法对数据进行滤波处理,但这种频域滤波技术只对FIR滤波器有效。该函数是通过向量b描述的滤波器对x数据进行滤波。(2)函数sound

函数sound可以对声音进行回放。其调用格式为:

sound(x,fs,bits)。

(3)函数filter

函数filter的调用格式为:

y=filter(b,a,x)。

该格式采用的是用数字滤波器对数据进行滤波,既可以用于IIR滤波器,同样,也可以用于FIR滤波器。其中,向量b和a分别表示的是系统函数的分子、分母多项式的系数。若a=1,则表示的是FIR滤波器,否则就是IIR滤波器。该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。 (4)函数randn

Randn函数产生的是[0,1]上的均匀分布的随机序列,randn产生均值为0,方差为1的高斯随机序列,也就是白噪声序列。

也就是说,可以直接使用下面两个函数对原始信号添加噪声。调用格式为:y=x+rand(length(x),1),或者y=x+randn(length(x),1)。 (5)函数FFT

·

5