基于MATLAB的语音信号录制采集和分析的程序设计2.docx

上传人:b****4 文档编号:5409550 上传时间:2022-12-16 格式:DOCX 页数:12 大小:1.64MB
下载 相关 举报
基于MATLAB的语音信号录制采集和分析的程序设计2.docx_第1页
第1页 / 共12页
基于MATLAB的语音信号录制采集和分析的程序设计2.docx_第2页
第2页 / 共12页
基于MATLAB的语音信号录制采集和分析的程序设计2.docx_第3页
第3页 / 共12页
基于MATLAB的语音信号录制采集和分析的程序设计2.docx_第4页
第4页 / 共12页
基于MATLAB的语音信号录制采集和分析的程序设计2.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

基于MATLAB的语音信号录制采集和分析的程序设计2.docx

《基于MATLAB的语音信号录制采集和分析的程序设计2.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的语音信号录制采集和分析的程序设计2.docx(12页珍藏版)》请在冰豆网上搜索。

基于MATLAB的语音信号录制采集和分析的程序设计2.docx

基于MATLAB的语音信号录制采集和分析的程序设计2

摘要

随着计算机和信息科学的飞速发展,数字信号处理逐渐发展成为一门独立的学科,成为信息科学的重要组成部分,在语音处理、雷达、图像处理、通信、生物医学工程等众多领域中得到广泛应用。

Matlab语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,Matlab功能强大、简单易学、编程效率高,深受广大科技工作者的喜爱。

特别是Matlab还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行语音信号分析、处理和设计。

语音信号的抽样、频谱分析,滤波器的设计及语音信号的滤波,通过数字信号处理课程的理论知识的综合运用。

从实践上初步实现对数字信号的处理。

关键词:

语音处理抽样频谱分析滤波器

 

目录

摘要I

第一节设计要求1

第二节设计方案1

第二章语音信号的采集及加噪2

第一节语音信号的录制2

第二节语音信号的时域分析3

第三节语音信号加噪和频谱分析5

第三章滤波器设计7

第一节FIR和IIR数字滤波器的选择7

第二节用FIR滤波器语音信号进行滤波9

一滤波器的程序设计9

二滤波前后信号比较10

第三节比较回放语音信号12

第四章心得体会13

参考文献14

第一章课程设计方案提出

第一节设计要求

要求录制一段自己的语音信号后,在MATLAB软件中采集语音信号、回放语音信号并画出语音信号的时域波形和频谱图;对所采集的信号加入干扰噪声,对加入噪声进行播放,并进行时域和频谱分析;对比及早前后的时域图和频谱图,分析讨论采用什么的滤波器进行滤除噪声。

第二节设计方案

图1.1语音信号录制流程图

首先,录制一段语音信号(如图1.1);然后,利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量。

再将该向量看作一个普通的信号,对其进行FFT变换实现频谱分析;随后,利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。

最后;再依据实际情况对它进行滤波。

对于波形图与频谱图(包括滤波前后的对比图)都可以用MATLAB画出。

我们还可以通过sound命令来对语音信号进行回放,以便在听觉上来感受声音的变化。

第二章语音信号的采集及加噪

第一节语音信号的录制

利用PC机上的声卡和WINDOWS操作系统可以进行数字信号的采集。

将话筒输入计算机的语音输入插口上,启动录音机。

按下录音按钮,接着对话筒说话“语音信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度,点击放音按钮,可以实现所录音的重现。

以文件名“shijiebei”保存入D:

\MATLAB\work中。

文件存储器的后缀默认为.wav,这是WINDOWS操作系统规定的声音文件存的标准。

具体操作如下:

a.打开开始/程序/附件/娱乐/录音机(如图3.1);

图3.1

b.用windowsmediaplayer播放一首音乐并用MIC对着耳机录音或自已说话录音(按

键),到10秒时停止(按

键)(如图3.1);

图3.2图3.3

c.将录制文件加存为D:

/MATLAB7/work中,文件名为shijiebei.wav(如图3.2、图3.3和图3.4);

图3.4

第二节语音信号的时域分析

在MATLAB软件平台下,利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。

再对其进行采样,记住采样频率和采样点数。

通过使用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中。

接下来,对语音信号shijiebei.wav进行采样。

其采样程序如下:

[y,fs,nbits]=wavered(‘E:

\sheji\shijiebei’);

即把语音信号加载入Matlab仿真软件平台中。

然后,画出语音信号的时域波形,再对语音信号进行频谱分析。

MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:

Xk=fft(xn,N)

参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。

,当N小于xn的长度时,fft函数计算xn的前N个元素,忽略其后面的元素。

在本次设计中,我们利用fft对语音信号进行快速傅里叶变换,就可以得到信号的频谱特性。

其程序如下:

[y,fs,nbits]=wavread('E:

\sheji\shijiebei');

sound(y,fs,nbits);%回放语音信号

N=length(y);%求出语音信号的长度

Y=fft(y,N);%傅里叶变换

subplot(2,1,1);

plot(y);title('原始信号波形');

subplot(2,1,2);

plot(abs(Y));

title('原始信号频谱')

程序运行结果如下图:

图3.5原始信号波形及频谱

第三节语音信号加噪和频谱分析

MATLAB中产生高斯白噪声非常方便,有两个产生高斯白噪声的两个函数。

我们可以直接应用两个函数:

一个是WGN,另一个是AWGN。

WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声。

也可直接用randn函数产生高斯分布序列。

在本次课程设计中,我们是利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。

Randn函数有两种基本调用格式:

Randn(n)和Randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。

在这里,我们选用Randn(m,n)函数。

语音信号添加噪声及其频谱分析的主要程序如下:

[y,fs,nbits]=wavread('E:

\sheji\shijiebei’);

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('加噪语音信号的频域波形');

程序运行结果如下图:

图3.6加噪后的波形及频谱分析

第三章滤波器设计

第一节FIR和IIR数字滤波器的选择

IIR滤波器和FIR滤波器的设计方法完全不同。

IIR滤波器设计方法有间接法和直接法,间接法是借助于模拟滤波器的设计方法进行的。

其设计步骤是:

先设计过渡模拟滤波器得到系统函数H(s),然后将H(s)按某种方法转换成数字滤波器的系统函数H(z)。

FIR滤波器必须采用间接法,常用的方法有窗函数法、频率采样发和切比雪夫等波纹逼近法。

对于线性相位滤波器,经常采用FIR滤波器。

数字滤波器种类很多,根据其实现的网络结构或者其冲激响应函数的时域特性,可分为两种,即有限冲激响应(FIR,FiniteImpulseResponse)滤波器和无限冲激响应(IIR,InfiniteImpulseResponse)滤波器。

FIR滤波器结构上主要是非递归结构,没有输出到输入的反馈,系统函数H(z)在极点处收敛,极点全部在z=0处(因果系统),因而只能用较高的阶数达到高的选择性。

FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位,就是不同频率分量的信号经过fir滤波器后他们的时间差不变,这是很好的性质。

FIR数字滤波器是有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,这对实时的信号处理很重要。

FIR滤波器因具有系统稳定,易实现相位控制,允许设计多通带(或多阻带)滤波器等优点收到人们的青睐。

IIR滤波器采用递归型结构,即结构上带有反馈环路。

IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。

同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。

下面我们着重介绍用窗函数法设计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默认为哈明窗。

其中可选的窗函数有RectangularBarlrttHammingHannBlackman窗,其相应的都有实现函数。

函数butter,cheby1和ellip设计IIR滤波器时都是默认的双线性变换法,所以在设计滤波器时只需要代入相应的实现函数即可

第二节用FIR滤波器语音信号进行滤波

一滤波器的程序设计

由频谱图可以看出信号能量集中在低频部分,为了减少无用的高频分量我设计了以下的FIR低通滤波器将其滤除。

该设计采用窗函数法(汉明窗)来完成以下指标的低通滤波器。

通带截频fp=3000Hz,阻带截频fs=3500Hz,通带最大衰减0.3dB,阻带最小衰减50dB,采样频率fs为信号源采样频率22050Hz。

源程序如下:

Wp=3000*2*pi;Ws=3500*2*pi;Ap=0.3;As=50;fs=22050;

wp=Wp/fs;ws=Ws/fs;%归一化通带截频,阻带截频

wdelta=ws-wp;%过渡带宽

%由阻带最小衰减指标确定选用汉明窗,并确定其阶数

N=ceil(6.6*pi/wdelta)

Nw=N;

n=0:

N-1;

m=n-alpha+eps;%理想滤波器脉冲响应

wc=(wp+ws)/2;%理想截频

hd=sin(wc*m)./(pi*m);%采用汉明窗设计

win=hamming(Nw);

h=hd.*win';

b=h;

[H,f]=freqz(b,1,512,fs);%绘制滤波器的幅频响应图

plot(f,20*log10(abs(H)))

xlabel('频率');ylabel('幅度');

title(‘滤波器幅频特性’);gridon;

幅频特性曲线如下所示:

图3.7滤波器幅频特性曲线

二滤波前后信号比较

源程序如下:

[x,fs,bits]=wavread('E:

\sheji\shijiebei');%信号读取

sound(x,fs);

y=fftfilt(b,y);%滤波输出

figure

(2)

subplot(2,1,1);plot(x),title('输入信号')

%绘制输入信号

subplot(2,1,2);plot(y)%绘制输出信号

xlabel('时间/s'),title('输出信号')

sound(y,fs);%输入输出频谱

X=fft(x);

Y=fft(y);

figure(3);

subplot(2,1,1);plot(abs(X));

xlabel('频率');ylabel('幅度');

title('输入信号频谱');gridon;

subplot(2,1,2);plot(abs(Y));

xlabel('频率');ylabel('幅度');

title('输出信号频谱');gridon;

时域图如下:

图3.8原信号与滤波后时域波形比较

频谱图如下:

图3.9原信号与滤波后信号频谱图比较

第三节比较回放语音信号

经过以上的加噪声滤波处理后,可在Matlab中用函数sound对声音进行回放。

其调用格式:

sound(y,Fs),sound(y)和sound(y,Fs,bits)。

可以察觉滤波前后的声音有明显的变化。

通过上面的频谱图可以很清晰地观察到经过滤波后与滤波前存在明显差别,滤波后的频谱比加噪语音信号的频谱清晰,滤波后的声音显得比较低沉,因为原始信号经过低通滤波器后,低通滤波器已经把信号高频部分滤掉了,只剩下低频部分。

 

第四章心得体会

这次课程设计历时一个星期,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次设计,进一步加深了对数字信号处理的了解,让我对它有了更加浓厚的兴趣。

但是在编写程序时,也遇到了不少问题,特别是程序语法,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。

同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

总的来说,这次课程设计还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。

最后,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢

 

参考文献

1、陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:

电子工业出版设,2008.1

2、张文.基于MATLAB的语音信号的滤波与实现[J].山西电子技术出版社.2008.2

3、徐靖涛.基于MATLAB的语音信号分析与处理[J]重庆科技学院学报2008.1

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1