当前位置:文档之家› 基于matlab的语音信号滤波处理

基于matlab的语音信号滤波处理

指导教师:日期:《数字信号处理》课程设计题目:基于matlab的语音信号滤波处理姓名:院系:电子信息工程系专业:电子信息工程专业班级:092学号:指导教师:2012年6 月基于matlab的语音信号滤波处理Xxx(电子信息工程学系指导教师:xxx)摘要:语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。

文章中对录制的语音信号进行采样,分析其时域波形和频谱图。

再此基础加入高斯白噪声和正弦噪声,根据其频谱特性,给定数字滤波器的性能指标,并设计巴特沃斯低通滤波器,对语音信号进行滤波,得到滤波前后的信号幅频响应,对比滤波前后的语音波形和频谱。

关键词:Matlab;语音信号;傅里叶变换;信号处理;滤波器一、引言1.1、MATLAB简介Matlab是一套高性能的数值计算和可视化软件,它集数值分析、矩阵计算、信号处理和图形显示于一体,构成了方便、友好的用户界面环境。

MATLAB提供的信号处理(signal processing)工具箱函数, 为数字滤波器的设计和语音信号的处理提供了强有力的工具。

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

信号处理是Matlab重要应用的领域之一。

1.2、背景及意义语音信号处理是一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段。

通过语言相互传递信息是人类最重要的基本功能之一。

语言是人类特有的功能,它是创造和记载几千年人类文明史的根本手段,没有语言就没有今天的人类文明。

语音是语言的声学表现,是相互传递信息的最重要的手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。

语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域和涉及面很广的交叉学科。

二、设计的目的及内容2.1、设计目的1、了解语音信号的产生、采集,能绘制语音信号的频率响应曲线及频谱图;2、学会用matlab对语音信号进行分析和处理;3、掌握用滤波器去除语音噪声的方法,观察去噪前后的语音信号。

2.2、研究内容本论文主要介绍的是的语音信号的简单处理。

本论文针对以上问题,运用数字信号学基本原理实现语音信号的处理,在matlab7.1环境下综合运用信号提取,幅频变换以及傅里叶变换、滤波等技术来进行语音信号处理。

本文利用windows下的录音机录制一段自己的话音,时间在3s内左右。

然后在matlab软件平台下,对语音信号进行加噪之后,设计滤波器进行滤波处理。

2.3、运行环境运行环境主要介绍了硬件环境和软件环境。

硬件环境:① 处理器:Inter Pentium 166 MX 或更高② 内存:512MB或更高③ 硬盘空间:40GB或更高④ 显卡:SVGA显示适配器软件环境:操作系统:Window 98/ME/2000/XP/72.4、开发环境开发环境主要介绍了本系统采用的操作系统、开发语言。

(1) 操作系统:Windows 7(2) 开发环境:Matlab 7.1三、设计原理3.1、语言的录入及处理在MATLAB软件平台下,利用函数wavread()对语音信号采集,并记录采样频率和采样点数。

将语音信号转换成计算机能够运算的有限长序列。

用FFT(傅里叶变换)对其作谱分析。

对信号添加噪声,然后通过窗函数法设计滤波器滤掉该语音信号的噪声,对比滤波前后的语音波形和频谱。

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

在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.3、数字滤波器设计原理数字滤波器的作用是利用离散时间系统的特性对输入信号波形(或频谱)进行加工处理,或者说利用数字方法按预定的要求对信号进行变换。

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

数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。

从性能上来说,IIR滤波器传输函数的极点可位于单位圆内的任何地方,因此可用较低的阶数获得高的选择性,所用的存贮单元少,所以经济而效率高。

但是这个高效率是以相位的非线性为代价的。

选择性越好,则相位非线性越严重。

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

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

四、设计过程及调试分析4.1、语音信号的采集1、利用windows下的录音机录制一段自己的话音,时间在3s内左右。

然后在matlab软件平台下,利用wavread函数对语音信号进行采样,得到的采样频率和采样点数为:File=‘xinhao.wav’运用函数[y,fs,bits]=wavread(file);可以得到:采样频率:fs = 16000Hz bits =16 Ts=2693ms采样点数 N=Ts*fs N=2.693*16000= 430882、对原始信号进行采集并播放语音信号,其程序如下所示:clc;clear;%%%%%%%%%%%%%%%%原语音信号提取及参数设置%%%%%%%%%%%%%%%%%%%%%%%File='xinhao.wav';%.wav语音文件的文件名fs=16000;%采样频率nbits=16;%采样点数[y0,fs,nbits]=wavread(File);%读入声音y=y0-mean(y0);%消除直流分量N=length(y);%计算其长度sound(y,fs,nbits);%播放语音信号4.2、语音信号的频谱分析首先画出语音信号的时域波形,然后对语音信号进行频谱分析。

在Matlab 中, 可以利用函数fft 对信号进行快速傅里叶变换, 得到信号的频谱特性。

其程序如下:%%%%%%%%%%%%%%%%%%原语音信号的时域波形%%%%%%%%%%%%%%%%%%%%%%%%%figure(1)subplot(1,2,1)plot(y)%画出语音信号的时域波形axis tight;%缩小图形显示范围xlabel('时间t') ylabel('音量y')title('语音信号的时域波形图') grid on;%%%%%%%%%%%%%%%原语音信号的频谱特性%%%% Y=fft(y,N)%对语音信号进行N 点快速傅里叶变换 Hy=fftshift(Y)%平移以零频率为中心 subplot(1,2,2)plot(-fs/2:fs/N:fs/2-fs/N,abs(Hy)) xlabel('频率f') ylabel('幅度|Hy|')title('语音信号的频谱特性') grid on;pause(2) 对其原始信号进行调试,其时域波形和频谱如下图1所示:图1 原始语音信号波形及频谱图4.3、加入噪声信号4.3.1、加正弦噪声并对其进行频谱分析,程序如下: t=-fs/2:fs/N:fs/2-fs/N;noise=1*sin(50*pi*2*t);%产生频率为50Hz 的正弦信号噪声 y1=noise'+y;%与原始信号进行叠加,画图程序(略) %%%%%%%%%%原语音信号加入正弦信号噪声后的频谱图%%%%% Y1=fft(y1,N)%对语音信号进行N 点快速傅里叶变换 Hy2=fftshift(Y1)%平移以零频率为中心 subplot(1,2,2)plot(-fs/2:fs/N:fs/2-fs/N,abs(Hy2))%取半个周期,频谱间隔(分辨率)为fs/N 对其调试,得出加入正弦噪声的时域信号和频谱如下图2所示:x 104-0.5-0.4-0.3-0.2-0.100.10.20.30.40.5时间t音量y语音信号的时域波形图x 104020406080100120140160180频率f幅度|H y |语音信号的频谱特性图2、加入正弦噪声的时域和频谱波形图4.3.2、加高斯白噪声并对其进行频谱分析,程序如下(简略)y2=awgn(y,38)%产生高斯白噪声并将之加入原语音信号中sound(y2,fs,nbits);%%%%%%原语音信号加入高斯白噪声后的频谱图%%%%%Y2=fft(y2,N)%对语音信号进行N点快速傅里叶变换Hy4=fftshift(Y2)subplot(1,2,2)plot(-fs/2:fs/N:fs/2-fs/N,abs(Hy4))%取半个周期,频谱间隔(分辨率)为fs/N对其调试,得出加入高斯白噪的时域信号和频谱如下图3所示:图3 加入高斯白噪的时域信号和频谱波形4.4、设计滤波器4.4.1、设计巴特沃斯低通滤波器性能指标,程序如下所示:%%%%%%%%%%%%%%%%%%%%%设计巴特沃斯滤波器的技术指标/频率响应特性%%%%%%%%%%fs0=0.05*1000;fp0=0.35*1000;%设置技术指标阻带截止频率、通带边界频率rp0=10;rs0=20;%通带最大衰减、阻带最小衰减wp0=2*fp0/fs;ws0=2*fs0/fs;[N1,wc]=buttord(wp0,ws0,rp0,rs0,'s');[B,A]=butter(N1,wc,'low'); %计算数字滤波器(低通滤波器)系统函数[h,w]=freqz(B,A,N); %计算频域响应figure(4)plot(w/pi,20*log10(abs(h)))xlabel('频率w/pi')ylabel('幅度20lg|h|')title('滤波器的频率响应特性')grid on;调试波形图如下图4所示:图4 巴特沃斯低通滤波器频率特性响应波形图4.4.2、用设计的滤波器巴特沃斯滤波器进行滤波,程序如下所示:LBG1=filter(B,A,y2)sound(LBG1,fs,nbits)%正向播放语音(滤波前语音信号的时域和频谱特性的波形略)以下程序为滤波后的时域波形图和频谱特性:subplot(2,2,3)plot(LBG1)xlabel('时间t')ylabel('音量LBG1')title('滤波后语音信号的时域波形图') grid on;调试波形如下图5所示:subplot(2,2,4)plot(-fs/2:fs/N:fs/2-fs/N,abs(LBG1)) xlabel('频率f')ylabel('幅度|LBG1|')title('滤波后语音信号的频谱特性') grid on;pause(4)图5 滤波前后的时域和频谱特性波形五、结果分析Matlab是一套高性能的数值计算和可视化软件。

相关主题