完整word版基于Matlab的语音信号分析与处理Word格式.docx
- 文档编号:7526650
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:25
- 大小:373.17KB
完整word版基于Matlab的语音信号分析与处理Word格式.docx
《完整word版基于Matlab的语音信号分析与处理Word格式.docx》由会员分享,可在线阅读,更多相关《完整word版基于Matlab的语音信号分析与处理Word格式.docx(25页珍藏版)》请在冰点文库上搜索。
数字滤波器实质上是一种运算过程——用来描述离散系统输入与输出关系的差分方程的计算或卷积计算。
数字滤波器的实质是用一有限精度算法实现的离散时间线性时不变系统,以完成对信号进行滤波处理的过程。
它是数字信号处理的一个重要分支,具有稳定性好、精度高、灵活性强、体积小、质量轻等诸多优点。
数字滤波器的分类:
数字滤波器根据不同的分类标准可以将滤波器分成不同的类别。
(1)根据单位冲激响应h(n)的时间特性分类
无限冲激响应(IIR)数字滤波器
有限冲激响应(FIR)数字滤波器
(2)根据实现方法和形式分类
递归型数字滤波器
非递归型数字滤波器
快速卷积型
(3)根据频率特性分类
低通数字滤波器、高通数字滤波器、带通数字波器、带阻数字滤波器[1]
2总体设计思想
2.1语音信号的采集
Windows自带了一个录音机程序(简称录音机),通过它可以驱动声卡采集、播放和简单处理语音信号。
语音信号的采集可以用麦克风直接录制人的语音,也可以通过音频线或者MIDI线将收音机、电视机或磁带录机中的语音信号采集到计算机中。
在录音机中可以进行简单的声音处理,如加大或降低音量,加速或减速,声音的反转或添加回音效果等。
加速或减速的改变可以完成变音功能,反转可以达到对声音文件保密的功能。
本设计用是收音机接到电脑上用录音机录的,保存起来以备处理。
[2]
2.2语音信号处理工具的选择
语音信号的进一步处理分析工作选用了matlab平台。
MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。
MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,不断完善MATLAB产品以提高产品自身的竞争能力Matlab的数据分析和处理功能十分强大,运用它来进行语音信号的分析、处理和可视化相当便捷。
在编程效率、程序可读性、可移植性和可扩充性上matlab远远优于其它的高级编程语言,而且编程易学、直观,代码非常符合人们的思维习惯。
另外matlab为用户提供了丰富的windows图形界面设计方法,使用户能够在利用其强大的数值计算功能的同时可设计出友好的图形界面,它受到了越来越多的用户的欢迎
Matlab几乎可以在各种机型和操作系统上运行,所以在可移植性和可扩充性上,matlab远优越于其他的高级编程语言。
Matlab语言具有强大的数值计算能力和视图能力,其偏微分方程工具箱提供了有限元求解的一个强大而灵活的环境,并且有限元网格可做精细划分以满足要求。
但是,和其他的高级语言相比,matlab程序的执行速度较慢。
在目前电脑处理速度不断提升的情况下,如果实时性要求不是非常高的情况下,使用matlab开发就不存在此类问题了。
2.3数字滤波器的设计
本设计在matlab平台上,设计了IIR和FIR滤波器各种类型的滤波器。
用以对语音原始信号及加噪的语音信号进行滤波,重点对加噪信号进行了滤波。
对于IIR滤波器,它的极点可以在单位圆内的任何位置,实现IIR滤波器的阶次可以较低,所用的存储单元较少,效率高,又由于IIR数字滤波器能够保留一些模拟滤波器的优良特性,因此应用很广。
设计IIR数字滤波器的常用方法是从模拟滤波器来设计数字IIR滤波器。
模拟滤波器设计已经有了一套相当成熟的方法,它不但有完整的设计公式,而且还有较为完整的图表供查询,因此充分利用这些已有的资源将会给数字滤波器的设计带来很大的方便。
再将模拟滤波器转换为数字滤波器,其转换方法有冲激响应不变法和双线性Z变换法。
一般,当着眼于滤波器的时域瞬态响应时,采用脉冲响应不变法较好,而其它情况下,对于IIR的设计,大多采用双线性变换法。
对于FIR滤波器,它有精确、严格的线性相位特性,并且可以做成既是因果的又是稳定的系统。
所以FIR滤波器的应用越来越广泛。
[3]
IIRDF
FIRDF
(1)相位一般是非线性的
(1)相位可以做到严格线性
(2)不一定稳定
(2)一定是稳定的
(3)不能用FFT作快速卷积
(3)信号通过系统可采用快速卷积
(4)一定是递归结构
(4)主要是非递归结构,也可含递归环节
(5)对频率分量的选择性好(零极点可同时起作用)
(5)选择性差
(6)相同性能下阶次较低
(6)相同性能下阶次高
(7)有噪声反馈,噪声大
(7)噪声小
(8)运算误差大,有可能出现极限环振荡
(8)运算误差小,不会出现极限环振荡
(9)
设计有封闭形式的公式,一次完成
(9)没有封闭形式的设计公式,须靠经验与反复调试
(10)对计算手段的要求较低
(10)一般需用计算机计算
(11)主要用于设计分段常数的标准低通、高通、带通、带阻和全通滤波器
(11)还可设计正交变换器、微分器、线性预测器、回波抵消器、均衡器、线性调频器等各种网络,适用范围广
表2.1IIR滤波器与FIR滤波器的性能比较
从上面的简单比较我们可以看到IIR与FIR滤波器各有所长,所以在实际应用时应该从多方面考虑来加以选择。
例如,从使用要求上来看,在对相位要求不敏感的场合,如语言通讯等,选用IIR较为合适,这样可以充分发挥其经济高效的特点,而对于图像信号处理,数据传输等以波形携带信息的系统,则对线性相位要求较高,如果有条件,采用FIR滤波器较好,当然,在实际应用中应考虑经济上的要求以及计算工具的条件等多方面的因素。
整体来看,IIR滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;
FIR滤波器没有稳定性问题,线性相位,但阶数多,延迟大。
而不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:
(1)按照实际任务的要求,确定滤波器的性能指标。
(2)用一个因果、稳定的离散线性时不变系统的系统函数逼近性能要求。
根据系统的不同的要求可以考虑用IIR系统函数或FIR系统函数去逼近。
(3)利用有限精度算法实现系统函数,包括结构选择、字长选择等。
3语音信号分析和滤波处理
3.1语音信号的采集
把语音信号并保存为.wav文件,长度小于30秒,并对语言信号进行采样;
录制的软件可以使用Windows自带的录音机,或者也可以使用其它专业的录音软件,录制时需要配备录音硬件(如麦克风),为了方便比较,需要在安静、无噪音、干扰小的环境下录。
3.2语音信号的频谱分析
首先画出语音信号的时域波形,然后对话音信号进行频谱分析。
在MATLAB中,可以采用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。
其程序如下:
[y,Fs,bits]=wavread('
d:
\声音片段01.wav'
);
%读出信号,采样率和采样位数Sound(y);
Y=fft(y,4096);
figure
(1);
subplot(2,2,1);
plot(y);
title('
原时域波形'
ylabel('
amplitude'
xlabel('
n'
subplot(2,2,2);
plot(abs(Y));
%对频域取模
axis([0,4096,0,3]);
%横纵坐标确定
原频谱特性'
%标题
%Y轴显示
frequency(hz)'
%X轴显示程序运行的结果如下图所示:
图3.1语音信号的频谱分析
3.3语言信号处理
语音信号分析:
用MATLAB绘制出语音信号的时域波形图和原始语音信号的频率响应图和原始语音信号的FFT频谱图。
程序设计如下:
fs=22050;
%语音信号采样频率为22050
[x,fs,bits]=wavread('
wzf.wav'
sound(x,fs,bits);
%播放语音信号
y1=fft(x,1024);
%对信号做1024点FFT变换
f=fs*(0:
511)/1024;
figure
(1)
plot(x)%做原始语音信号的时域波形图
原始语音信号时域图'
timen'
fuzhin'
figure
(2)
freqz(x)%绘制原始语音信号的频率响应图
频率响应图'
)
figure(3)
plot(f,abs(y1(1:
512)));
原始语音信号频谱'
Hz'
fudu'
如下图3.2所示:
图3.2语言信号分析
含噪语音信号的合成
在MATLAB软件平台下,给原始的语音信号叠加上噪声,噪声类型分为如下几种:
(1)单频噪色(正弦干扰);
(2)高斯随机噪声。
绘出加噪声后的语音信号时域和频谱图,在视觉上与原始语音信号图形对比,也可通过Windows播放软件从听觉上进行对比,分析并体会含噪语音信号频谱和时域波形的改变。
程序代码如下:
ding.wav'
%读取语音信号的数据,赋给变量x
%sound(x)
%t=0:
1/22050:
(size(x)-1)/22050;
x1=rand(1,length(x))'
;
%产生一与x长度一致的随机信号
x2=x1+x;
(size(x)-1);
%加入正弦噪音
%Au=0.3;
%d=[Au*sin(6*pi*5000*t)]'
%x2=x+d;
sound(x2);
subplot(2,1,1)
plot(x)%做原始语音信号的时域图形
原语音信号时域图'
subplot(2,1,2)
plot(x2)%做原始语音信号的时域图形
加高斯噪声后语音信号时域图'
y2=fft(x2,1024);
plot(abs(y1))
plot(abs(y2))
加噪语音信号频谱'
程序运行可以听到声音,得到的结果图3.3和图3.4所示:
图3.3高斯随机噪声
图3.4正弦sin噪声的加噪语音信号
4滤波器的设计[4]
4.1巴特沃斯低通滤波器
对加入高斯随机噪声和正弦噪声的语音信号进行滤波。
用双线性变换法设计了巴特沃斯数字低通IIR滤波器对两加噪语音信号进行滤波,并绘制了巴特沃斯低通滤波器的幅度图和两加噪语音信号滤波前后的时域图和频谱图。
%随机噪声合成
x2=rand(1,length(x))'
y=x+x2;
%加入正弦噪声
%d=[Au*sin(2*pi*500*t)]'
%y=x+d;
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);
[bz,az]=bilinear(b,a,Fs);
%用双线性变换法实现模拟滤波器到数字滤波器的转换
[H,W]=freqz(bz,az);
%绘制频率响应曲线
plot(W*Fs/(2*pi),abs(H))
grid
f1=filter(bz,az,y);
plot(t,y)%画出滤波前的时域图
滤波前的时域波形'
plot(t,f1);
%画出滤波后的时域图
滤波后的时域波形'
sound(f1);
%播放滤波后的信号
F0=fft(f1,1024);
y2=fft(y,1024);
subplot(2,1,1);
plot(f,abs(y2(1:
%画出滤波前的频谱图
滤波前的频谱'
fuzhi'
F1=plot(f,abs(F0(1:
%画出滤波后的频谱图
滤波后的频谱'
程序运行可以播放滤波前面的语音信号,对比滤波前面的语音效果,得到的结果分别图3.5和图3.6所示:
图3.5高斯噪声滤波
图3.6正弦噪声滤波
4.2频率响应S域到Z域的变换:
利用双线性变换实现频率响应S域到Z域的变换法设计了巴特沃斯低通数字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,'
%求低通滤波器的阶数和截止频率
[b11,a11]=butter(n11,wn11,'
%求S域的频率响应的参数
[num11,den11]=bilinear(b11,a11,0.5);
%利用双线性变换实现频率响应S域到Z域的变换
[x,fs,nbits]=wavread('
n=length(x);
%求出语音信号的长度
t=0:
(n-1);
%Au=0.03;
f2=filter(num11,den11,y)
plot(t,y)
滤波前的加高斯噪声时域波形'
plot(t,f2);
滤波前加高斯噪声的频谱'
程序运行可以播放滤波前面的语音信号,对比滤波前面的语音效果,得到的结果分别图3.7和图3.8所示:
图3.7高斯噪音滤波
图3.8正弦噪音滤波
4.3设计数字带通滤波器
设计了巴特沃斯带通数字IIR滤波器对加了高斯随机噪声和正弦噪声的语音信号进行滤波,并绘制了两滤波器滤波后的语音信号时域图和频谱图。
Wp=[0.3*pi,0.7*pi];
Ws=[0.2*pi,0.8*pi];
Ap=1;
As=30;
[N,wn]=buttord(Wp/pi,Ws/pi,Ap,As);
%计算巴特沃斯滤波器阶次和截止频率
[b,a]=butter(N,wn,'
bandpass'
%频率变换法设计巴特沃斯带通滤波器
%[db,mag,pha,grd,w]=freqz_m(b,a);
%数字滤波器响应
%Plot(w/pi,mag);
%Title('
数字滤波器幅频响应|H(ejOmega)|'
%n=length(x);
f=filter(bz,az,y);
freqz(b,1,512)
f2=filter(bz,az,y)
sound(f2);
%播放滤波后的语音信号
程序运行可以听到声音,得到的结果分别图3.9和图3.10所示:
图3.9高斯噪声滤波
图3.10正弦噪声滤波
4.4窗函数法的FIR滤器波
使用窗函数法,选用海明窗设计了数字FIR低通滤波器对加了高斯随机噪声和正弦噪声的语音信号进行滤波,并绘制了两滤波器滤波后的语音信号时域图和频谱图。
Au=0.03;
d=[Au*sin(2*pi*500*t)]'
y=x+d;
wp=0.25*pi;
ws=0.3*pi;
wdelta=ws-wp;
N=ceil(6.6*pi/wdelta);
%取整
wn=(0.2+0.3)*pi/2;
b=fir1(N,wn/pi,hamming(N+1));
%选择窗函数,并归一化截止频率
F1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 基于 Matlab 语音 信号 分析 处理
![提示](https://static.bingdoc.com/images/bang_tan.gif)