1、语音信号课设1.课程设计目的为了巩固所学的数字信号处理理论知识,对信号的采集、处理、传输、显示和存储等系统的掌握和理解,综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。2.课程设计要求(1)学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。(2)掌握在 Windows 环境下语音信号采集的方法。(3)掌握数字信号处理的基本概念、基本理论和基本方法。(4)掌握 MATLAB 设计 FIR 和IIR 数字滤波器的方法。(5)学会用 MATLAB 对信号进行分析和处理
2、。3.课程设计内容(1)选择一个语音信号作为分析对象,或录制一段语音信号;(2)对语音信号进行采样,画出采样后语音信号的时域波形和频谱图;(3)利用MATLAB中的随机函数产生噪声加入到语音信号中,使语音信号被污染,然后进行频谱分析;(4)设计FIR和IIR数字滤波器,并对被噪声污染的语音信号进行滤波,画出滤波前后信号的时域波形和频谱,并对滤波前后的信号进行比较,分析信号的变化;(5)回放语音信号。4.课程设计实现4.1整体设计思路Matlab 语言是一种数据分析和处理功能十分强大的计算机应用软件 ,它可以将声音文件变换为离散的数据文件 , 然后利用其强大的矩阵运算能力处理数据 ,如数字滤波
3、、傅里叶变换 、时域和频域分析 、声音回放以及各种图的呈现等 , 信号处理是 Matlab 重要应用的领域之一 。本文是用 Matlab对含噪的的语音信号同时在时域和频域进行滤波处理和分析。整个设计思路的设计原理示意图如图 1 所示:4.2 整体实现过程4.2.1 语音信号的采集我们可以利用windows自带的录音机录制语音文件,进行数字信号的采集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说“语音信号处理课程设计”,说完后停止录音, 文件存储器的后缀默认为. Wav,如果是wma格式或其他格式,可以利用软件转换成wav格式。以文件名“xz”保存入D: MATLAB
4、 work 中。图2是基于PC机的语音信号采集过程:Windows自带录音机麦克风声卡滤波采样A/D转换Wav声音图2.语音采集过程4.2.2 语音信号的读取在matlab软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数。通过使用wavread函数,理解采样频率、采样位数等概念。wavread函数调用格式y=wavread(file),读取file所规定的wav文件,返回采样值放在向量y中。y,fs,nbits=wavread(file),采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。y=wavread(file,N),读取钱N点的采样值放在
5、向量y中。y=wavread(file,N1,N2),读取从N1到N2点的采样值放在向量y中。对语音信号“zx.wav”进行采样其程序如下:y,fs,nbits=wavread(zx.wav)结果如下:可知该语音信号的采样频率fs = 8000Hz ,数据位nbits = 16Bit。4.2.3 语音信号的频谱分析首先画出语音信号的时域波形,然后对语音信号进行频谱分析。在Matlab 中可以利用函数fft 对信号行快速傅里叶变换,得到信号的频谱图其程序如下:y=wavread(zx.wav); %把语音信号进行加载入Matlab 仿真软件平台中sound(y,fs,nbits); %对加载的语
6、音信号进行回放Y=fft(y); %快速傅里叶变换subplot(2 ,1 ,1),plot(y);title(原始信号波形);subplot(2 ,1 ,2),plot(abs(Y);title(原始信号频谱);程序结果如下图3:图3 语音信号的频谱4.2.4 噪声信号的构建利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析。1)Matlab中的rand函数:均匀分布的随机数或矩阵Y = rand(n)Y = rand(m,n)Y = rand(m n)Y = rand(m,n,p,.)Y = rand(m n p.)Y =
7、rand(size(A)2)rand函数产生由在(0, 1)之间均匀分布的随机数组成的数组。Y = rand(n) 返回一个n x n随机矩阵。如果n不是数量,则返回错误信息。Y = rand(m,n) 或 Y = rand(m n) 返回一个m x n的随机矩阵。Y = rand(m,n,p,.) 或 Y = rand(m n p.) 产生随机数组。Y = rand(size(A) 返回一个和A有相同尺寸的随机矩阵。3)程序如下:N=length(y); %求出语音信号的长度noise=rand(N,2)/20; %噪声信号的函数z=fft(noise); %快速傅里叶变换subplot(2
8、 ,1 ,1),plot(noise);title(噪声信号波形);subplot(2 ,1 ,2),plot(abs(z);title(噪声信号频谱);axis(0,250000,0,100);图4 噪声信号的频谱4.2.5 加入噪声的语音信号的频谱matlab程序如下: y=wavread(zx.wav);N=length(y);noise=rand(N,2)/20;s=y+noise; %噪声信号的叠加Subplot(2,1,1);plot(s);title (滤波前的时域波形);S=fft(s);Subplot(2,1,2);plot(abs(S);title (滤波前的频域波形);a
9、xis(0,45000,0,200);图5 加噪语音信号的频谱4.2.6数字滤波器的设计 滤波器的设计原理 设计数字滤波器的任务就是寻求一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。数字滤波器从实现的网络结构或者从单位冲激响应分类,可以分成无限长单位冲激响应(IIR)数字滤波器和有限长单位冲激响应(FIR)数字滤波器。MATLAB中提供了几个函数,分别用于实现IIR滤波器和FIR滤波器。1)卷积函数conv卷积函数conv的调用格式为 c=conv(a,b)该格式可以计算两向量a和b的卷积,可以直接用于对有限长信号采用FIR滤波器的滤波。2) 函数filter函数fil
10、ter的调用格式为 y=filter(b,a,x)该格式采用数字滤波器对数据进行滤波,既可以用于IIR滤波器,也可以用于FIR滤波器。其中向量b和a分别表示系统函数的分子、分母多项式的系数,若a1,此时表示FIR滤波器,否则就是IIR滤波器。该函数是利用给出的向量b和a,对x中的数据进行滤波,结果放入向量y。3) 函数fftfilt函数fftfilt的调用格式为y=fftfilt(b,x)该格式是利用基于FFT的重叠相加法对数据进行滤波,这种频域滤波技术只对FIR滤波器有效。该函数是通过向量b描述的滤波器对x数据进行滤波。关于用butter函数求系统函数分子与分母系数的几种形式。b,a=but
11、ter(N,wc,high):设计N阶高通滤波器,wc为它的3dB边缘频率,以 为单位,故 。b,a=butter(N,wc):当wc为具有两个元素的矢量wc=w1,w2时,它设计2N阶带通滤波器,3dB通带为 ,w的单位为 。b,a=butter(N,wc,stop):若wc=w1,w2,则它设计2N阶带阻滤波器,3dB通带为 ,w的单位为 。如果在这个函数输入变元的最后,加一个变元“s”,表示设计的是模拟滤波器。这里不作讨论。为了设计任意的选项巴特沃斯滤波器,必须知道阶数N和3dB边缘频率矢量wc。这可以直接利用信号处理工具箱中的buttord函数来计算。 N,wc=buttord(wp,
12、ws,Rp,As)对于不同类型的滤波器,参数wp和ws有一些限制:对于低通滤波器,wpws;对于带通滤波器,wp和ws分别为具有两个元素的矢量,wp=wp1,wp2和ws=ws1,ws2,并且ws1wp1wp2ws2;对于带阻滤波器wp1ws1ws2ws1*ws2;w=wp1*wp2/ws2;bw=wp2-wp1;wp=1;ws=(wp1*wp2-w.2)/(bw*w);N,wc=buttord(wp,ws,1,50,s);b1,a1=butter(N,wc,s);b,a=lp2bp(b1,a1,sqrt(wp1*wp2),bw);bz,az=bilinear(b,a,0.5);h,w=fre
13、qz(bz,az);plot(w*8000*0.5/pi,abs(h);Legend(用butter设计);title(IIR带通滤波器);grid;IIR高通滤波器:Ft=8000;Fp=4000;Fs=3500;wp1=tan(pi*Fp/Ft);ws1=tan(pi*Fs/Ft);wp=1;ws=wp1*wp/ws1;N,wc=cheb1ord(wp,ws,1,50,s);b,a=cheby1 (N,1,wc,s);b1,a1=lp2hp(b,a,wc);bz,az=bilinear(b1,a1,0.5);h,w=freqz(bz,az);plot(w*21000*0.5/pi,abs(
14、h);title(IIR高通滤波器);legend(cheby1设计);axis(0 12000 0 1.5 );grid;FIR带通滤波器:Fp1=1200;Fp2=3000;Fs1=1000;Fs2=3200;Ft=8000;wp1=tan(pi*Fp1/Ft);wp2=tan(pi*Fp2/Ft);ws1=tan(pi*Fs1/Ft);ws2=tan(pi*Fs2/Ft);wp1*wp2ws1*ws2;w=wp1*wp2/ws2;bw=wp2-wp1;wp=1;ws=(wp1*wp2-w.2)/(bw*w);N,wc=buttord(wp,ws,1,50,s);b1,a1=butter(
15、N,wc,s);b,a=lp2bp(b1,a1,sqrt(wp1*wp2),bw);bz,az=bilinear(b,a,0.5);h,w=freqz(bz,az);plot(w*8000*0.5/pi,abs(h);Legend(用butter设计);title(FIR带通滤波器);grid;FIR高通滤波器:Ft=8001;Fp=4000;Fs=3500;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.(-rp/20); %通带阻带波纹s=10.(-rs/20);fpts=ws wp;mag=0 1;dev=p s;n23,wn23,beta,ftype=kai
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1