基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx

上传人:b****3 文档编号:6248738 上传时间:2023-05-09 格式:DOCX 页数:7 大小:55.68KB
下载 相关 举报
基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx_第1页
第1页 / 共7页
基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx_第2页
第2页 / 共7页
基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx_第3页
第3页 / 共7页
基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx_第4页
第4页 / 共7页
基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx_第5页
第5页 / 共7页
基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx_第6页
第6页 / 共7页
基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx_第7页
第7页 / 共7页
亲,该文档总共7页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx

《基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx(7页珍藏版)》请在冰点文库上搜索。

基于MATLAB的语音信号采集和双线性变换法滤波器设计.docx

基于MATLAB的语音信号采集和双线性变换法滤波器设计

第一章语音信号的采集

第一节语音信号采集的介绍

在Matlab环境中,主要可以通过以下几种方法驱动声卡,采集语音信号:

1.将声卡作为对象处理采集语音信号Matlab将声卡作为对象处理,其后的一切操作都不与硬件直接相关,而是通过对该对象的操作来作用于硬件设备(声卡)。

操作时首先要对声卡产生一个模拟输入对象(ai),给ai对象添加一个通道设置采样频率后,就可以启动设备对象,开始采集数据,采集完成后停止对象并删除对象。

2.调用wavrecord功能函数采集语音信号。

wavrecord功能函数只适用于windows95/98/N平台,它使用windows声音输入设备录制声音。

函数调用方式:

wavrecord(N,fs,ch,nbits);N:

采集的样本数据量;fs:

样本采集频率,为8000Hz、11025Hz、22050Hz和44100Hz之一,默认值为11025Hz;ch:

样本采集通道,1为单声道,2为双声道,默认值为1(单声道);nbits:

每个样本的位数(或称解析度),‘double’、‘single’或‘int16’为16位,‘uint8’为8位;3.运用audiorecorder对象采集语音信号audiorecorder(fs,nbits,ch)可以创设一个audiorecorder对象。

fs:

样本采集频率,为8000Hz、11025Hz、22050Hz和44100Hz之一,默认值为8000Hz;nbits:

每个样本的位数,8位或16位,默认值为8位;ch:

样本采集通道,1为单声道,2为双声道,默认值为1(单声道);audiorecorder对象创设后,就可以进行相应的录音、暂停、停止、播放以及数据读取等操作。

 

第二节语音信号的采集过程

配置好数据采集设备的参数后,使用start命令便可启动声卡开始语音信号的采集。

采集到的数据被暂时存放在PC机的内存里,理论上可采集的最大数据量是由PC机的内存容量决定的,这一点相对于一般的数据采集系统而言有较强的优势。

MATLAB还可以记录采集过程中出现错误,如出错的时间、错误产生的来源以及数据采集设备的状态等信息都会被记录下来作为以后工作的参考。

如图1所示,语音采集子系统是通过RealtekAC’97型声卡和Matlab的数据采集工具箱实现的。

其中RealtekAC’97型声卡的

采样位数为16位,支持8~44.1kHz的采样速率,可以满足语音采集的硬件要求[1]。

Matlab自带的数据采集工具箱里面,提供了专门用

于语音采集的命令和函数。

数据采集的硬件设备的内部特性对Matlab的接口完全是透明的,通过调用Matlab提供的语音采集函数

和命令可以对其进行访问。

而且,Matlab可以对其采集的数据进行实时的分析,也可在存储后再进行处理。

图1语音信号采集框图

 

第二章语音信号的MATLAB处理

第一节语音信号的特点

通过对大量语音信号的观察和分析发现,语音信号主要有下面两个特点:

在频域内,语音信号的频谱分量主要集中在300~3400Hz的范围内。

利用这个特点,可以用一个防混迭的带通滤波器将此范围内的语音信号频率分量取出,然后按8kHz的采样率对语音信号进行采样,就可以得到离散的语音信号。

在时域内,语音信号具有“短时性”的特点,即在总体上,语音信号的特征是随着时间而变化的,但在一段较短的时间间隔内,语音信号保持平稳。

在浊音段表现出周期信号的特征,在清音段表现出随机噪声的特征。

下面是一段语音信号的时域波形图(图2)和频域图(图3),由这两个图可以看出语音信号的两个特点。

图2语音信号时域波形图图3语音信号频域波形图

 

第三章语音信号的分析

第一节语音信号分析技术

语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理[8]。

而且,语音合成的音质好坏,语音识别率的高低,也都取决于对语音信号分桥的准确性和精确性。

因此语音信号分析在语音信号处理应用中具有举足轻重的地位。

贯穿于语音分析全过程的是“短时分析技术”。

因为,语音信号从整体来看其特性及表征其本质特征的参数均是随时间而变化的,所以它是一个非乎稳态过程,不能用处理乎稳信号的数字信号处理技术对其进行分析处理。

但是,由于不同的语音是由人的口腔肌肉运动构成声道某种形状而产生的响应,而这种口腔肌肉运动相对于语音频率来说是非常缓慢的,所以从另一方面看,虽然语音倍号具有时变特性,但是在一个短时间范围内(一般认为在10~30ms的短时间内),其特性基本保持不变即相对稳定,因面可以将其看作是一个准稳态过程,即语音信号具有短时平稳性。

所以任何语音信号的分析和处理必须建立在“短时”的基础上.即进行“短时分析”,将语音信号分为一段一段来分析其特征参数,其中每一段称为一“帧”,帧长一般取为10~30ms。

这样,对于整体的语音信号来讲,分析出的是由每一帧特征参数组成的特征参数时间序列。

根据所分析出的参数的性质的不同,可将语音信号分析分为时域分析、频域分析、倒领域分析等;时域分析方法具有简单、计算量小、物理意义明确等优点,但由于语音信号最重要的感知特性反映在功率谱中,而相位变化只起着很小的作用,所以相对于时域分析来说频域分析更为重要。

本文将简要介绍时域分析、频域分析。

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

语音信号的时域分析就是分析和提取语音信号的时域参数。

进行语音分析时,最先接触到并且也是最直观的是它的时域波形。

语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。

时域分析通常用于最基本的参数分析及应用,如语音的分割、预处理、大分类等。

这种分析方法的特点是:

表示语音信号比较直观、物理意义明确。

实现起来比较简单、运算且少。

可以得到语音的一些重要的参数。

④只使用示波器等通用设备,使用较为简单等。

语音信号的时域参数有短时能量、短时过零率、短时白相关函数和短时平均幅度差函数等,这是语音信号的一组最基本的短时参数,在各种语音信号数字处理技术中都要应用[6]。

在计算这些参数时使用的一般是方窗或汉明窗。

对语音信号进行分析,发现发浊音时,尽管声道有若干个共振峰,但由于声门波引起谱的高频跌落,所以其话音能量约集中在3kHz以下。

而发清音时,多数能量出现在较高频率上。

高频就意味着高的平均过零率,低频意味着低的平均过零率,所以可以认为浊音时具有较低的过零率,而清音时具有较高的过零率。

当然,这种高低仅是相对而言,并没方精确的数值关系。

 

第三节语音信号的频域分析

语音信号的频域分析就是分析语音信号的频域持征。

从广义上讲,语音信号的频域分析包括语音信号的频谱、功率谱、倒频谱、频谱包络分析等,而常用的频域分析方法有带通滤波器组法、傅里叶变换法、线件预测法等几种。

本文介绍的是语音信号的傅里叶分析法。

因为语音波是一个非平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里叶变换不能用来直接表示语音信号,而应该用短时傅里叶变换对语音信号的频谱进行分析,相应的频谱称为“短时谱”。

根据时域和频域的分析,采集信号后的波形如图所示

图4

第四章语音信号的综合仿真分析

第一节MATLAB波形图

图5

由图可以看出滤波后波形和频谱都有很大的变化语音信号虑除了高频部分。

第二节试验程序

%做原始语音信号的时域图形

fs=22050;%语音信号采样频率为22050

[fname,pname]=uigetfile('1.wav','OpenWaveFile');

file=[pname,fname];

[x1,fs,bits]=wavread(file);%读入声音文件(*.wav)

sound(x1,22050);%播放语音信号

y1=fft(x1,1024);%对信号做1024点FFT变换

f=fs*(0:

511)/1024;

figure

(1)

plot(x1)%做原始语音信号的时域图形

title('原始语音信号');

xlabel('timen');

ylabel('fuzhin');

figure

(2)

freqz(x1)%绘制原始语音信号的频率响应图

title('频率响应图')

figure(3)

subplot(2,1,1);

plot(abs(y1(1:

512)))%做原始语音信号的FFT频谱图

title('原始语音信号FFT频谱')

subplot(2,1,2);

plot(f,abs(y1(1:

512)));

title('原始语音信号频谱')

xlabel('Hz');

%语音信号通过低通滤波器

clear;closeall;

[fname,pname]=uigetfile('1.wav','OpenWaveFile');

file=[pname,fname];

[y,fs,bits]=wavread(file);%读入声音文件(*.wav)

sound(y,fs,bits);

Y=fft(y,4096);

fb=3000;fc=3500;As=27;Ap=1;fs=22050;

wc=2*fc/fs;wb=2*fb/fs;

[N,Wc]=buttord(wc,wb,1,27,'s')

[b,a]=butter(N,Wc,'s');

[h,f]=freqz(a,b);

plot(f*fs/(2*pi),abs(h));

figure

(1);

freqz(b,a,512,fs);

x=filter(b,a,y);

X=fft(x,4096);

figure

(2);

subplot(2,2,1);plot(y);title('滤波前信号波形');

subplot(2,2,2);plot(Y);title('滤波前信号频谱');

Subplot(2,2,3);plot(x);title('滤波后信号波形');

Subplot(2,2,4);plot(abs(X));title('滤波后信号频谱');

sound(x,fs,bits);

第五章设计体会

这次课程设计,给我留下了很深的印象。

虽然只是短暂的一周,但在这期间,却让我受益匪浅。

通过这次课程设计,使我对语音信号有了全面的认识,对数字信号处理的知识又有了深刻的理解,在之前数字信号与处理的学习以及完成课后的作业的过程中,已经使用过MATLAB,对其有了一些基础的了解和认识。

通过这次练习是我进一步了解了信号的产生、采样及频谱分析的方法。

以及其中产生信号和绘制信号的基本命令和一些基础编程语言。

让我感受到只有在了解课本知识的前提下,才能更好的应用这个工具;并且熟练的应用MATLAB也可以很好的加深我对课程的理解,方便我的思维。

这次设计使我了解了MATLAB的使用方法,学会分析滤波器的优劣和性能,提高了分析和动手实践能力。

同时我相信,进一步加强对MATLAB的学习与研究对我今后的学习将会起到很大的帮助。

一周的课程设计虽然结束了,但是在这期间所学的知识和老师的指导却让我难以忘记。

 

附录

参考文献:

1.陈怀琛.MATLAB及在电子信息课程中的应用.北京电子工业出版社.2008.1

2.张文.基于MATLAB的语音信号的滤波域实现.山西电子技术.2008.2

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

4.程佩青.数字信号处理教程(第三版).清华大学出版社.2007.2

5.陈后金.数字信号处理(第2版).高等教育出版社.2008.11

6.

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

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2