语音信号处理系统方案设计书Word文件下载.docx

上传人:b****5 文档编号:20272905 上传时间:2023-01-21 格式:DOCX 页数:22 大小:645.73KB
下载 相关 举报
语音信号处理系统方案设计书Word文件下载.docx_第1页
第1页 / 共22页
语音信号处理系统方案设计书Word文件下载.docx_第2页
第2页 / 共22页
语音信号处理系统方案设计书Word文件下载.docx_第3页
第3页 / 共22页
语音信号处理系统方案设计书Word文件下载.docx_第4页
第4页 / 共22页
语音信号处理系统方案设计书Word文件下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

语音信号处理系统方案设计书Word文件下载.docx

《语音信号处理系统方案设计书Word文件下载.docx》由会员分享,可在线阅读,更多相关《语音信号处理系统方案设计书Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。

语音信号处理系统方案设计书Word文件下载.docx

2设计任务

利用Matlab设计一个简单的数字语音信号分析系统,利用GUI设计友好的图形用户界面,实现数字语音信号读取,时域波形显示,频谱分析,设计数字滤波器滤除噪声,对语音信号的参数进行计算分析等功能。

具体任务是:

酽锕极額閉镇桧猪訣锥。

(1)对原始数字语音信号进行读取。

(2)对原始数字语音信号加入干扰噪声,画出原始信号及带噪信号的时域波形,利用FFT进行频域分析,画出相应波形。

彈贸摄尔霁毙攬砖卤庑。

(3)针对数字语音信号频谱及噪声频率,设计合适的数字滤波器滤除噪声。

(4)对噪声滤除前后的语音进行时频域分析。

(5)对语音信号部分时域参数进行计算。

(6)设计图形用户界面(包含以上功能)。

(选作)采用LabVIEW进行仿真设计,实现系统的功能,要求给出系统的前面板和框图,并记录仿真结果。

3设计方案论证(手写)

本课题是对语音信号进行处理,要经过语音信号的采集,频谱分析,加干扰噪声,滤波器设计,进行滤波和图形用户界面设计等几个步骤。

所需要用到的理论依据有:

謀荞抟箧飆鐸怼类蒋薔。

⑴采样定理

在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:

fs.max>

=2fmax,则采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍;

采样定理又称奈奎斯特定理。

厦礴恳蹒骈時盡继價骚。

⑵采样频率

采样频率(也称为采样速度或者采样率)定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。

采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。

采样频率只能用于周期性采样的采样器,对于非周期性采样的采样器没有规则限制。

采样频率与声音频率之间有一定的关系,根据奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。

这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。

茕桢广鳓鯡选块网羈泪。

⑶语音的录入与打开

在MATLAB中,[y,fs,bits]=wavread('

Blip'

[N1N2])。

用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。

[N1N2]表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)[10]。

鹅娅尽損鹌惨歷茏鴛賴。

sound(x,fs,bits)。

用于对声音的回放。

向量x则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。

籟丛妈羥为贍偾蛏练淨。

⑷时域信号的FFT分析

FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。

預頌圣鉉儐歲龈讶骅籴。

在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。

函数FFT用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的FFT,函数FFT的另一种调用格式为y=fft(x,N),式中,x,y意义同前,N为正整数。

函数执行N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;

若向量x的长度大于N,则函数截短x使之长度为N。

渗釤呛俨匀谔鱉调硯錦。

⑸语音信号的频域分析

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

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

本次选用的是语音信号的傅里叶分析法,即对信号进行FFT变换。

铙誅卧泻噦圣骋贶頂廡。

⑹数字滤波器的设计步骤

不论是IIR滤波器还是FIR滤波器的设计都包括三个步骤:

①按照实际任务的要求,确定滤波器的性能指标。

②用一个因果、稳定的离散线性时不变系统的系统函数去逼近这一性能指标。

根据不同的要求可以用IIR系统函数,也可以用FIR系统函数去逼近。

擁締凤袜备訊顎轮烂蔷。

③利用有限精度算法实现系统函数,包括结构选择、字长选择等。

⑺图形用户界面基本概念

图形用户界面(GraphicalUserInterface,GUI)是由窗口、按键、菜单、文字说明等对象(Objects)构成的一个用户界面。

用户通过一定的方法(如鼠标、键盘)选择激活这些图形对象,实现计算、绘图等。

贓熱俣阃歲匱阊邺镓騷。

创建图形用户界面须具有三类基本元素:

(1)组件:

图形化控件(如按钮、编辑框、列表框等)、静态元素(如文本字符串)、菜单和坐标系。

(2)图形窗口:

GUI的每一个组件都须安排在图形窗口中。

(3)回应:

如用户用鼠标单击或用键盘输入信息后,程序要有相应的动作。

4设计内容

4.1语音信号分析设计

(1)根据设计要求分析系统功能,掌握设计中所需理论阐明设计原理(抽样频率、量化位数的概念,抽样定理;

信号的FFT分析;

数字滤波器设计原理和方法,各种不同类型滤波器的性能比较)。

坛摶乡囂忏蒌鍥铃氈淚。

(2)对语音信号做FFT,进行频谱分析,画出信号的时域波形图和频谱图。

Matlab程序:

[x,fs]=wavread('

mei5.wav'

)。

subplot(2,1,1)

plot(x)

title('

原语音信号时域波形'

xlabel('

k'

ylabel('

x'

N=length(x)。

k=0:

N-1。

X=fft(x)。

subplot(2,1,2)

plot(k,abs(X))

原语音信号频域波形'

X'

原信号的图形:

(3)对语音信号加入干扰噪声,对语音信号进行回放(利用sound函数),感觉加噪前后声音的变化。

对其做FFT,进行频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析。

蜡變黲癟報伥铉锚鈰赘。

加入干扰噪声的matlab程序:

Y=fft(y)。

plot(abs(Y))

y=0.007*cos(2.7475*k)。

plot(y)

axis([-2050-0.150.15])

干扰信号时域波形'

y=0.1cos(207475k)'

axis([016000025])

干扰信号频域波形'

加入的干扰噪声:

对原信号加入干扰噪声的matlab程序:

x1=wavread('

)'

x2=x1+y。

plot(x2)

加入噪声信号时域波形'

X2=fft(x2)。

plot(abs(X2))

加入噪声信号频域波形'

加入干扰噪声后的图形:

(4)根据带噪语音信号的特点,设计合适的数字滤波器,绘制所设计滤波器的幅频和相频特性。

wp=0.2*pi。

ws=0.4*pi。

Rp=1。

As=15。

T=1。

OmegaP=wp/T。

OmegaS=ws/T。

[cs,ds]=afd_butt(OmegaP,OmegaS,Rp,As)。

[b,a]=imp_invr(cs,ds,T)

[db,mag,pha,w]=freqz_m(b,a)。

subplot(2,1,1)。

plot(w/pi,mag)。

幅度特性'

axis([0,1,0,1.1])

subplot(2,1,2)。

plot(w/pi,db)。

衰减特性'

axis([0,1,-40,5])。

所设计滤波器的特性:

(5)用所设计的滤波器对带噪语音信号进行滤波。

对滤波后的语音信号进行FFT频谱分析。

记录处理过程中所得各种波形及频谱图。

買鲷鴯譖昙膚遙闫撷凄。

h=filter(b,a,x2)。

fs=16000。

sound(h,fs)

w=2*pi*k/N。

plot(w/pi,h)

滤波后语音信号时域波形'

H=fft(h)。

plot(w/pi,abs(H))

滤波后频域信号波形'

滤波后的语音信号图形:

(6)对语音信号进行回放,感觉滤波前后声音的变化。

比较滤波前后语音信号的波形及频谱,对所得结果和滤波器性能进行频谱分析。

綾镝鯛駕櫬鹕踪韦辚糴。

4.2图形用户界面设计

4.2.1GUI部分matlab函数m文件程序

functionvarargout=untitled1(varargin)

gui_Singleton=1。

gui_State=struct('

gui_Name'

mfilename,...驅踬髏彦浃绥譎饴憂锦。

'

gui_Singleton'

gui_Singleton,...

gui_OpeningFcn'

@untitled1_OpeningFcn,...

gui_OutputFcn'

@untitled1_OutputFcn,...

gui_LayoutFcn'

[],...

gui_Callback'

[])。

ifnargin&

&

ischar(varargin{1})

gui_State.gui_Callback=str2func(varargin{1})。

end

ifnargout

[varargout{1:

nargout}]=gui_mainfcn(gui_State,varargin{:

})。

猫虿驢绘燈鮒诛髅貺庑。

else

gui_mainfcn(gui_State,varargin{:

functionuntitled1_OpeningFcn(hObject,eventdata,handles,varargin)锹籁饗迳琐筆襖鸥娅薔。

handles.output=hObject。

guidata(hObject,handles)。

functionvarargout=untitled1_OutputFcn(hObject,eventdata,handles)構氽頑黉碩饨荠龈话骛。

varargout{1}=handles.output。

按钮的回调函数:

functionpushbutton1_Callback(hObject,eventdata,handles)輒峄陽檉簖疖網儂號泶。

globalI。



H={'

*.wav'

}。

尧侧閆繭絳闕绚勵蜆贅。

[filename,pathname]=uigetfile(H,'

请选择打开信号'

file=strcat(pathname,filename)。

识饒鎂錕缢灩筧嚌俨淒。

I=wavread(file)。

凍鈹鋨劳臘锴痫婦胫籴。

plot(I)。

原信号时域波形'



functionpushbutton2_Callback(hObject,eventdata,handles)恥諤銪灭萦欢煬鞏鹜錦。

sound(I,fs)。

functionpushbutton3_Callback(hObject,eventdata,handles)鯊腎鑰诎褳鉀沩懼統庫。

globalX。

X=fft(I)。

N=length(I)。

plot(k,abs(X))。

原信号频域波形'

functionpushbutton4_Callback(hObject,eventdata,handles)硕癘鄴颃诌攆檸攜驤蔹。

functionpushbutton5_Callback(hObject,eventdata,handles)阌擻輳嬪諫迁择楨秘騖。

globalt。

globald。

globals。

t=0:

au=0.007。

d=[au*cos(2.7475*t)]'

s=I+d。

plot(s)。

加噪声后时域波形'

functionpushbutton6_Callback(hObject,eventdata,handles)氬嚕躑竄贸恳彈瀘颔澩。

globalS。

S=fft(s)。

plot(abs(S))。

加噪声后频域波形'

文本框的回调函数:

functionedit1_Callback(hObject,eventdata,handles)釷鹆資贏車贖孙滅獅赘。

globalwp。

get(hObject,'

string'

wp=str2double(get(hObject,'

))。

functionedit1_CreateFcn(hObject,eventdata,handles)怂阐譜鯪迳導嘯畫長凉。

ifispc

set(hObject,'

BackgroundColor'

'

white'

get(0,'

defaultUicontrolBackgroundColor'

谚辞調担鈧谄动禪泻類。

functionedit2_Callback(hObject,eventdata,handles)嘰觐詿缧铴嗫偽純铪锩。

globalws。

ws=str2double(get(hObject,'

functionedit2_CreateFcn(hObject,eventdata,handles)熒绐譏钲鏌觶鷹緇機库。

鶼渍螻偉阅劍鲰腎邏蘞。

functionedit3_Callback(hObject,eventdata,handles)纣忧蔣氳頑莶驅藥悯骛。

globalRp。

Rp=str2double(get(hObject,'

functionedit3_CreateFcn(hObject,eventdata,handles)颖刍莖蛺饽亿顿裊赔泷。

濫驂膽閉驟羥闈詔寢賻。

functionedit4_Callback(hObject,eventdata,handles)銚銻縵哜鳗鸿锓謎諏涼。

globalAs。

As=str2double(get(hObject,'

functionedit4_CreateFcn(hObject,eventdata,handles)挤貼綬电麥结鈺贖哓类。

赔荊紳谘侖驟辽輩袜錈。

functionpushbutton7_Callback(hObject,eventdata,handles)塤礙籟馐决穩賽釙冊庫。

globalws。

globalRp。

globalAs。

[b,a]=imp_invr(cs,ds,T)。

[db,mag,~,w]=freqz_m(b,a)。

figure

(1)。

衰减特性'

functionpushbutton8_Callback(hObject,eventdata,handles)裊樣祕廬廂颤谚鍘羋蔺。

globals。

globalh。

仓嫗盤紲嘱珑詁鍬齊驁。

h=filter(b,a,s)。

figure

(2)。

滤波后时域波形'

滤波后频域波形'

len=300。

inc=300。

f=enframe(I,len,inc)。

N=size(f)。

%size(A)返回A各个维的最大元素个数

Mn=zeros(1,N)。

%一行N列个0

forn=1:

N

xn=f(n,:

xn=abs(xn)。

mn=sum(xn)。

Mn(1,n)=mn。

yn=xn.^2。

mn1=sum(yn)。

Mn1(1,n)=mn1。

end

figure

subplot(4,1,1),plot(Mn),title('

短时平均幅度'

%短时平均幅度

subplot(4,1,2),plot(Mn1),title('

短时能量'

%短时能量

Zn=zeros(1,N)。

forn=1:

zn=zeros(1,len-1)。

form=1:

len-1

zn_m=sign(xn(m+1))-sign(xn(m))。

zn_m=(1/2)*abs(zn_m)。

zn(1,m)=zn_m。

Zn(1,n)=sum(zn)。

subplot(4,1,3),plot(Zn),title('

短时过零率'

%短时平均过零率

zs=7。

Rn=zeros(1,len-1)。

xn=f(zs,:

fork=1:

xn1=[f(k+1:

len),zeros(1,k)]。

xn2=xn.*xn1。

Rn(k)=sum(xn2)。

subplot(4,1,4),plot(Rn),title('

短时自相关函数'

%短时自相关函数

functionpushbutton10_Callback(hObject,eventdata,handles)绽萬璉轆娛閬蛏鬮绾瀧。

sound(s,16000)。

functionpushbutton11_Callback(hObject,eventdata,handles)骁顾燁鶚巯瀆蕪領鲡赙。

sound(h,16000)。

4.2.2调试及运行

最终设计完成的GUI界面如下图:

(1)点击按钮

打开语音信号,坐标系中出现如图所示语音信号的时域波形:

(2)点击按钮

,系统会播放打开的声音信号。

(3)点击按钮

,坐标系中会显示打开语音信号的频域

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

当前位置:首页 > 高等教育 > 农学

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

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