第一篇:--基于MATLAB的语音信号的频谱分析
DSP课程设计
——基于MATLAB的声音信号频谱分析
1. 课程设计目的
综合运用数学信号处理的理论知识进行语音信号的频谱分析,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
2. 理解设计基本要求
1)熟悉离散信号和系统的时域特性。
2)熟悉线性卷积和相关的计算编程方法。
3)掌握序列傅里叶变换的计算机实现方法,利用序列傅里叶变换对离散信号、系统和系统的响应进行频域分析。4)学会MATLAB的使用,掌握MATLAB的程序设计方法。5)利用MATLAB对wav文件进行频谱分析。6)分别用不同的滤波器对加噪语音信号进行滤波,选择最佳滤波器。
3. 课程设计内容
选择一个wav文件作为分析的对象,或录制一段语音信号,对其进行频谱分析,分别对加噪前后的语音信号进行频谱分析,再通过不同滤波器根据信号的频谱特点重构语音信号,选出最佳滤波方案。
4. 课程设计实现步骤
(1)语音信号的获取
选择一个wav文件作为分析的对象,可以利用Windows下的录音机或其他软件,录制一段自己的话音,在MATLAB中,[y,fs,bits]=wavread('Blip',[N1 N2]);用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。[N1 N2]表示读取的值从N1点到N2点的值。
sound(y);用于对声音的回放。向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。
下面是语音信号在MATLAB中的语言程序,它实现了语音的读入与打开,并绘出了语音信号时域波形,然后对语音信号进行频谱分析。在MATLAB中,可以利用函数fft对信号进行快速傅里叶变化,得到信号的频谱特性。
在频谱特性中分析最大值的位置(可能有几个),它代表的频率和时域的采样时间有关,相邻的两点之间的距离为。其中,N是离散傅里叶变换用的点数,是采样的时间,前面在读取 wav文件时得到了采样频率。
既然知道了该声波的频谱,按频率就可以反演它的时域值,利用以上分析的主要峰值来重构声波。由于没有考虑相位和其他的频谱分量,所以波形和原来的波形相差甚大,但大体的频率是没有错的。
fs=25600;
%语音信号采样频率为25600 [x,fs,bits]=wavread('C:Documents and SettingsAdministrator桌面语音音频.wav');
sound(x,fs,bits);
%播放语音信号
y1=fft(x,4096);
%对信号做2048点FFT变换 f=fs*(0:2047)/4096;figure(1)magy1=abs(y1);angy1=angle(y1);subplot(3,1,1),plot(x);title('原始信号波形')subplot(3,1,2),plot(magy1);title('原始信号幅值')subplot(3,1,3),plot(angy1);title('原始信号相位')figure(2)freqz(x)
%绘制原始语音信号的频率响应图 title('频率响应图')figure(3)plot(f,abs(y1(1:2048)));title('原始语音信号频谱')xlabel('Hz');ylabel('fudu');
axis([0 4500 0 400])
(2)wav语音信号加噪声
在MATLAB软件平台下,给原始的语音信号叠加上噪声,噪声类型分为如下几种:(1)单频噪色(正弦干扰);(2)高斯随机噪声。绘出加噪声后的语音信号时域和频谱图,在视觉上与原始语音信号图形对比,也可通过Windows播放软件从听觉上进行对比,分析并体会含噪语音信号频谱和时域波形的改变。本实验采用正弦干扰。
clc;clear;fs=22050;
%语音信号采样频率为22050 [x,fs,bits]=wavread('C:Documents and SettingsAdministrator桌面语音音频.wav');%读取语音信号的数据,赋给变量x y1=fft(x,4096);
%对信号做4096点FFT变换 f=fs*(0:511)/4096;t=(0:length(x)-1)/22050;x1=[0.05*sin(2*pi*10000*t)]';x2=x+x1;sound(x2,fs,bits);figure(1)subplot(2,1,1)plot(x)
%做原始语音信号的时域图形 title('原语音信号时域图')subplot(2,1,2)plot(x2)
%做原始语音信号的时域图形 title('加高斯噪声后语音信号时域图')xlabel('time n');ylabel('fudu');y2=fft(x2,4096);figure(2)subplot(2,1,1)plot(abs(y1))title('原始语音信号频谱');xlabel('Hz');ylabel('fudu');subplot(2,1,2)plot(abs(y2))title('加噪语音信号频谱');xlabel('Hz');ylabel('fudu');axis([0 4500 0 300]);wavwrite(x2,fs,'C:Documents and SettingsAdministrator桌面语音加噪.wav');
(3)巴特沃斯低通滤波
对加入高斯随机噪声和正弦噪声的语音信号进行滤波。用双线性变换法设计了巴特沃斯数字低通IIR滤波器对两加噪语音信号进行滤波,并绘制了巴特沃斯低通滤波器的幅度图和两加噪语音信号滤波前后的时域图和频谱图。clear all;fb = 1000;fc = 1200;fs = 22050;wp=0.1*pi;ws=0.4*pi;Rp=1;Rs=15;Fs=22050;Ts=1/Fs;wp1=2/Ts*tan(wp/2);%将模拟指标转换成数字指标 ws1=2/Ts*tan(ws/2);[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数
[Z,P,K]=buttap(N);%创建butterworth模拟滤波器 [Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2lp(Bap,Aap,Wn);[bd,ad]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换 [h,w]=freqz(bd,ad);figure(1)subplot(111);plot(w*fs/(2*pi),abs(h))grid;title('滤波器的性能分析');pause;figure(2)[x,fs,bits]=wavread('C:Documents and SettingsAdministrator桌面语音加噪.wav');n=length(x);f=fs*(0:(n/2-1))/n;X=fft(x);z=filter(bd,ad,x);subplot(211);plot(x);title('原始信号的波形');subplot(212);plot(z);title('滤波后信号的波形');pause;figure(3)sound(z,fs,bits);subplot(211);plot(f,abs(X(1:n/2)));title('原始信号的频谱');xlabel('Hz');Z=fft(z);subplot(212);plot(f,abs(Z(1:n/2)));title('滤波后的信号频谱');xlabel('Hz');wavwrite(z,fs,'C:Documents and SettingsAdministrator桌面语音巴滤.wav');
(4)汉明窗的FIR低通滤波
使用窗函数法,选用海明窗设计了数字FIR低通滤波器对加了正弦噪声的语音信号进行滤波,并绘制了滤波器滤波后的语音信号时域图和频谱图。%FIR滤波
fs=22050;[x,fs,bits]=wavread('C:Documents and SettingsAdministrator桌面语音加噪.wav');wp=0.25*pi;ws=0.3*pi;wdelta=ws-wp;N=ceil(6.6*pi/wdelta);%取整 t=0:(size(x)-1);wn=(0.2+0.3)*pi/2;b=fir1(N,wn/pi,hamming(N+1));%选择窗函数,并归一化截止频率 f1=fftfilt(b,x);figure(1)freqz(b,1,512)[h1,w1]=freqz(b,1);plot(w1*fs/(2*pi),20*log10(abs(h1)));figure(2)subplot(2,1,1)plot(t,x)title('滤波前的时域波形');subplot(2,1,2)plot(t,f1);title('滤波后的时域波形');sound(f1);%播放滤波后的语音信号 F0=fft(f1,1024);f=fs*(0:511)/1024;figure(3)y2=fft(x,1024);subplot(2,1,1);plot(f,abs(y2(1:512)));%画出滤波前的频谱图 title('滤波前的频谱')xlabel('Hz');ylabel('fuzhi');subplot(2,1,2)F1=plot(f,abs(F0(1:512)));%画出滤波后的频谱图 title('滤波后的频谱')xlabel('Hz');ylabel('fuzhi');wavwrite(f1,fs,'C:Documents and SettingsAdministrator桌面语音F滤.wav');
5. 课程设计心得体会
本设计采用了高效快捷的开发工具——MATLAB,实现了语音信号的采集,对语音信号加噪声及设计滤波器滤除噪声的一系列工作。从频率响应图中可以看出:巴特沃斯滤波器具有单调下降的幅频特性,通带内是平滑的。海明窗设计的FIR滤波器的频率特性几乎在任何频带上都比巴特沃斯滤波器的频率特性好,过渡带也比较小,只是海明窗设计的滤波器下降斜度较小对语言的过渡失真进行了补偿。
我们小组初步完成了设计任务,由于个人能力有限以及团队合作不够默契等诸多问题,还存在许多不足的地方,比如滤波器的设计种类还比较单一,没有做更多的滤波效果比较等。在以后的工作和学习中会更加努力来完善设计任务。
参考文献
[1]周辉,董正宏,数字信号处理及MATLAB实现,北京希望出版社,2006 [2]王树勋.数字信号处理处理基础及试验.北京:机械工业出版社,1992 [3]井上伸雄.数字信号处理的应用.北京:科学出版社,1991 [4]郑君里,杨为理.信号与系统(第二版),高等教育出版社,1981
第二篇:基于matlab的语音信号滤波处理——数字信号处理课程设计
数字信号处理课程设计
题目: 学院: 专业: 班级: 学号: 姓名: 指导教师:
基于matlab的语音信号滤波处理
物理与电子信息学院电子信息工程
摘要:
语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴学科,是目前发展最为迅速的学科之一,通过语音传递信息是人类最重要,最有效,最常用和最方便的交换信息手段,所以对其的研究更显得尤为重要。
Matlab语言是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换成离散的数据文件,然后用起强大的矩阵运算能力处理数据。这为我们的本次设计提供了强大并良好的环境!
本设计要求自己录制一段自己的语音后,在MATLAB软件中采集语音信号、回放语音信号并画出语音信号的时域波形和频谱图。再在Matlab中分别设计不同形式的FIR数字滤波器。之后对采集的语音信号经过不同的滤波器(低通、高通、带通)后,观察不同的波形,并进行时域和频谱的分析。对比处理前后的时域图和频谱图,分析各种滤波器对于语音信号的影响。最后分别收听进行滤波后的语音信号效果,做到了解在怎么样的情况下该用怎么样的滤波器。
目录
1.设计内容……………………………………………………………4 2.设计原理……………………………………………………………4 2.1语音信号的时域分析…………………………………………4 2.2语音信号的频域分析…………………………………………5 3.设计过程……………………………………………………………5 3.1实验程序源代码………………………………………………6
3.1.1原语音信号时域、频域图………………………………6
3.1.2低通滤波器的设计………………………………………6
3.1.3高通滤波器的设计………………………………………7
3.1.4带通滤波器的设计………………………………………8
3.1.5语音信号的回放………………………………………9 3.2调试结果描述…………………………………………………10 3.3所遇问题及结果分析…………………………………………15
3.3.1所遇主要问题…………………………………………16
3.3.2结果分析………………………………………………16 4.体会与收获…………………………………………………………17 5.参考文献……………………………………………………………17
1.设计内容:
1.首先录制好一段自己的语音。
2.用Matlab分别设计好3种类型的滤波器(指标自己确定):低通型、高通型、带通型。3.用Matlab将语音信号进行采样,并分别将其通过所设计的3种滤波器。4.用Matlab自带的语音返回函数收听滤波后的语音信号,分析并比较其与原语音信号的差异。
2.设计原理:
语音信号时一种非平稳的时变信号,它带着各种信息。在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析的目的就在于方便有效的提取并表示语音信号所携带的信息。语音信号处理可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,崎岖的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。2.1语音信号的时域分析
信号提取:通过图形用户界面上的菜单功能按键采集电脑上的一段音频信号,完成音频信号的频率,幅度等信息的提取,并得到该语音信号的波形图。
信号调整:在设计的用户图形界面下对输入的音频信号进行各种变化,如变化幅度、改变频率等操作,以实现对语音信号的调整。
2.2语音信号的频域分析
信号的傅里叶表示在信号的分析和处理中起着重要的作用。因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅里叶分析方法能完善地解决许多信号分析和处理问题。另外,傅里叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项红物理现象。
由于语音信号时随着时间变化的,通常认为,语音是一个受准周期脉冲或随机噪声源激励的线性系统的输出。输出频谱是声道系统频率响应与激励源频谱的乘积。身份到系统的频率响应及激励源都是随时间变化的,因此一般标准的傅里叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。由于语音信号可以认为在短时间内,近似不变,因而可以采用短时分析法。
1.信号变换:在用户图形界面西啊对采集的语音信号进行Fourier等变换,并画出变换前后的频谱图和倒谱图。
2.信号滤波:滤除语音信号中的噪音部分,可以采用抵用滤波、高通滤波、带通滤波,并比较各种滤波后的效果。
3.设计过程:
3.1实验程序源代码(原语音信号存放在e:下):
3.1.1.原语音信号的时域、频域图
[x1,fs,bits]=wavread('e:txwz.wav');%sound(x1,fs,bits);figure(1);
plot(x1);%做原始语音信号的时域图形 title('原始语音信号');xlabel('时间 t');ylabel('音量 n');figure(2);y1=fft(x1);%做length(x1)点的FFT y1=fftshift(y1);%平移,是频率中心为0 derta_fs = fs/length(x1);%设置频谱的间隔,分辨率 plot([-fs/2:derta_fs: fs/2-derta_fs],abs(y1));%画出原始语音信号的频谱图
title('原始语音信号的频谱');grid on;3.1.2低通滤波器的设计
%低通滤波:截止频率4000,阻带衰减20dB,过渡带宽0.1π
fc1=4000;N1=2*pi*0.9/(0.1*pi)wc1=2*pi*fc1/fs;if rem(N1,2)==0 N1=N1+1;end Window= boxcar(N1+1);%长度为N1的矩形窗Window b1=fir1(N1,wc1/pi,Window);
figure(3);freqz(b1,1,512);title('低通滤波器的频率响应');x1_low = filter(b1,1,x1);%对信号进行低通滤波 figure(4);plot(x1_low);title('信号经过低通滤波器(时域)');figure(5);plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_low))));title('信号经过低通滤波器(频域)');3.1.3高通滤波器的设计
%高通滤波:截止频率4000,阻带衰减40dB,过渡带宽0.1π
fc2=4000;N2=2*pi*3.1/(0.1*pi)wc2=2*pi*fc1/fs;N2=N2+mod(N2,2);Window=hanning(N2+1);b2=fir1(N2,wc2/pi,'high',Window);figure(6);freqz(b2,1,512);%数字滤波器频率响应 title('高通滤波器的频率响应');
x1_high = filter(b2,1,x1);%对信号进行高通滤波 figure(7);plot(x1_high);title('信号经过高通滤波器(时域)');figure(8);plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_high))));title('信号经过高通滤波器(频域)')3.1.4带通滤波器的设计
%带通滤波:下截止频率4000,上截止频率8000,阻带衰减20dB,过渡带宽度0.1π
f1=4000;f2=8000;%带通滤波器的通带范围 w1=2*pi*f1/fs;w3=w1+0.1*pi;w2=2*pi*f2/fs;w4=w2-0.1*pi;w=[(w1+w3)/2,(w2+w4)/2];B=0.1*pi;N3=ceil(2*0.9*pi/B);N3=N3+mod(N3,2);Window=boxcar(N3+1);b3=fir1(N3,w/pi,'stop',Window);%带通滤波器
figure(9);freqz(b3,1,512);%数字滤波器频率响应 title('带通滤波器的频率响应');x1_daitong = filter(b3,1,x1);%对信号进行带通滤波 figure(10);plot(x1_daitong);title('信号经过带通滤波器(时域)');figure(11);plot([-fs/2:derta_fs:fs/2-derta_fs],abs(fftshift(fft(x1_daitong))));title('信号经过带通滤波器(频域)');3.1.5语音信号的回放(分别执行)
sound(x1,fs,bits);%原始信号
sound(x1_low,fs,bits);%经过低通滤 sound(x1_high,fs,bits);%经过高通滤波 sound(x1_daitong,fs,bits);%经过带通滤波
3.2调试结果描述
原始语音信号的时域图形:
原始语音信号频谱:
低通滤波器的频率响应:
信号经过低通滤波后的时域波形:
信号经过低通滤波后的频域波形
高通滤波器的频率响应:
信号经过高通滤波后的时域波形:
信号经过高通滤波后的频域波形:
带通滤波器的频率响应:
信号经过带通滤波后的时域波形:
信号经过带通滤波后的频域波形:
3.3所遇问题及结果分析
3.3.1所遇主要问题
1.在高通与带通滤波器的设计时老是报错,但同样的用法在低通滤波器中就可以实现
b2=fir1(N2,wc2/pi,'high',Window);??? Error using ==> fir1 The window length must be the same as the filter length.其要求在fir函数中所选用的窗长要和滤波器长度一致。但在参考书上指出,滤波器阶数必须为窗长加1。经上网查询后,原来高通、带阻滤波器的阶数应该控制为奇数,因为如果阶数为偶数,则在π点必有一零点,这对于高通带阻来说是不允许的,故取阶数为奇数,而你FIR1滤波器阶数为M+1阶,所以你的M必须为偶数,所以可以将程序中去窗长算法由原程序的: N2=2*pi*0.9/(0.1*pi);if rem(N2,2)==0 N2=N2+1;End 和: N3=2*pi*0.9/(0.1*pi);if rem(N3,2)==0 N3=N3+1;End 改为了:
N2=N2+mod(N2,2);和: B=0.1*pi;(B为过渡带宽)N3=ceil(2*0.9*pi/B);N3=N3+mod(N3,2);2.在设计高通滤波器时先是使用的矩形窗,用矩形窗验证出来的结果中低频语音分量依旧很强,不能将其全部抑制在0,之后换窗,选着了最小衰减可以到达53dB的海明窗,再次试验,非常成功!3.3.2结果分析
经过回放三个不同类型滤波器输出的语音信号,并与原语音信号对比得到了如下结论。
语音高频成分音质非常尖锐,齿音中,声音有些暗淡。语音低频成分音质沉稳,空间感觉强,语音浑厚。语音中频成分音质有力度,有通透感。
4.体会与收获
以往都是通过课本来感性的认知语音信号,通过本次的课程设计,让我对语音信号有了一个较为实际的认识。于此同时,让我再次把数字信号处理及数字滤波器的设计方法重新进行了复习和学习。而对于Matlab,也再次让我感受到了其功能的强大。最为重要的是,本次课 17
程设计让我重新审视了学习的过程:只去做实验是不行的,首先还是要思考,遇到了问题查书籍,百度搜索也只是一种手段,更加重要的是想,再理解,只有这样才能真正的做好实验。
5.参考文献
《数字信号处理》钱同惠、百度文库
第三篇:基于MATLAB的有噪声的语音信号处理的课程设计要点
DSP实验课程设计实验报告
DSP实验课程设计实验报告
姓名: 学号: 班级:
1.课程设计题目:
基于MATLAB的有噪声的语音信号处理的课程设计。
2.课程设计的目的:
综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应的结论,再利用MATLAB做为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
3.课程设计的要求:
(1)熟悉离散信号和系统的时域特性。(2)掌握序列快速傅里叶变换FFT方法。
(3)学会MATLAB的使用,掌握MATLAB的程序设计方法。(4)利用MATLAB对语音信号进行频谱分析。
(5)掌握MATLAB设计各种数字滤波器的方法和对信号进行滤波的方法。
4.课程设计的内容:
录制一段语音信号,对语音信号进行频谱分析,利用MATLAB中的随机函数产生噪声加入到语音信号中,使语音信号被污染,然后进行频谱分析,设计FIR和IIR数字滤波器,并对噪声污染的语音信号进行滤波,分析滤波后的信号的时域和频域特征,回放语音信号。
5.课程设计的步骤:
(1)语音信号的获取
通过录音软件录制一段语音“数字信号处理”,命名为“OriSound”,时长大约1到2秒,在MATLAB中,通过使用wavread函数,对语音进行采样: [y,fs,nbits]=wavread('OriSound');%语音信号的采集 采样值放在向量y中,采样频率为fs,采样位数为nbits。
DSP实验课程设计实验报告
(2)语音信号的频谱分析
画出语音信号的时域波形,然后对语音信号进行频谱分析,在MATLAB中,通过使用fft函数对信号进行快速傅里叶变换,得到信号的频谱特性。
因此采集语音并绘出波形和频谱的模块程序如下:
[y,fs,nbits]=wavread('OriSound');
sound(y,fs,nbits);
n=length(y);
Y=fft(y,n);
figure;subplot(2,1,1);
plot(y);title('原始信号波形','fontweight','bold');axis([ 00000 80000-1 1]);
grid;subplot(2,1,2);
plot(abs(Y));title('原始信号频谱','fontweight','bold');axis([ 0 150000 0 4000]);
grid;
结果如下:
%语音信号的采集 %语音信号的播放 %计算语音信号的长度 %快速傅里叶变换 %绘出时域波形
%通过尝试确定合适的坐标参数 %绘出频域频谱
%通过尝试确定合适的坐标参数
DSP实验课程设计实验报告
可以看到,语音信号的频率集中在低频部分。
(3)产生噪声信号
在MATLAB中,通过使用randn函数产生随机噪声信号,并加到语音信号中得到被污染的语音信号,回放语音信号。
产生随机噪声: Noise=0.2*randn(n,1);其中用0.2倍乘噪声用来适当削减噪声的作用,便于对语音信号进行处理并比较效果。
(4)污染信号频谱分析
对被污染的加噪信号进行时域和频域分析。
加噪声并分析信号波形频谱的模块程序及说明如下:
DSP实验课程设计实验报告
[y,fs,nbits]=wavread('OriSound.wav');
sound(y,fs,nbits);
n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
sound(s);
figure;subplot(2,1,1);
plot(s);title('加噪语音信号的时域波形','fontweight','bold');axis([ 00000 80000-1 1]);
grid;S=fft(s);
subplot(2,1,2);
plot(abs(S));title('加噪语音信号的时域波形','fontweight','bold');axis([ 0 150000 0 4000]);grid;
结果如下:
%语音信号采集
%回放语音信号便于比较效果 %计算语音信号长度
%产生随机噪声信号Noise
%将Noise添加到原始信号,得到污
染信号s
%回放污染信号s %绘制加噪信号时域波形
%对s进行快速傅里叶变换得到频谱
%绘制加噪信号频域频谱
DSP实验课程设计实验报告
可以看到,随机噪声均匀的分布在整个频谱范围内。
(5)设计FIR和IIR数字滤波器
在MATLAB中,根据频谱特征设计FIR和IIR滤波器。在Matlab中,可以利用函数fir1设计FIR滤波器,利用函数butter,cheby1设计IIR滤波器,利用Matlab中的函数freqz画出各步滤波器的频率响应。
低通滤波器的性能指标: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中,利用[N,wc]=butter(N,wc,Rp,As,'s')设计并计算巴特沃斯模拟滤波器的阶数N和3dB截止频率wc;[B,A]=cheby1(N,Rp,wpo,'ftypr')设计切比雪夫I型滤波器。
在课程设计中,共设计了六种滤波器对信号进行滤波:FIR低通,高通,带通滤波器,IIR低通,高通,带通滤波器。通过对原始信号和加噪信号的频谱进行观察,原始语音信号频谱集中在低频段,而随机噪声接近均匀的分布在整个频谱范围内,因此推测选用低通滤波器去噪性能要好于高通和带通滤波器。
(6)对污染信号进行滤波
在MATLAB中用FIR和IIR滤波器对加噪信号进行滤波,其中通过利用函数fftfilt用FIR滤波器滤波,通过利用函数filter用IIR滤波器滤波。
(7)回放语音信号
在MATLAB中,通过用sound函数对语音信号进行回放,用以比较各滤波器的滤波效果。
各滤波器设计模块的程序和说明如下:
(1)IIR低通滤波器设计
DSP实验课程设计实验报告
[y,fs,nbits]=wavread('OriSound.wav');
n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Ft=8000;Fp=1000;Fs=1200;
wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;[n11,wn11]=buttord(wp,ws,1,50,'s');
[b11,a11]=butter(n11,wn11,'s');
[num11,den11]=bilinear(b11,a11,0.5);
z11=filter(num11,den11,s);
sound(z11,fs,nbits);
m11=fft(z11);
figure;subplot(2,2,1);
plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis([ 0 80000 0 4000]);grid;subplot(2,2,2);
plot(abs(m11),'r');title('滤波后信号的频谱','fontweight','bold');axis([ 0 80000 0 4000]);grid;subplot(2,2,3);
plot(s);title('滤波前信号的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
plot(z11);title('滤波后的信号波形','fontweight','bold');axis([00000 100000-1 1]);grid;
结果如下:
%语音信号采集 %计算语音信号长度
%产生随机噪声信号Noise
%将Noise添加到原始信号,得到污
染信号s
%快速傅里叶变换
%低通滤波器的阶数和截止频率 %S域频率响应的参数
%利用双线性变换实现频率响应S域到Z域的变换
%滤波
%回放滤波后的信号 %滤波后的信号频谱 %绘出滤波前的信号频谱
%绘出滤波后的信号频谱
%绘出滤波前的信号波形
%绘出滤波后的信号波形
DSP实验课程设计实验报告
可以看出,滤波后将非低频部分的噪声频率滤掉,但还有一些高于原始语音信号的频率没有被去除。
(2)IIR高通滤波器设计
[y,fs,nbits]=wavread('OriSound');
n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Fp1=1200;Fs1=1000;Ft=8000;wp1=tan(pi*Fp1/Ft);ws1=tan(pi*Fs1/Ft);wp=1;ws=wp1*wp/ws1;[n13,wn13]=cheb1ord(wp,ws,1,50,'s');
%语音信号采集
%计算语音信号的长度 %产生随机噪声
%语音信号加入噪声得到加噪信号 %快速傅里叶变换
%模拟的低通滤波器阶数和截止频率
DSP实验课程设计实验报告
[b13,a13]=cheby1(n13,1,wn13,'s');
%S域的频率响应的参数 [num,den]=lp2hp(b13,a13,wn13);
%S域低通参数转为高通的 [num13,den13]=bilinear(num,den,0.5);%利用双线性变换实现频率响应S域到Z域转
换 z13=filter(num13,den13,s);
%滤波 sound(z13,fs,nbits);
%回放滤波后的信号 m13=fft(z13);
%滤波后的信号频谱 figure;subplot(2,2,1);
%绘出滤波前的信号频谱 plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,2);
%绘出滤波后的信号频谱 plot(abs(m13),'r');title('滤波后信号的频谱','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,3);
%绘出滤波前的信号波形 plot(s);title('滤波前信号的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
%绘出滤波后的信号波形 plot(z13);title('滤波后的信号波形','fontweight','bold');axis([00000 100000-1 1]);grid;
结果如下:
DSP实验课程设计实验报告
可以看出,滤波后将原始信号绝大部分频谱滤掉,剩下噪声信号,不能采用。
(3)IIR带通滤波器设计
[y,fs,nbits]=wavread('OriSound');n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Ft=8000;Fp=1000;Fs=1200;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.^(-rp/20);
q=10.^(-rs/20);fpts=[wp ws];
%语音信号采集 %计算语音信号的长度 %产生随机噪声
%语音信号加噪
%快速傅里叶变换
%通带阻带波纹
DSP实验课程设计实验报告
mag=[1 0];dev=[p q];[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);
b21=fir1(n21,wn21,kaiser(n21+1,beta));
z21=fftfilt(b21,s);
sound(z21,fs,nbits);
m21=fft(z21);
figure(4);subplot(2,2,1);
plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,2);
plot(abs(m21),'r');title('滤波后信号的频谱','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,3);
plot(s);title('滤波前信号的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
plot(z21);title('滤波后的信号波形','fontweight','bold');axis([00000 100000-1 1]);grid;
结果如下:
%由kaiserord求滤波器的阶数和截止频率
%设计滤波器 %滤波
%回放滤波后的信号 %滤波后的信号频谱 %绘出滤波前的信号频谱
%绘出滤波后的信号频谱
%绘出滤波前的信号波形
%绘出滤波后的信号波形
DSP实验课程设计实验报告
可以看出,大部分噪声被去除,与低通IIR滤波器的效果差不多,稍好于低通。
(4)FIR低通滤波器
[y,fs,nbits]=wavread('OriSound');
n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Ft=8000;Fp=1000;Fs=1200;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.^(-rp/20);
q=10.^(-rs/20);fpts=[wp ws];
%语音信号采集
%计算语音信号的长度 %产生随机噪声
%语音信号加噪
%快速傅里叶变换
%通带阻带波纹
DSP实验课程设计实验报告
mag=[1 0];dev=[p q];[n21,wn21,beta,ftype]=kaiserord(fpts,mag,dev);%由kaiserord求滤波器的阶数和截止频
b21=fir1(n21,wn21,kaiser(n21+1,beta));
z21=fftfilt(b21,s);
sound(z21,fs,nbits);
m21=fft(z21);
figure(4);subplot(2,2,1);
plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,2);
plot(abs(m21),'r');title('滤波后信号的频谱','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,3);
plot(s);title('滤波前信号的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
plot(z21);title('滤波后的信号波形','fontweight','bold');axis([00000 100000-1 1]);grid;
结果如下:
率
%由fir1设计滤波器 %滤波
%回放滤波后的信号 %滤波后的信号频谱 %绘出滤波前的信号频谱
%绘出滤波后的信号频谱
%绘出滤波前的信号波形
%绘出滤波后的信号波形
DSP实验课程设计实验报告
可以看出:大部分的噪声频率被滤除,几乎完整的保留了原始信号的频谱,滤波效果最好,但是由于在低频部分仍然有随机信号的干扰,所以回放信号较原始信号音质稍差。
(5)FIR高通滤波器
[y,fs,nbits]=wavread('OriSound');n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Ft=8000;Fp=4000;Fs=3500;wp=2*Fp/Ft;ws=2*Fs/Ft;rp=1;rs=50;p=1-10.^(-rp/20);
%语音信号采集
%计算语音信号的长度 %产生随机噪声
%语音信号加噪
%快速傅里叶变换
%通带阻带波纹
DSP实验课程设计实验报告
q=10.^(-rs/20);fpts=[ws wp];mag=[0 1];dev=[p q];[n23,wn23,beta,ftype]=kaiserord(fpts,mag,dev);b23=fir1(n23,wn23,'high',kaiser(n23+1,beta));
%由fir1设计滤波器 z23=fftfilt(b23,s);
sound(z23,fs,nbits);
m23=fft(z23);
figure;subplot(2,2,1);
plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,2);
plot(abs(m23),'r');title('滤波后信号的频谱','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,3);
plot(s);title('滤波前信号的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
plot(z23);title('滤波后的信号波形','fontweight','bold');axis([00000 100000-1 1]);grid;
结果如下:
%滤波 %回放滤波后的信号 %滤波后的信号频谱 %绘出滤波前的信号频谱%绘出滤波后的信号频谱%绘出滤波前的信号波形%绘出滤波后的信号波形
DSP实验课程设计实验报告
可以看到,滤波后只剩部分高频噪声频率,原始语音信号频率被滤除,因此无法恢复语音信号。
(6)FIR带通滤波器
[y,fs,nbits]=wavread('OriSound');n = length(y);
Noise=0.2*randn(n,1);
s=y+Noise;
S=fft(s);
Fp1=1200;Fp2=3000;Fs1=1000;Fs2=3200;Ft=2200;wp1=tan(pi*Fp1/Ft);
wp2=tan(pi*Fp2/Ft);ws1=tan(pi*Fs1/Ft);ws2=tan(pi*Fs2/Ft);
%语音信号采集
%计算语音信号的长度 %产生随机噪声
%语音信号加噪
%快速傅里叶变换
%带通到低通滤波器参数转换
DSP实验课程设计实验报告
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');
z22=fftfilt(b22,s);
sound(z22,fs,nbits);
m22=fft(z22);
figure;subplot(2,2,1);
plot(abs(S),'g');title('滤波前信号的频谱','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,2);
plot(abs(m22),'r');title('滤波后信号的频谱','fontweight','bold');axis([0 80000 0 4000]);grid;subplot(2,2,3);
plot(s);title('滤波前信号的波形','fontweight','bold');axis([00000 100000-1 1]);grid;subplot(2,2,4);
plot(z22);title('滤波后的信号波形','fontweight','bold');axis([00000 100000-1 1]);grid;
结果如下:
%低通滤波器阶数和截止频率 %S域的频率响应的参数 %滤波
%回放滤波后的信号 %滤波后的信号频谱 %绘出滤波前的信号频谱
%绘出滤波后的信号频谱
%绘出滤波前的信号波形
%绘出滤波后的信号波形
DSP实验课程设计实验报告
可以看到,滤波器将部分低频滤去,也就滤掉了部分原始信号频率,因此无法正常恢复语音信号。
(8)设计GUI界面
创建一个GUI界面,可以方便的管理各个模块。
首先通过File-->New-->GUI创建一个GUI界面,然后对界面进行设计,最后对各个空间编写回调函数。
效果如下:
DSP实验课程设计实验报告
其中,“原始语音频谱分析”可以对原始语音信号进行波形和频谱的显示,“加噪后频谱分析”可以对加噪后语音信号进行波形和频谱的显示,“滤波器对加噪语音信号进行滤波模块”中的各滤波器控件分别可以利用相应的滤波器对加噪后的语音信号进行滤波处理并回放。
6.课程设计总结:
在这次课程设计中,我设计制作了加噪语音信号滤波提取的系统,综合运用了之前几次实验,尤其是滤波器设计方面的MATLAB知识,并最后得到了比较理想的效果。通过这次课程设计,我加深了对滤波器方面知识的理解。用自己设计的各种滤波器对污染信号进行处理,也让我更加清楚的理解了滤波器的滤波特性,比较并找到最合适的滤波器。
这次课程设计是一个不小的挑战,通过不断的学习和尝试,最终制作完成,在这个过程中我也有了很多的提高和收获。比如,如何在语音信号中添加噪声,如何灵活的利用各种滤波器对语音信号进行处理,如何用MATLAB设计GUI界面并对控件添加回调函数等。其中,印象最深的是GUI界面的设计。通过查找资料,我掌握了设计GUI基本界面的方法,把所
DSP实验课程设计实验报告
有的功能集中到一个界面中,操作简便又实用美观。当然,这次设计也让我认识到自身的不足,比如编程经验欠缺,知识联系能力不强等。但是通过不断的改进,我在这两方面都有了很大的提高,对课堂知识的掌握和精进有很大的帮助。
第四篇:频谱分析仪和信号分析仪区别及常见问题解答
频谱分析仪和信号分析仪区别及常见问题解答
频谱分析仪和信号分析仪这两个术语往往可以互换使用,不过两者在功能和能力上还是有一定区别。当今的分析仪可进行更全面的频域、时域和调制域信号分析,用“信号分析仪”来描述更为准确。
频谱分析仪:测量在仪器的整个频率范围内输入信号幅度随频率进行变化的情况。其最主要的用途是测量已知和未知信号的频谱功率。
矢量信号分析仪:测量在仪器的中频带宽内输入信号在单一频率上的幅度和相位。其最主要的用途是对已知信号进行通道内测量,例如误差矢量幅度、码域功率和频谱平坦度。
信号分析仪:同时执行频谱分析仪和矢量信号分析仪的功能。
频谱分析仪常见问题解答:
1、是否有不同类型的频谱分析仪?
有两类频谱分析仪,类型由获取信号频谱所使用的方法决定。扫描调谐频谱分析仪使用超外差式接收机对一部分输入信号频谱进行下变频(使用电压控制振荡器和混频器),达到带通滤波器的中心频率。采用超外差式体系结构的电压控制振荡器在一系列频率上进行扫描,支持仪器完整频率范围的假设。快速傅立叶变换(FFT)分析仪计算离散傅立叶变换(DFT),这个数学过程可将输入信号的波形转换成其频谱分量。
2、我何时应使用台式频谱分析仪而不是手持式频谱分析仪?
台式频谱和信号分析仪提供卓越的技术指标和测量应用软件,而手持式频谱分析仪更适合现场工程师使用。
3、频谱分析仪能否得到实时结果?
可以,实时频谱分析仪使用了混合方法,即首先使用超外差技术将输入信号下变频到较低频率,然后使用 FFT 技术对其进行分析。
4、我能否使用频谱分析仪对信号进行解调?
通过将频谱分析仪或信号分析仪与 Agilent 89600 VSA 灵活调制分析软件或测量应用软件结合使用,您能够解调广泛的标准和通用数字信号与制式。
5、安捷伦提供什么类型的频谱分析仪?
安捷伦提供广泛的信号分析仪产品,包括扫描调谐和 FFT 频谱分析仪、频谱分析仪软件和频谱分析仪测量应用软件。
6、安捷伦频谱分析仪产品覆盖什么频率范围?
安捷伦提供从直流至 50 GHz 的多种频谱分析仪和信号分析仪产品,使用外部混频器可扩展到 325 GHz。
第五篇:DSP语音信号处理
摘
要
语音信号处理是研究数字信号处理技术和语音信号进行处理的一门学科,是一门新型的学科,是在多门学科基础上发展起来的综合性技术,它涉及到数字信号处理、模式识别、语言学。语音信号处理是研究用数字信号处理技术对语音信号处理的一门学科。处理的目的是要得到一些语音参数以便高效的传输或存储;或者是通过处理的某种运算以达到某种用途的要求。语音信号处理又是一门边缘学科。如上所诉,它是“语言语音学”与“数字信号处理”两个学科相结合的产物。
语音信号处理属于信息科学的一个重要分支,大规模集成技术的高度发展和计算机技术的飞速前进,推动了这一技术的发展。在数字音频技术和多媒体技术迅速发展的今天,传统的磁带语音录放系统因体积大、使用不便、放音不清晰而受到了巨大挑战。本次课程设计提出的体积小巧,功耗低的数字化语音存储与回放系统,可以有效的解决传统的语音录放系统在电子与信息处理的使用中受到的限制。
本文提出了语音信号处理课程建设的实验环节中的一些考虑,作为专业课程的学习,实验内容不能仅仅停留在验证性实验上,还应增加实验延伸的设计要求,是学生加深对理论分析认识的同时,强调培养学生的实际动手能力和知识综合运用能力。从而提高语音信号的教学和实验的质量。实验内容采用MATLAB编程实现,不仅易于语音信号处理的实现,更易引导学生完成实验延伸的设计。
第一章 绪论
1.1选题背景
在我们的现实生活中从磁带、录像带到CD、VCD、DVD;从黑白电视机、彩色电视机、高清晰度电视机到具有数字信号处理功能的电视机;从留声机、录音机到语音信箱;现在正出在模拟信息到数字信息的变革之中,传统的磁带语音录放系统因其体积大,使用不便,在电子与信息处理的使用中受到许多限制。
虽然,目前广播电视系统尚未实现真正的数字化,相信在不久的将来,真正的数字电视、数字收音机、数字收录机将进入家庭。所以,研究音频信号的数字化存储、处理和回放系统有着很重要的现实意义。
通过设计语音信号实验箱可以对语音信号实现各种形式的变换,因此学会对语音信号的处理,也可自行研究将此语音处理技术应用到现实生活中。
1.2课题意义
语音信号处理的一门比较实用的电子工程的专业课程,语音是人类获取信息的重要来源和利用信息的重要手段,通过语言相互传递信息是人类最重要的基本功能之一,语音是人类特有的功能,它是创造和记载几千年来人类文明史的根本手段,是人类最重要、最有效、最常用和最方便的交换信息的形式。
语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域刚也涉及面很广的交叉学科。
第二章 课程设计要求及系统原理
2.1 课程设计基本要求
(1)学会MATLAB的使用,掌握MATLAB的程序设计方法;
(2)掌握在windows环境下语音信号的采集方法;
(3)掌握数字信号处理的基本概念,基本理论和基本方法;
(4)掌握MATLAB设计方法;
(5)学会用MATLAB对信号进行分析和处理。
2.2 系统基本原理
语音采集原理是,人耳能听到的声音是一种范围为20Hz—20kHz,而一般语音频率最高为3.4kHz。语音的采集是指语音声波信号经麦克风和高频放大器转换成有一定幅度的模拟量电信号,然后再转换成数字量的全过程。
本次设计的基本原理是对语音的录音和放音进行数字化控制。其中,关键技术在于:为了增加语音存储时间,提高存储器的利用率,采用了非失真压缩算法对语音信号进行压缩后再存储,而在回放时再进行解压缩;同时,对输入语音信号进行数字滤波以抑制杂音和干扰,从而确保了语音回放的可靠质量。
通过设计一个GUI实验箱,并添加相应的控制控件,添加一个声音文件,通过MATLAB编程,使其通过各种按钮实现语音信号处理的各种功能,最后做成一个完整的语音信号处理实验箱。
第三章 设计方案论证
3.1 设计理论依据
3.1.1采样定理:
在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中最高频率fmax的2倍时,则采样之后的数字信号完整的保留了原始信号中的信号,一般实际应用中保证采样频率为信号最高频率的5—10倍;采样定理又称奈奎斯特定理。
3.1.2采样频率:
采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调、衡量声卡、声音文件的质量标准。采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也就越精确,采样频率与声音频率之间有一定的关系,根据奈奎斯特理论,只有采样频率高于声音信号最高频率的2倍的时候,才能把数字信号表示的声音还原成为原来的声音,这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。
3.1.3采样位数与采样频率
采样位数即采样值或取样值,用来衡量声音波动变化的参数,是指声卡在采集和播放声音文件时候使用数字声音信号的二进制为数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。
采样位数和采样频率对于音频接口来说是最为重要的两个基本指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。每增加一个采样位数相当于力度范围增加了6dB。采样位数越多则捕捉到的信号越精确。对于采样率来说你可以想象它类似于一个照相机。显然采样率越高,计算机提取的声音越多,对于原始的还原也越加精确。
第四章 图形用户界面设计
4.1 图形用户界面概念
图形用户界面或图形用户接口是指采用图形方式显示的计算机操作环境由用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。
GUI是MATLAB提供的图形用户界面开发环境,提供了一系列用于创建图形用户界面的工具,从而简化界面布局和编程工作。
4.2用户界面设计
4.2.1 GUI设计模板
在MATLAB主窗口中,选择File菜单中的New菜单项,再选择其中的GUI命令,就会显示图形用户界面的设计模板。
MATLAB为GUI设计一共准备了四个模板,分别是Blank GUI、GUI with Uicontrols、GUI with Axes and Menu、Modal Question Dialog。
当用户选择不同的模板时,在GUI设计模板界面的右边就会显示出与该模板对应的GUI图形。
4.2.2 GUI设计窗口
在GUI设计模板中选中一个模板,然后单击OK按钮,就会显示GUI设计窗口,选择不同的GUI设计模式时,在GUI设计窗口中显示的结果是不一样的。
GUI设计窗口由菜单栏、工具栏、空间工具栏以及图形对象设计区等部分组成。GUI设计窗口的菜单栏有File、Edit、View、Layout、Tools和Help六个菜单项,使用其中的命令可以完成图形用户界面的设计操作。
4.2.3 GUI设计窗口的基本操作
(1)前面板的设计:在GUI设计窗口创建图形对象后,通过双击该对象,就会显示该对象的属性编辑器。如下图所示。例如,创建一个Push Button对象,并设计该对象的属性值。
图4-1 按钮属性编辑器
通过以上的按钮属性编辑器可以根据个人情况对按钮的名称、颜色、大小等方面的属性进行修改,使按钮在视觉上变的更加完美。
(2)按钮功能的实现:在GUI设计窗口创建按钮后,通过右键单击按钮,选择View callbacks下的callback对相应的按钮进行编程,使按钮实现相应的功能,如下图所示对按钮的响应功能进行设置。
图4-2 按钮功能编辑器
进入到按钮程序编辑窗口,通过编程即可实现按钮的相应功能,如下图:
图4-3 按钮的编程实现界面
通过对各个按钮控件的修改,和对m文件程序的添加就完成对GUI窗口的设计,最后得到的图形化操作界面如下图所示:
图4-4 图形化操作界面
4.2.4 语音的录入与打开
在MATLAB中,[y,fa,bits]=wavread(‘Blip’,[N1 N2]);用于读取语音,7
采样值放在向y中,fs表示采样频率,bits表示采样位数。[N1 N2]表示读取从N1点到N2点的值。
Suond(x,fs,bits);用于对声音的回放,向量y则就代表了一个信号也就是说可以像处理一个信号表达式一样处理这个声音信号。
第五章 课程设计的软件实现
5.1 部分函数语法格式
读wav文件: x=wavread(‘filename’)数组a及b中元素相乘: a.*b 创建图形窗口命令: figure 绘图函数: plot(x)坐标轴: axis([xmin xmax ymin ymax])坐标轴注解: xlabel(‘„’)ylabel(‘„’)图例注解: legend(‘„’)一阶高通滤波器: y=filter([1-0.09375],1,x)分帧函数: f=enframe(x,len,inc)x为输入语音信号,len指定了帧长,inc指定帧移,函数返回为nXlen的一个矩阵,每一行都是一帧数据。
5.2语音信号处理的相关函数
5.2.1语音信号的短时谱:
周期性声门波可表示为:
(5-1)其中,g[n]是声门波的单周期的波形,p[n]是间隔为P的周期采样序列。当u[n]通过线性非时变声道,且该声道的单位冲击响应为h[n]时,声道输出为:
(5-2)为了观察一段语音,需要降生到输出乘以一个一时刻τ 为中心的窗函数 w[n,τ] ,即得到:
(5-3)
这段语音信号的频域表达式为:
(5-4)
即语音信号的谱包络为
语谱图就是现实时变频谱幅度特征的图形表达式为:
(5-5)
将语音信号短时谱程序写入到MATLAB中得到单色语谱图的波形如下:
图5-1 语音信号单色语谱图
5.2.2 自相关方法估计语音信号的声道参数:
由均方预测误差最小的得到正则方程:
(5-6)
其中,(5-7)
在最佳解时的误差为
(5-8)
在自相关法中式5-6,式5-8变为
(5-9)
(5-10)由式5-9和式5-10可列出方程组式5-11
(5-11)
解方程组式5-9求出线性预测系数,通过误差式5-11可求出增益G
(5-12)
加窗后信号频谱图如下:
图5-2 加窗后信号频谱图
通过以上的方法,改变参数分别求得4极点模型频率响应和6极点模型频率响应,6极点波形如下图所示:
图5-3 六极点波形图
最后通过以上方法用一个函数分别实现以上三个功能,三个波形显示在一个界面,通过观察图形,查看它们之间的分别。三者比较所得到的波形如下:
图5-4 三者比较波形图
5.2.3 基音周期检测
数据为浊音语音信号speech1_10k(10000样点/秒)用25ms的汉明窗对语音信号speech1_10k进行加窗处理,并画出所得到的加窗信号的自相关函数,再用根据中心消波法及三电平中心消波法原理改进程序,最后对比中方法基音检测的效果并分析结果。
实验原理及方法
(1)自相关检测原理:对于离散的数字语音信号序列x(n),如果周期N,则自相关函数也是同周期的周期函数。即:x(n)=x(n+N)。清音信号没有周期性,他的自相关函数也没有周期。浊音新海具有准周期性。自相关基音检测正是利用这一性质对语音信号进行基音检测的。
(2)中心消波法检测原理:中心消波处理是使用如下图所示的中心消波函数进行处理的:
图5-5 中心消波检测图
(3)三电平消波法原理:为了减少自相关计算中的乘法运算,可以把上述中心消波以后的信号y(n)的自相关用两个信号的互相关代替,其中一个信号是y(n)另一个信号是对y(n)进行三电平量化产生的结果。且这个信号有三种可能的取值,因而这里的互相关计算只需要做加减法,而这个互相关序列的周期性与y(n)的自相关序列是近似相同的。
三电平法对语音信号处理得到的波形如下:
图5-6 三电平法波形图
中心消波法得到的波形如下图:
图5-7 中心消波法波形图
5.3 GUI实验箱操作界面设计
通过对各个控件的编程和对参数的设计,最后得到的GUI实验箱操作界
面如下图所示,通过界面上的各个按钮即可实现相应的功能。
图5-8 GUI实验箱操作界面
第六章 心得体会
通过本次课程设计完成了对语音信号的读取与打开,与课题的要求十分相符;初略的完成了界面的设计,但也存在相当的不足,达到了打开语音文件,显示已定波形。语音信号处理时语音学与数字信号处理技术相结合的交叉学科,将语音当做一种特殊的信号,即一种“复杂向量”来看待。也就是说,体现了数字信号处理技术。
本次课程设计时希望将数字信号处理技术应用与某一实际领域,这里就是指对语音的处理。作为存储与计算机中的语音信号,其本身就是离散化了的向量,我们只需要将这些离散的量提取出来美酒可以对其进行处理了。
本次课设,用到了处理数字信号的强有力工具MATLAB,通过MATLAB李的几个命令函数的调用,很轻易的在实际化语音与数字信号的理论之间搭了一座桥。
最后,还利用了MATLAB的另一强大功能——GUI界面设计。设计出了一个建议的用户应用界面,可以让人实现界面操作。
通过本次课程设计让我更加了解了语音信号处理在现实中的强大的应用空间,同时查阅了很多相关的资料,应用MTALAB软件来完成,熟练掌握了MATLAB软件,本次课程设计要求用GUI设计模块,查阅了很多资料,更加深刻的陆奥了了这方面知识。
本次课程设计,我明白了理论的学习需要在实践中才能得到巩固。在课程设计中,只有动手慢慢研究,才能真正了解MATLAB软件平台中可以直接设计数字滤波器的各个函数的调用,对设计GUI实验箱的所有函数的运用有了比较好的认识。
通过这个课程设计,我学到了很多MATLAB和语音信号的知识,提高了自己在语音信号设计方面的知识能力,动手能力和思维能力都得到了一定的提升,希望自己以后可以更多的继续学习这一门课程设计方面的知识。
附 录
1.源程序代码:
参考文献
[1] 刘庆华 陈紫强《基于MATLAB和DSP的语音信号处理课程的建设》 电气电子教学学报 2006 10(3):124-128 [2] 张力 《MATLAB在语音信号处理辅助教学中的应用》 电气电子教学学报 2005 27卷2期:96-99 [3] 邓立新 杨震《信息技术融入“语音信号处理”课程的教学实践》电气电子教学学报 2005 27卷5期:13-16 [4] 胡航,《语音信号处理》 哈尔滨工业大学出版社 2005年2月,第二版:135-137 [5] 张平,《MATLAB基础与应用》 北京航空航天大学出版社 2007,第二版:85-92 [6] 谢德芳 《数字信号处理》 北京科学出版社 2005,第一版
[7] 张雄伟 《现代语音处理技术及应用》 机械工业出版社 2006,第二版 [8] 吴家安 《语音编码技术及应用》 机械工业出版社 2006 第一版 [9] 刘幺和 宋庭新 《语音识别与控制应用技术》 科学出版社 2008 第二版
[10] 李昌立 吴善培 《数字语音编码实用教程》 人民邮电出版社 2004 第一版
[11] 姚天仁 《数字语音处理》 华中科技大学出版社 1992 第二版 [12] 朱敏雄 《计算机语音技术(修订版)》 北京航空航天大学出版社 2002 第一版
[13] 王炳锡 《语音编码》 西安电子科技大学出版社 2002 第一版