信号与系统三级项目

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

四、项目内容的具体研究和分析结果4.1语音信号采集方法及时频域波形显示我们先自己通过声卡采集男女生声音信号,将文件保存为(**.WAV)的格式,然后通过Matlab里的‘audioread’函数将文件导入到Matlab里,通过调用函数显示出声音信号的频域波形。具体的函数如下:functionpushbutton5_Callback(hObject,eventdata,handles)h=waitbar(0,'pleasewait');fori=1:1000waitbar(i/1000,h)endclose(h)globalx1;globalx2;axes(handles.axes1);plot(x1);ylabel('幅值');xlabel('t');title('时域图1');axes(handles.axes3);plot(x2);ylabel('幅值');xlabel('t');title('时域图2');functionpushbutton6_Callback(hObject,eventdata,handles)globalx1;globalx2;globalfs1;globalfs2;axes(handles.axes4);fs=8000;globalL1;L1=length(x1);NFFT=2^nextpow2(L1);%Nextpowerof2fromlengthofyY=fft(x1,NFFT)/L1;f=fs/2*linspace(0,1,NFFT/2+1);%Plotsingle-sidedamplitudespectrum.plot(f,2*abs(Y(1:NFFT/2+1)));ylabel('Magnitude(dB)');xlabel('Frequency(Hz)');title('频谱图');axes(handles.axes5);fs=8000;globalL2;L2=length(x2);NFFT=2^nextpow2(L2);%Nextpowerof2fromlengthofY=fft(x2,NFFT)/L2;f=fs/2*linspace(0,1,NFFT/2+1);%Plotsingle-sidedamplitudespectrum.plot(f,2*abs(Y(1:NFFT/2+1)));ylabel('Magnitude(dB)');xlabel('Frequency(Hz)');title('频谱图');时域:男声VS女声男声女声频域:男声VS女声4.2男、女声波形区分方法4.2.1男、女声的差别通过观察得到的图形,我们可以看出男声与女声的声音大部分集中于200-4000Hz之间,而女声较男声更多的声音集中在较为低的频率段。所以女生声音有点比较尖的感觉,男声音听起来比较洪亮浑厚。男声女声4.2.2区分方法根据男、女声的差别我们可以总结出三种区分男、女声的方法:一是根据男、女声基因频率的范围来区分;二是根据男、女声频率主要集中在哪个频段来区分;三是根据男、女声低频成份、高频成分所占的比例来区分。我们小组采用方法一‘通过观察得到的图形,我们可以看出男声与女声的声音大部分集中于200-4000Hz之间。人类基音范围人70~350hz,男声大概100~200hz,女生200~350hz。据此我们以200hz为界限判断男女声音。用汉宁窗函数滤去输入音频的高频部分,后经过椭圆滤波器(获得更窄的过渡带宽和较小的阻带波动)近似求出基音频率。代码实现:functionpushbutton7_Callback(hObject,eventdata,handles)globalx1;globalfs1;data1=x1(:,1);n=0:length(x1)-1;%对采集数据作滤波处理blocksize=length(data1);%计算窗函数长度window=hanning(blocksize);%计算汉宁窗函数data2=window.*data1;%对数据先作加窗处理%wp=[70,400];%100Hz--400Hz%wp=wp*2/fs;wp=3000*2/fs1;[b,a]=ellip(4,0.1,20,wp);%构造椭圆滤波器data=filter(b,a,data2);%求加窗处理后的数据经过滤波器的响应[xmax,index]=max(data1);timewin=floor(0.015*fs1);xwin=data1(index-timewin:index+timewin);[y,lags]=xcov(xwin);ylen=length(y);halflen=(ylen+1)/2+30;yy=y(halflen:ylen);[ymax,maxindex]=max(yy);fmax=fs1/(maxindex+30);disp(['Maximumoccurredat',num2str(fmax),'Hz'])f=fmax;justify=f;%Hzifjustify200%limitHz以下判断是男的msgbox('Thisisahandsomeboy')elsemsgbox('Thisisafairgirl')end4.3抽样定理和信号的降采样处理及仿真4.3.1抽样定理时域抽样定理说明:一个频域受限的信号f(t)如果频谱只占据-wm~wm的范围,则信号f(t)可以用等间隔的抽样值唯一地表示。而间隔必须不大或者说,最低抽样频率为2f(m)4.3.2信号的降采样处理及仿真代码实现:functionpushbutton13_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton13(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)s=str2double(get(handles.edit1,'String'));s=1/s;m12)2(m)mff(其中globalx1;axes(handles.axes6);globalL1;%jiangcaiyangglobalfs1;globalM1;k1=[1:L1/s];%确定抽取位置y1=x1(s*k1);%实现抽取后的数据M1=length(y1);%计算抽取后数据点数图%抽取数据在原采样频率FS下的波形频谱分析yf=fft(y1);%求频谱%ty=(0:M-1)/FS;%计算数据点时刻%抽取数据在FS/2采样频率下的波形频谱分析fz1=(0:M1/2)*(fs1/s)/M1;%确定频谱图频率刻度plot(fz1,abs(yf(1:M1/2+1)));%绘制频谱图title('新采样率下新频谱图');%加标题%实现数据转换globalx2;axes(handles.axes7);globalL2;%jiangcaiyangglobalfs2;globalM2;k2=[1:L2/s];%确定抽取位置y2=x2(s*k2);%实现抽取后的数据M2=length(y2);%计算抽取后数据点数图%抽取数据在原采样频率FS下的波形频谱分析yf2=fft(y2);%求频谱%ty=(0:M-1)/FS;%计算数据点时刻%抽取数据在FS/2采样频率下的波形频谱分析fz2=(0:M2/2)*(fs2/s)/M2;%确定频谱图频率刻度plot(fz2,abs(yf2(1:M2/2+1)));%绘制频谱图title('新采样率下新频谱图');%加标题%实现数据转换最终可得出声音信号的主要频率范围为0~2500Hz,而根据采样定理可知,该声音信号采样频率应不小于5000Hz(奈奎斯特频率),故使用8000Hz的采样频率可以保证声音在失真较少的条件下进行信号的采样与恢复,但当采样频率远远小于5000Hz,声音可能完全失真。五、总结本次三级项目我们主要进行了语音信号的采集,并对采集的语音信号进行时域和频域波形显示及仿真,然后对采集的语音信号进行降采样处理和男女声的区分。使用Matlab语言实现语音信号的采集,时域和频域波形显示,使我们对信号时域和频域有了更深的理解,而它们之间的桥梁就是傅里叶变换,通过仿真验证抽样定理,理解奈奎斯特频率,即最低允许的抽样频率:根据人类基音范围,区分男声与女声,经过我们小组成员的不懈努力,但这个还是方法存在一定的误差。我们小组使用了GUI界面,能直观看到整个实验过程,加深了此项目的理解。

1 / 7
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功