




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
语音信号处理与分析语音信号处理与分析专 业: 通信工程 班 级: 姓 名: 学 号: 指导教师: 一、实验类型 综合研究性实验二、实验目的1掌握采样定理及fft谱分析的基本原理及其利用matlab的实现方法;2. 掌握数字滤波器的设计原理和方法;3. 学习用matlab编程实现语音数字滤波系统。三、实验要求1. 利用windows下的录音机设备采集语音信号;2. 对语音信号进行采样并混进加性噪声,作频谱分析;3. 通过频谱分析选择合适的滤波器性能指标,设计合适的数字滤波器,并对含噪音的语音信号进行数字滤波;4. 设计处理系统的用户界面(gui),在所设计的系统界面上可以选择滤波器的参数,显示滤波器的频率响应,选择信号等。四、数字滤波器的设计原理数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(iir)滤波器和有限长冲激响应(fir)滤波器。iir数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配,所以iir滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。其设计方法主要有经典设计法、直接设计法和最大平滑滤波器设计法。fir数字滤波器的单位脉冲响应是有限长序列。它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。在对滤波器实际设计时,整个过程的运算量是很大的。设计阶数较高的iir滤波器时,计算量更大,设计过程中改变参数或滤波器类型时都要重新计算。设计完成后对已设计的滤波器的频率响应要进行校核。要得到幅频、相频响应特性,运算量也是很大的。平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候要根据设计要求和滤波效果不断地调整,以达到设计的最优化。在这种情况下,滤波器设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成。利用matlab强大的计算功能进行计算机辅助设计,可以快速有效地设计数字滤波器,大大地简化了计算量。五、傅里叶变换计算离散傅里叶变换的一种快速算法,简称fft。快速傅里叶变换是1965年由j.w.库利和t.w.图基提guarantee出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数n越多,fft算法计算量的节省就越显著。设x(n)为n项的复数序列,由dft变换,任一x(m)的计算都需要n次复数乘法和n-1次复数加法,而一次复数乘法等于四次实数乘法和两次实数加法,一次复数加法等于两次实数加法,即使把一次复数乘法和一次复数加法定义成一次“运算”(四次实数乘法和四次实数加法),那么求出n项复数序列的x(m),即n点dft变换大约就需要n2次运算。当n=1024点甚至更多的时候,需要n2=1048576次运算,在fft中,利用wn的周期性和对称性,把一个n项序列(设n=2k,k为正整数),分为两个n/2项的子序列,每个n/2点dft变换需要(n/2)2次运算,再用n次运算把两个n/2点的dft变换组合成一个n点的dft变换。这样变换以后,总的运算次数就变成n+2(n/2)2=n+n2/2。继续上面的例子,n=1024时,总的运算次数就变成了525312次,节省了大约50%的运算量。而如果我们将这种“一分为二”的思想不断进行下去,直到分成两两一组的dft运算单元,那么n点的dft变换就只需要nlog2n次的运算,n在1024点时,运算量仅有10240次,是先前的直接算法的1%,点数越多,运算量的节约就越大,这就是fft的优越性。六、信号处理原理、分析和实现6.1 语音信号的采集利用pc 机上的声卡和windows 操作系统可以进行数字信号的采集。将话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话“语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音按钮,可以实现所录音的重现。以文件名“luyin”保存入d : matlab work 中。可以看到,文件存储器的后缀默认为. wav ,这是windows 操作系统规定的声音文件存的标准。6.2 语音信号的时频分析利用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中。接下来,对语音信号orisound.wav进行采样。其程序如下:%=方法1:用matlab直接读取已经录好的音频文件=y,fs,nbits=wavread(luyin1.wav); %把语音信号进行加载入matlab仿真软件平台中 wavplay(y,fs);% 回放语音信号 n=length(y);%求语音信号的长度 y=fft(y,n); %傅里叶变换 subplot(2,2,1); plot(y); title(原始信号波形); subplot(2,2,2); plot(abs(y); title(原始信号频谱);%=方法2:可以用matlab直接用函数进行录制,然后再进行分析=fs=8000;channel=1;t=5;fprintf(按任意键后开始 %d 秒录音:,t); pause;%文字提示 %暂停命令fprintf(录音中.);%文字提示y=wavrecord(t*fs, fs,channel,double);%录制语音信号fprintf(录音结束n);%文字提示wavwrite(y,fs,d:matlabworklupin1.wav);%存储录音信号fprintf(按任意键后回放:);pause;wavplay(y,fs); n=length(y);%求语音信号的长度 y=fft(y,n); %傅里叶变换 subplot(2,2,1); plot(y); title(原始信号波形); subplot(2,2,2); plot(abs(y); title(原始信号频谱);程序结果如下图: 图1 原始信号波形及频谱6.3 语音信号加噪与频谱分析matlab中产生高斯白噪声非常方便,有两个产生高斯白噪声的两个函数 。我们可以直接应用两个函数:一个是wgn,另一个是awgn。wgn用于产生高斯白噪声,awgn则用于在某一信号中加入高斯白噪声。也可直接用randn函数产生高斯分布序列。在本次课程设计中,我们是利用matlab中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。randn函数有两种基本调用格式:randn(n)和randn(m,n),前者产生nn服从标准高斯分布的随机数矩阵,后者产生mn的随机数矩阵。在这里,我们选用randn(m,n)函数。语音信号添加噪声及其频谱分析的主要程序如下:%=加白噪声=y,fs,nbits=wavread (luyin1);n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声si=y+noise; %语音信号加入噪声 sound(si);subplot(2,1,1);plot(si);title(加噪语音信号的时域波形);s=fft(si); %傅里叶变换subplot(2,1,2);plot(abs(s); title(加噪语音信号的频域波形);程序结果如下图:图2 加噪后的波形及频谱分析6.4 设计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数字低通滤波器的步骤:(1)确定数字低通滤波器的技术指标:通带边界频率、通带最大衰减,阻带截止频率、阻带最小衰减。(2)将数字低通滤波器的技术指标转换成相应的模拟低通滤波器的技术指标。(3)按照模拟低通滤波器的技术指标设计及过渡模拟低通滤波器。(4)用双线性变换法,模拟滤波器系统函数转换成数字低通滤波器系统函数。如前所述,iir滤波器和fir滤波器的设计方法有很大的区别。下面我们着重介绍用窗函数法设计fir滤波器的步骤。如下:(1)根据对阻带衰减及过渡带的指标要求,选择串窗数类型(矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度n。先按照阻带衰减选择窗函数类型。原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。(2)构造希望逼近的频率响应函数。(3)计算h(n).。(4)加窗得到设计结果。接下来,我们根据语音信号的特点给出有关滤波器的技术指标:低通滤波器的性能指标:通带边界频率fp=1000hz,阻带截止频率fc=1200hz,阻带最小衰减as=100db , 通带最大衰减ap=1db高通滤波器的性能指标:通带边界频率fp=3500hz,阻带截止频率fc=4000hz,阻带最小衰减as=100db,通带最大衰减ap=1db;带通滤波器的性能指标:通带边界频率fp1=1200hz,fp2=3000hz,阻带截止频率fc1=1000hz,fc2=3200hz,阻带最小衰减as=100db,通带最大衰减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滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可。下面我们将给出fir和iir数字滤波器的主要程序。%=iir低通滤波器=ft=8000;fp=1000; %通带边界频率fs=1200; %阻带截止频率wp=2*pi*fp/ft;ws=2*pi*fs/ft;fp=2*ft*tan(wp/2);fs=2*fs*tan(wp/2);n11,wn11=buttord(wp,ws,1,50,s); %求低通滤波器的阶数和截止频率b11,a11=butter(n11,wn11,s); %求s域的频率响应的参数 num11,den11=bilinear(b11,a11,0.5);%双线性变换实现s域到z域的变换 h,w=freqz(num11,den11); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h);title(iir低通滤波器);legend(用巴特沃斯butter设计);图3 iir低通滤波器%=iir带通滤波器=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);w=wp1*wp2/ws2;bw=wp2-wp1;wp=1;ws=(wp1*wp2-w.2)/(bw*w);n12,wn12=buttord(wp,ws,1,50,s); %求低通滤波器阶数和截止频率b12,a12=butter(n12,wn12,s); %求s域的频率响应参数num2,den2=lp2bp(b12,a12,sqrt(wp1*wp2),bw);%将s域低通参数转为带通的num12,den12=bilinear(num2,den2,0.5);%双线性变换实现s域到z域的转换h,w=freqz(num12,den12); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h);axis(0 4000 0 1.5);grid ontitle(iir带通滤波器);legend(用巴特沃斯butter设计);图4 iir带通滤波器%=iir高通滤波器=ft=8000;fp=3500; %通带边界频率fs=4000; %阻带截止频率wp1=tan(pi*fp/ft); %高通到低通滤波器参数转换ws1=tan(pi*fs/ft); %fp=3500hz,fs=4000hz,as=100db,ap=1db;wp=1;ws=wp1*wp/ws1;n13,wn13=cheb1ord(wp,ws,1,50,s); %求模拟的低通滤波器阶数和截止频率b13,a13=cheby1(n13,1,wn13,s); %求s域的频率响应的参数num,den=lp2hp(b13,a13,wn13); %将s域低通参数转为高通的num13,den13=bilinear(num,den,0.5); %利用双线性变换实现s域到z域转换h,w=freqz(num13,den13);plot(w*21000*0.5/pi,abs(h);axis(0 10000 0 1.5);grid on;title(iir高通滤波器);legend(用切比雪夫cheby1设计);图5 iir 高通滤波器%=fir窗函数低通滤波器=ft=8000; %采样频率fpts=1000 1200; %通带边界频率fp=1000hz,阻带截止频率fs=1200hzmag=1 0; dev=0.01 0.05; %通带波动1%,阻带波动5%n21,wn21,beta,ftype=kaiserord(fpts,mag,dev,ft);%kaiserord估计采用凯塞窗设计的fir滤波器的参数b21=fir1(n21,wn21,kaiser(n21+1,beta); %由fir1设计滤波器h,w=freqz(b21,1); %得到频率响应plot(w/pi,abs(h);grid ontitle(fir低通滤波器);图6 fir低通滤波器%=fir窗函数带通滤波器=ft=8000;fp1=1200;fp2=3000;fs1=1000;fs2=3200;wp1=tan(pi*fp1/ft); %带通到低通滤波器参数转换wp2=tan(pi*fp2/ft);ws1=tan(pi*fs1/ft);ws2=tan(pi*fs2/ft); w=wp1*wp2/ws2;bw=wp2-wp1;wp=1;ws=(wp*wp2-w.2)/(bw*w);n22,wn22=buttord(wp,ws,1,50,s); %求低通滤波器阶数和截止频率b22,a22=butter(n22,wn22,s); %求s域的频率响应的参数num2,den2=lp2bp(b22,a22,sqrt(wp1*wp2),bw); %将s域低通参数转为带通的num22,den22=bilinear(num2,den2,0.5);%双线性变换实现s域到z域的转换h,w=freqz(num22,den22); %根据参数求出频率响应plot(w*8000*0.5/pi,abs(h);axis(0 4000 0 1.5);grid on;legend(用巴特沃斯butter设计);图7 fir带通滤波器%=fir窗函数高通滤波器=ft=11000; %采样频率fpts=3500 4000; %通带边界频率fp=3500hz,阻带截止频率fs=4000hzmag=1 0;dev=0.01 0.05 %通带波动1%,阻带波动5% n23,wn23,beta,ftype=kaiserord(fpts,mag,dev,ft);b23=fir1(n23,wn23,high,kaiser(n23+1,beta); %由fir1设计滤波器h,w=freqz(b23,1); %得到频率响应plot(w*12000*0.5/pi,abs(h);grid on;title(fir高通滤波器);axis(3000 6000 0 1.4);图8 fir高通滤波器6.5 用滤波器对加噪语音信号进行滤波用自己设计的各滤波器分别对加噪的语音信号进行滤波,在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输出信号向量。6.6 比较滤波前后语音信号的波形及频谱% =双线性变换法=%*iir低通滤波器*y,fs,nbits=wavread (luyin1);n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声s=fft(s); %傅里叶变换z11=filter(num11,den11,s); %iir滤波器滤波sound(z11);m11=fft(z11); %求滤波后的信号subplot(2,2,1);plot(abs(s),b);title(滤波前信号的频谱);grid;subplot(2,2,2);plot(abs(m11),r);title(滤波后信号的频谱);grid;subplot(2,2,3);plot(s,b);title(滤波前信号的波形);grid;subplot(2,2,4);plot(z11,r);title(滤波后的信号波形);图9 双线性法iir低通滤波%*iir带通滤波器*y,fs,nbits=wavread (luyin1);n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声s=fft(s); %傅里叶变换z12=filter(num12,den12,s); %iir带通滤波 sound(z12);m12=fft(z12); %求滤波后的信号subplot(2,2,1);plot(abs(s),g);title(滤波前信号的频谱);subplot(2,2,2);plot(abs(m12),r);title(滤波后信号的频谱);subplot(2,2,3);plot(s);title(滤波前信号的波形);subplot(2,2,4);plot(z12);title(滤波后的信号波形);图10 双线性法iir带通滤波%*iir高通滤波器* y,fs,nbits=wavread (luyin1);n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声s=fft(s); %傅里叶变换z13=filter(num13,den13,s); %iir高通滤波sound(z13);m13=fft(z13); %求滤波后的信号subplot(2,2,1);plot(abs(s),g);title(滤波前信号的频谱);subplot(2,2,2);plot(abs(m13),r);title(滤波后信号的频谱);subplot(2,2,3);plot(s); title(滤波前信号的波形);subplot(2,2,4);plot(z13);title(滤波后的信号波形);图11 双线性法iir高通滤波%=窗函数法=%*fir低通滤波器*y,fs,nbits=wavread (luyin1);n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声 s=fft(s); %傅里叶变换z21=fftfilt(b21,s); %fir低通滤波 sound(z21);m21=fft(z21); %求滤波后的信号subplot(2,2,1);plot(abs(s),g);title(滤波前信号的频谱);subplot(2,2,2);plot(abs(m21),r); title(滤波后信号的频谱);subplot(2,2,3);plot(s); title(滤波前信号的波形);subplot(2,2,4);plot(z21); title(滤波后的信号波形);图12 窗函数法fir低通滤波%*fir带通滤波器*y,fs,nbits=wavread (luyin1);n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声 s=fft(s); %傅里叶变换z22=fftfilt(b22,s); %fir带通滤波 sound(z22);m22=fft(z22); %求滤波后的信号subplot(2,2,1);plot(abs(s),g);title(滤波前信号的频谱);subplot(2,2,2);plot(abs(m22),r);title(滤波后信号的频谱);subplot(2,2,3);plot(s);title(滤波前信号的波形);subplot(2,2,4);plot(z22);title(滤波后的信号波形);图13 窗函数法fir带通滤波%*fir高通滤波器*y,fs,nbits=wavread (luyin1);n = length (y) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声s=y+noise; %语音信号加入噪声 s=fft(s); %傅里叶变换z23=fftfilt(b23,s); %fir高通滤波sound(z23);m23=fft(z23); %求滤波后的信号subplot(2,2,1);plot(abs(s),g);subplot(2,2,2);plot(abs(m23),r);title(滤波后信号的频谱);subplot(2,2,3);plot(s);title(滤波前信号的波形);subplot(2,2,4);plot(z23);title(滤波后的信号波形); 图14 窗函数法fir高通滤波6.7回放语音信号 经过以上的加噪声处理后,可在matlab中用函数sound对声音进行回放。其调用格式:sound(y,fs),sound(y)和sound(y,fs,bits)。可以察觉滤波前后的声音有明显的变化。七、设计系统界面7.1 系统界面设计工具gui概述图形用户界面(graphical user interfaces ,gui)则是由窗口、光标、按键、菜单、文字说明等对象(objects)构成的一个用户界面。用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。在matlab中gui是一中包含多种对象的图形窗口,并为gui开发提供一个方便高效的集成开发环境guide。guide主要是一个界面设计工具集,maylab将所有gui支持度控件都集成在这个环境中,并提供界面外观、属性和行为响应方式的设置方法。guide将设计好的gui保存在一个fig文件中,同时生成m文件框架。 fig文件:包括gui图形窗口及其所有后裔的完全描述,包括所有对象属性的属性值。它是一个二进制文件调用hsave课保存图形窗口时将生车该文件。m文件包括gui设计、控件函数以及定义为子函数的用户控件回调函数,主要用于控制gui展开时的各种特征。 gui创建包括界面设计和控件编程两部分,主要步骤如下。第一步:通过设置guide应用程序的选项来运行guide;第二步:使用界面设计编辑器进行面设计;第三步:编写控件行为响应控制(即回调函数)代码。7.2界面设计及使用说明首先我们新建一个gui文件:file/new/gui 如下图所示:图15 gui创建界面选择blank gui(default)。布置如下图所示;图16 gui开发环境布置好各控件以后,我们就可以来为这些控件编写程序来实现两数相加的功能了。最后,使用说明。单击相应的按钮,便跳出对应的界面,如按下按钮“低通滤波器”,就得到如图所示结果。图17 gui布局7.3gui演示过程(1)选择要分析的信号 图18 gui分析信号选择没有选择信号回报如下错误? data must have one or two columns.error in = sound at 41playsnd(y,fs,bits);error in = yuyinchulipushbutton8_callback at 42sound (signal);error in = gui_mainfcn at 75 feval(varargin:);error in = yuyinchuli at 17 gui_mainfcn(gui_state, varargin:);? error while evaluating uicontrol callback.(2)开始分析信号图19 gui信号分析显示八、结果分析本设计圆满的完成了对加噪声语音信号的读取与打开,与课题的要求十分相符;也较好的完成了对原始语音信号和加噪声后的语音信号的频谱分析,通过fft变换,得出了语音信号的频谱图;在滤波这一部分,课题主要是从巴特沃斯滤波器入手来设计滤波器等入手,实现了预期的滤波效果;完成了界面的设计,但也存在许多的不足,只是很勉强的达到了打开语音文件、显示已定滤波前后的波形图,界面没有用到其它的一些控件,如列表框、下拉菜单等等,gui的界面设计功能没能得到充分的发挥。九、结束语语音信号处理是语音学与数字信号处理技术相结合的交叉学科,课题在这里不讨论语音学,而是将语音当做一种特殊的信号,即一种“复杂向量”来看待。也就是说,课题更多的还是体现了数字信号处理技术。从课题的中心来看,课题“基于matlab的有噪声语音信号处理”是希望将数字信号处理技术应用于某一实际领域,这里就是指对语音及加噪处理。作为存储于计算机中的语音信号,其本身就是离散化了的向量,我们只需将这些离散的量提取出来,就可以对其进行处理了。这一过程的实现,用到了处理数字信号的强有力工具matlab。通过matlab里几个命令函数的调用,很轻易的在实际语音与数字信号的理论之间搭了一座桥。课题的特色在于它将语音信号看作一个向量,于是就把语音数字化了。那么,就可以完全利用数字信号处理的知识来解决语音及加噪处理问题。我们可以像给一般信号做频谱分析一样,来对语音信号做频谱分析,也可以较容易的用数字滤波器来对语音进行滤波处理。通过比较加噪前后,语音的频谱和语音回放,能明显的感觉到加入噪声后回放的声音与原始的语音信号有很大的不同,前者随较尖锐的干扰啸叫声。从含噪语音信号的频谱图中可以看出含噪声的语音信号频谱,在整个频域范围内分是布均匀。其实,这正是干扰所造成的。通过滤波前后的对比,低通滤波后效果最好,高通滤波后的效果最差。由此可见,语音信号主要分布在低频段,而噪声主要分布在高频段。最后,还利用了matlab的另一强大功能gui界面设计。设计出了一个简易的用户应用界面,可以让人实现界面操作,更加方便的进行语音的频谱分析与加噪滤波处理。 附录: gui设计程序如下function varargout = yuyinchuli(varargin)gui_singleton = 1;gui_state = struct(gui_name, mfilename, . gui_singleton, gui_singleton, . gui_openingfcn, yuyinchuli_openingfcn, . gui_outputfcn, yuyinchuli_outputfcn, . gui_layoutfcn, , . gui_callback, );if nargin & ischar(varargin1) gui_state.gui_callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_state, varargin:);else gui_mainfcn(gui_state, varargin:);endfunction yuyinchuli_openingfcn(hobject, eventdata, handles, varargin)handles.output = hobject;guidata(hobject, handles);function varargout = yuyinchuli_outputfcn(hobject, eventdata, handles) varargout1 = handles.output;function pushbutton19_callback(hobject, eventdata, handles)axes(handles.axes2)claglobal signal;global y;h=*.wav;filename,pathname=uigetfile(h,请选择打开的文件);file=strcat(pathname,filename);signal=wavread(file);function edit2_callback(hobject, eventdata, handles)global wp;global ws;f1=str2double(get(handles.edit2,string);wp=f1;function edit3_callback(hobject, eventdata, handles)global wp;global ws;f2=str2double(get(handles.edit3,string);ws=f2;function pushbutton8_callback(hobject, eventdata, handles)global signal;sound (signal);function pushbutton9_callback(hobject, eventdata, handles)axes(handles.axes2)cla;global signal;global y;n=length(signal);%求语音信号的长度y=fft(signal,n); %傅里叶变换plot(signal); title(原始信号波形);axes(handles.axes3)plot(abs(y); title(原始信号频谱);function pushbutton10_callback(hobject, eventdata, handles)axes(handles.axes2)cla;global signal;global si;n= length(signal) ; %求出语音信号的长度noise=0.01*randn(n,2); %随机函数产生噪声si=signal+noise;sound(si)function pushbutton11_callback(hobject, eventdata, handles)axes(handles.axes2)cla;global signal;global si;plot(si);title(加噪语音信号的时域波形);axes(handles.axes3)cla;s=fft(si); %傅里叶变换plot(abs(s); title(加噪语音信号的频域波形);function pushbutton2_callback(hobject, eventdata, handles)axes(handles.axes2)cla;global b21;ft=8000; %采样频率fpts=1000 1200; %通带边界频率fp=1000hz,阻带截止频率fs=1200hzmag=1 0; dev=0.01 0.05; %通带波动1%,阻带波动5%n21,wn21,beta,ftype=kaiserord(fpts,mag,dev,ft);%kaise
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年春季初级经济师考试 经济基础知识高效备考模拟试题试卷
- 2025年经济师考试 经济师考试冲刺押题卷
- 2025年计算机二级Office高级应用考试模拟试卷
- 2026届浙江名校新化学高二第一学期期末复习检测试题含答案
- 2025年秋季初级经济师职业资格考试 经济基础知识高频考点冲刺试卷
- 2025年考研英语(一)阅读理解冲刺试卷 逻辑思维训练
- 2025年注册会计师(CPA)考试 会计科目考前冲刺试题及答案
- 2026届山东省临沂市罗庄区化学高三第一学期期中复习检测试题含解析
- 广东省深圳市龙华区2024-2025学年七年级下学期期末语文试题(含答案)
- 玩具销售知识培训课件
- 2026届广东省六校高三语文上学期第一次联考试卷附答案解析
- 2025年医院胸痛中心应知应会试题(附答案)
- 医院投诉处理标准化培训
- 2025年广东法官入额考试题库
- 肺康复专题讲座
- 卵巢保养课件教学
- GB/T 9775-2025纸面石膏板
- 钻井作业现场常见安全风险及隐患ppt课件
- 葫芦烙画教学校本课程
- 球队赞助策划书(共5页)
- 气动机械手系统设计(含全套CAD图纸)
评论
0/150
提交评论