信号与系统三级项目报告

  • 格式:docx
  • 大小:235.53 KB
  • 文档页数:13

基于Matlab的语音信号采集与分析姓名:徐福娟刘星星李端梁笑笑彦茹班级:通信工程四班课程名称:信号与系统指导教师:闫盛楠2015年6月徐福娟,刘星星,梁笑笑,彦茹,李端(燕山大学信息科学与工程学院)摘要:此次三级项目的内容是:通过运用Matlab语言实现语音信号的采集、分析和处理。

项目实施过程中:我们首先进行男女生语音信号的采集,并对其频谱图进行分析,得出了电话可以对语音信号采用8kHz的采样速率的结论。

之后通过男女生主要频率在高频段所占比例不同来区分男女生。

最后对采集的信号进行降采样并验证抽样定理。

前言:通过这次三级项目的实施,我们对Matlab语言的运用、信号的采集与分析及抽样定理都有了深刻的理解,为了对这次整个的过程进行更系统的整理,我们以报告的形式将其记录下来。

在这次项目的开展过程中,李端和彦茹进行最后ppt的制作以及资料的搜集;刘星星完成语音信号的采集,并对其进行频域分析;徐福娟进行对男女生语音信号的区分部分;梁笑笑完成对信号不同程度的降采样并验证抽样定理。

在整个过程中,我们既有分工,又相互合作,共同解决棘手的问题。

最终完成了三级项目要求的内容:验证了电话可以对语音信号采用8kHz的采样速率的结论;能够简单的区分男女生语音信号。

正文一、基本原理1.1语音信号的采集一是利用录音机录取一段语音信号,然后利用MATLAB中的wavrea d函数从外面读入该音频信号即可。

另外一种方式是在MATLAB中z执行以下操作即可得到一个语音信号:R = audiorecorder( 44100, 16 ,2 ) ;%创建一个保存音频信息的对象,它包含采样率,时间和录制的音频信息等等。

44100表示采样为44100Hz,16为用16bits存储,2为两通道即立体声。

record(R); %开始录制,此时对着麦克风说话即可。

myspeech = getaudiodata(R);%得到以n*2列数字矩阵存储的刚录制的音频信号。

wavwrite(myspeech,44100,16,'myspeech');%myspeech表示要存入的波形矩阵,44100表采样率,16 为以16bits存储,'myspeech'为存储的文件名。

在本次试验中我们采用的是第二种方法。

1.2语音信号的波形显示及分析信号的频谱分析就是计算机信号的傅里叶变换。

连续信号与系统的傅里叶分析显然不便于计算机计算,使其应用受到限制。

而FFT是一种时域和频域均离散化的变换,适合熟知的运算,成为计算机分析离散信号和系统的有用工具。

对语音信号的分析我们采用如下方案:将采集好的声音信号导入程序中,使用plot 画出该语音信号的时域波形,对原始波形进行用fft函数傅里叶变换后,再使用plot就可画出其频谱。

1.3男女生信号鉴别由于男女生天生的差别,在声音上女生的高频部分会明显的高于男生,为此我们男女生的语音信号进行滤波处理,高频部分多的是女生信号,高频部分少的是男生信号。

1.4抽样定理的验证对语音信号进行不同程度的降采样处理,将得到的信号的波形与原信号比较,同时聆听此时的声音信号与原信号是否有失真。

根据抽样定理的内容我们可知:当抽样的频率高于奈奎斯特频率时,系统恰好能够无失真的恢复出原信号。

因此在采用高于奈奎斯特频率的采样率进行采样时,得到的信号不会发生失真。

二、研究方法及相关工具应用MATLAB软件中提供的相关函数对语音信号进行波形仿真,并对语音信号进行其他的相关处理来分析信号。

三、研究的主要内容(a) 语音信号采集方法(b) 语音信号时频域波形显示及仿真结果(c) 男、女声波形区分方法(d) 抽样定理和信号的降采样处理及仿真四、项目内容的具体研究和分析结果4.1 语音信号采集方法及时频域波形显示我们先自己通过声卡采集男女生声音信号,将文件保存为(**.WAV)的格式,然后通过Matlab里的‘audioread’函数将文件导入到Matlab里,通过调用函数显示出声音信号的频域波形。

具体的函数如下:[x,fs]=audioread('**.wav');sound(x,fs);n = length (x);F=44100;X=fft(x,n);f=F/length(X);F1=f*(0:(length(X)-1));subplot(211);plot(0:10/(length(x)-1):10,x);title('**信号波形');subplot(212);plot(F1,abs(X));title('**信号频谱');4.2 男、女声波形区分方法4.2.1 男、女声的差别在生活中我们感觉男生的声音雄浑低沉,女生的声音尖细清脆。

男、女声在频率方面存在很大的差别:一是男、女声的基音频率有差别,男声的基音频率大致在100—200HZ之间,而女声的基因频率则在200—350HZ之间;二是男声低频成份比较多,女声高频成份比较多。

4.2.2区分方法根据男、女声的差别我们可以总结出三种区分男、女声的方法:一是根据男、女声基因频率的范围来区分;二是根据男、女声频率主要集中在哪个频段来区分;三是根据男、女声低频成份、高频成分所占的比例来区分。

基音频率区分法:基音频率区分法是基于男女声的基因频率的差别的一种方法。

男声的基音频率大致在100—200HZ之间,而女声的基因频率则在200—350HZ之间。

将采集的语音信号的基频通过椭圆滤波器从频谱中分离出来,画出男、女声基频频谱图,根据基频频谱图中的频率范围区分是男声还是女声。

代码实现:%filename:manwoman.m%different man from woman.%============================================= ==============clear;if nargin<1;action='initialized';end;file='*.wav';[x,fs,bits]=wavread(file); % 读入声音文件(*.wav)%============================================== =============% pause;data1=x(:,1);n=0:length(x)-1;time=n/fs;subplot(3,1,1) % 绘制2行1列的第1张子图plot(time,data1) % 以时间为横轴,数据为纵轴作图xlabel('Time (sec.)') % 标注横坐标ylabel('Signal Level (Volts)') % 标注纵坐标grid on % 添加网格% pause;% 对采集数据作滤波处理blocksize =length(data1); % 计算窗函数长度window = hanning(blocksize); % 计算汉宁窗函数(此函数为MATLAB自带)data2=window.*data1; % 对数据先作加窗处理% wp=[70,400]; %100Hz--400Hz% wp=wp*2/fs;wp=3000*2/fs;[b,a]=ellip(4,0.1,20,wp); % 构造椭圆滤波器data=filter(b,a,data2); % 求加窗处理后的数据经过滤波器的响应subplot(3,1,2) % 绘制2行1列的第1张子图plot(time,data) % 以时间为横轴,数据为纵轴作图xlabel('Time (sec.)') % 标注横坐标%ylabel('Signal Level (Volts)') % 标注纵坐标grid on % 添加网格% pause;[xmax,index]=max(data1);timewin=floor(0.015*fs);xwin=data1(index-timewin:index+timewin);[y,lags]=xcov(xwin);subplot(3,1,3)plot(lags,y)grid onylen=length(y);halflen=(ylen+1)/2 +30;yy=y(halflen: ylen);[ymax,maxindex] = max(yy);fmax=fs/(maxindex+30);disp(['Maximum occurred at ', num2str(fmax), ' Hz'])波形显示由于我们采集的语音信号较少,所以我们得出的男声的基频范围大致在500HZ之内,女声信号的基频范围大致在1000HZ之内。

由波形图我们可以看出第一张图为男声信号基频频谱图,第二张图为女声基频频谱图。

这种区分方法优点在于给出的基频是一个范围而不是某一个具体的阈值,这样使得大多数的判断比较准,当然少数的判断会出错。

但是这种方法的缺点在于需要根据对大量的声音信号的基频进行分析从而得出这个范围,如果对语音信号基频分析的数量不足,则不能得出一个具有一般意义的基频范围,会导致判断失误。

男、女声频率区分法:男女声频率区分法是基于男、女声频率分布差别的一种方法,男声频率主要集中在60—550HZ,女声频率主要集中在150—1200HZ。

将采集的语音信号进行频谱变换,得出其频谱图,找到频谱图中幅度最大点所对应的频率值,然后根据这个频率值来判断是男声还是女声。

这种方法的缺点在于需要大量的采样来得出男、女声频率的范围,而且频率范围的重叠部分比较大,这部分频率就无法进行区分。

频率成份比例区分法:频率成份比例区分法是计算男、女声的高频成份在高频范围内的比例和低频成份在低频范围内的比例,然后由高频比值和低频比值的大小来区分是男声还是女声。

这种方法的缺点是需要确定高频和低频的范围,但是我们不能简单地说高于某个值的是高频,低于这个值的就是低频。

而且需要设置高频值和低频值,这个值的设定需要大量的实验才能得出,如果样本较少则得出的值不具有代表性。

4.3 抽样定理和信号的降采样处理及仿真 4.3.1抽样定理时域抽样定理说明:一个频域受限的信号f(t) 如果频谱只占据-w m ~w m 的范围,则信号f(t)可以用等间隔的抽样值唯一地表示。

而间隔必须不大或者说,最低抽样频率为2f(m)4.3.2信号的降采样处理及仿真信号的将采样就是降低信号的采样频率。

我们采集语音信号时使用的采样频率是44100HZ ,然后我们将采样频率降为8000HZ ,4000HZ 。

代码实现:y=wavread('*.wav'); %读入声音文件 n=length(y);y1=y(1:5.5:length(y));sound(y1,8000,16); %频率降为其1/5.5 F=8000; Y=fft(y1,n); f=F/length(Y);F1=f*(0:(length(Y)-1)); magY=abs(y1); angY=angle(y1); n = length (y1);m 12)2(m)m f f ωπ=(其中subplot(411);plot(0:10/(length(y1)-1):10,y1);title('降为8000hz男声信号波形');subplot(412);plot(F1,abs(Y));title('降为8000hz男声信号频谱'); subplot(413);plot(magY);title('降为8000hz男生信号幅值'); subplot(414);plot(angY);title('降为8000hz男生信号相位');波形显示:可以从图中看出采样频率将为8000HZ时信号无失真,采样频率将为4000HZ 时信号发生了很大程度的失真。