版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《數(shù)字信號(hào)處理B》課程項(xiàng)目實(shí)施報(bào)告費(fèi)點(diǎn)陳翔宇張明星二零一五年十月二十二日2一、數(shù)字信號(hào)處理項(xiàng)目選題的內(nèi)容及思路1、數(shù)字音效處理器的設(shè)計(jì)與要求 42、實(shí)現(xiàn)思路 4二、人機(jī)交互界面操控1、Matlab2014中GUI界面 42、本次項(xiàng)目制作的GUI界面簡(jiǎn)介 4三、8段數(shù)字均衡器的原理與實(shí)現(xiàn)方案1、數(shù)字均衡器的原理 52、數(shù)字均衡器的實(shí)現(xiàn)方案 63、數(shù)字均衡器的代碼及分析 7 7(2)功能分析 9四、語(yǔ)音識(shí)別的工作原理與實(shí)現(xiàn)方案1、語(yǔ)音識(shí)別的工作原理 92、語(yǔ)音識(shí)別的實(shí)現(xiàn)方案 3、項(xiàng)目的設(shè)計(jì)過(guò)程 4、語(yǔ)音部分界面介紹 五、語(yǔ)音去噪1、語(yǔ)音去噪的原理 2、語(yǔ)音的實(shí)現(xiàn)方案 3、語(yǔ)音的代碼及分析 1、問(wèn)題與解決方案 32、總結(jié)和收獲 七、分工情況 八、參考文獻(xiàn) 九、完整代碼及部分注釋 4一、數(shù)字信號(hào)處理項(xiàng)目選題的內(nèi)容及思路1、數(shù)字音效處理器的設(shè)計(jì)與要求設(shè)計(jì)一個(gè)數(shù)字音效處理器,能夠?qū)崿F(xiàn)語(yǔ)音信號(hào)的各種音效處理。小組選題內(nèi)容:(1)輸入語(yǔ)音信號(hào)源為實(shí)際環(huán)境采集語(yǔ)音;(2)至少實(shí)現(xiàn)3種音效處理功能(其中至少包括下述3種中的2種功能:a、8段數(shù)字均衡;b、項(xiàng)目組5人的語(yǔ)音識(shí)別;c、環(huán)境降噪;(3)用人機(jī)交互界面操控、揚(yáng)聲器/耳機(jī)輸出音效。開(kāi)始設(shè)計(jì)項(xiàng)目制作前,我們通過(guò)文獻(xiàn)和網(wǎng)絡(luò),了解8段數(shù)字均衡器、語(yǔ)音識(shí)別環(huán)境降噪的原理,并確定實(shí)現(xiàn)的方案。我們先用Matlab設(shè)計(jì)三個(gè)界面分別為降噪界面、均衡器界面和語(yǔ)音識(shí)別界面。然后小組再分工編寫(xiě)各功能代碼,并調(diào)試與檢測(cè)代碼的功能。完成代碼編寫(xiě)后,把代碼嵌入設(shè)計(jì)好的總GUI界面,最后調(diào)試和檢驗(yàn)代碼是否實(shí)現(xiàn)功能。二、人機(jī)交互界面簡(jiǎn)介Matlab中圖形用戶界面(GUI)是一種人與計(jì)算機(jī)通信的界面顯示格式,允許用戶使用鼠標(biāo)等輸入設(shè)備操縱屏幕上的圖標(biāo)或菜單選項(xiàng),以選擇命令、調(diào)用文件、啟動(dòng)程序或執(zhí)行其它一些日常任務(wù)。與通過(guò)鍵盤(pán)輸入文本或字符命令來(lái)完成例行任務(wù)的字符界面相比,圖形用戶界面有許多優(yōu)點(diǎn)。圖形用戶界面由窗口、下拉菜單、對(duì)話框及其相應(yīng)的控制機(jī)制構(gòu)成,在各種新式應(yīng)用程序中都是標(biāo)準(zhǔn)化的,即相同的操作總是以同樣的方式來(lái)完成,在圖形用戶界面,用戶看到和操作的都是圖形對(duì)象,應(yīng)用的是計(jì)算機(jī)圖形學(xué)的技術(shù)。如圖1所示,本次項(xiàng)目我們共實(shí)現(xiàn)了語(yǔ)音識(shí)別、語(yǔ)音降噪和語(yǔ)音均衡三部分功能,界面分別為圖1中左上、左下和右半部分。錄音函數(shù)以及圖像顯示模塊適用于三個(gè)模塊。5數(shù)字信號(hào)處理項(xiàng)目數(shù)字信號(hào)處理項(xiàng)目第9用成西:未教景王國(guó)平費(fèi)點(diǎn)奇州字資明八段均衡器模塊力期打開(kāi)變用4第語(yǔ)音識(shí)別核塊青色程小組成質(zhì)面語(yǔ)揮整召身艾件降噪頻塊杠并文月確常并齡象首建員調(diào)育償性蓬營(yíng)皮系據(jù)習(xí)回空卷出三、8段數(shù)字均衡器的原理與實(shí)現(xiàn)方案均衡器,是一種可以分別調(diào)節(jié)各段頻率成分信號(hào)放大量的設(shè)備,通過(guò)對(duì)各種不同頻率的信號(hào)的調(diào)節(jié)來(lái)補(bǔ)償揚(yáng)聲器和聲場(chǎng)的缺陷,補(bǔ)償和修飾各種聲源及其它特殊作用,一般調(diào)音臺(tái)上的均衡器僅能對(duì)高頻、中頻、低頻三段頻率電信號(hào)分別進(jìn)行調(diào)節(jié)。在通信系統(tǒng)中,在系帶系統(tǒng)中插入均衡器能夠減小碼間干擾的影響。數(shù)字均衡器是用數(shù)字信號(hào)處理方法來(lái)實(shí)現(xiàn)的頻域或時(shí)域均衡器。本次項(xiàng)目制作就是利用MATLAB2014.a版本軟件,實(shí)現(xiàn)八段數(shù)字均衡器數(shù)字均衡器的基本功能是調(diào)節(jié)各頻段的信號(hào)強(qiáng)弱,為了滿足該功能,在本次設(shè)計(jì)中應(yīng)當(dāng)具備下面一些基本功能:(1)WAV聲音信號(hào)的錄制,保存在本地PC內(nèi),便于后面讀??;(2)WAV聲音信號(hào)的讀取,即從文件(.wav)讀取音頻信息;(3)八段數(shù)字均衡器設(shè)定,分8段頻率區(qū)間,設(shè)置GUI界面滑動(dòng)條的權(quán)值范圍等;(4)濾波,包括生成低通、高通、帶通、帶阻的巴特沃斯、切比雪夫?yàn)V波器,并顯示濾波器的頻率特征曲線;6(6)播放,播放濾后音頻信號(hào)并實(shí)時(shí)顯示波形及頻譜特性。2、數(shù)字均衡器的實(shí)現(xiàn)方案針對(duì)以上所述要求,本次項(xiàng)目制作我們小組采用了下圖的思維:AI文錄音FFT圖2數(shù)字均衡器的模塊劃分具體的一些實(shí)施方法如下:(1)使用matlab的錄音函數(shù)并寫(xiě)入本地PC。這里錄音的采樣頻率盡量選取大一點(diǎn),錄音質(zhì)量也會(huì)隨之提高;(2)設(shè)計(jì)出對(duì)應(yīng)八個(gè)頻段的八個(gè)帶通濾波器,各頻率段對(duì)應(yīng)的頻率范圍如下所示,20~100Hz(沉重)、100~200Hz(豐滿)、200~500Hz(力度)、500~1KHz(明朗)、1K~2KHz(透亮)、2K~4KHz(尖銳)、4K~8KHz(清脆)、8K~16KHz;(3)對(duì)原始信號(hào)分八路用八個(gè)帶通濾波器進(jìn)行濾波;(4)將八個(gè)濾波器的濾波結(jié)果加權(quán)求和,權(quán)值的設(shè)計(jì)與均衡器的調(diào)節(jié)要求一致;(5)最后將求和結(jié)果進(jìn)行輸出,感覺(jué)均衡后的語(yǔ)音處理效果。其中第3步中各帶通濾波器的輸入信號(hào)均為原始信號(hào),而不是“串聯(lián)”地濾波。設(shè)原始輸入信號(hào)為x(n),第i路的輸出信號(hào)為yi(n),第i路的權(quán)值為ki,均衡器的輸出信號(hào)為y(n),則有73、數(shù)字均衡器的代碼及分析(1)均衡器GUI界面操作和主要代碼如圖3所示,即為本次項(xiàng)目八段均衡器的人機(jī)交互時(shí)GUI界面。操作步驟大致為:先進(jìn)行錄音,輸入采樣頻率Fs和錄音時(shí)間Time,確定好這倆個(gè)參數(shù)后即可錄音生成.wav文件并保存在PC;然后點(diǎn)擊“打開(kāi)文件”按鈕選擇需要均衡的.wav四種濾波器的一種類(lèi)型對(duì)信號(hào)進(jìn)行濾波;根據(jù)需求調(diào)節(jié)八個(gè)滑動(dòng)條,確定每個(gè)頻段所需要均衡的權(quán)值大??;點(diǎn)擊“選定”按鈕,即可開(kāi)始均衡,再點(diǎn)擊“播放”按鈕,便可以聽(tīng)到均衡后的語(yǔ)音效果。為了完善GUI界面的人性化特點(diǎn),我們?cè)诮缑嬷刑砑恿恕爸刂谩卑粹o用于還原,方便操作。在界面的下方,我們?cè)O(shè)置了倆塊用于顯示均衡后語(yǔ)音信號(hào)的時(shí)域波形圖和頻譜圖,用于分析均衡后信號(hào)的改變特征,同時(shí)我們還設(shè)置了“自動(dòng)顯示”按鈕,方便及時(shí)觀察每一次不同權(quán)值的均衡對(duì)應(yīng)的時(shí)域波形圖和頻譜圖的變化。主要代碼和算法分析如下:handles.yy=zeros(size(handles.y));8ifget(handles.popufilter,'Value')==2[ba]=butter(order,2*fband%巴特沃斯數(shù)字濾波器butter(階數(shù),3db截止頻率的歸一化值);elseifget(handles.popufilter,'Value')==3%切比雪夫一型cheby1(階數(shù),通帶最大衰減,通帶截止頻率歸一化值);elseifget(handles.popufilter,'Value')==4[ba]=cheby2(order,20,2*fband(i:i+1)/handles.Fs);%切比雪夫二型cheby2(階數(shù),阻帶最小衰減,通帶截止頻率歸一化值);elseifget(handles.popufilter,'Value')==5[ba]=ellip(order,0.5,20,2*fband(i:i+1)/handles.%橢圓濾波器[b,a]=ellip(n,Rp,Rs,Wp)eval(sprintf('k=get(handles.band%d,"%從相應(yīng)slider上獲取k的值,eval執(zhí)行括號(hào)內(nèi)表達(dá)式,sprintf獲得第i的slidey=(9^k-1)/8*filter(b,a,handles.y%對(duì)語(yǔ)音信號(hào)進(jìn)行濾波在第i個(gè)頻段上的頻率進(jìn)行相應(yīng)增益。增益范圍(0-10)handles.yy=handles.yy+y;%將濾波后的輸出波形疊加程序中y=(9^k-1)/8*filter(b,a,handles.y)作用是加權(quán)以便下一句的求和,其中k是從滾動(dòng)條中得到的參數(shù),從0到2,但需要的權(quán)值是從0到10,令w為需要的權(quán),即w∈[0,10],由于實(shí)際需要w為指數(shù)變化,故設(shè)為下式形式,三個(gè)點(diǎn)三個(gè)方程確定a,b,c。代入w=0,k=0;w=1,k=1;w=10,k=2解得a=1/8,b=9,c=-1。通過(guò)這種方式便可以實(shí)現(xiàn)前面第二部分方法實(shí)現(xiàn)中提及的主要功能(3)、(4)。9(2)功能分析FsFs44100Time(s)5開(kāi)始錄音八段均衡器模塊打開(kāi)文件選定dragonwav均衡后時(shí)域及頻域圖像處理后聲音500040000◎自動(dòng)顯示處理后聲音纖細(xì)沉重清脆20003000文件:播放尖銳重置4002圖4數(shù)字均衡器的功能實(shí)現(xiàn)界面由圖4可以看出,我們通過(guò)調(diào)節(jié)8個(gè)滑動(dòng)條來(lái)間接調(diào)節(jié)我們所需權(quán)值,再對(duì)8個(gè)濾波器輸出信號(hào)yi(n)累加求和進(jìn)而能夠得到均衡后的輸出信號(hào)y(n)。y(n)的時(shí)域波形和頻譜顯示在GUI界面的下方,由圖可見(jiàn),100-200Hz、500-1kHz、1k-2kHz的權(quán)值都大于1,所以這幾部分頻段的語(yǔ)音信號(hào)都有所增強(qiáng),和頻譜圖上的幾個(gè)峰值恰好對(duì)應(yīng)。選擇“播放”可以聽(tīng)出聲音明顯變得尖銳起來(lái)。同時(shí)我們?cè)谥谱鬟^(guò)程以及測(cè)試環(huán)節(jié)中發(fā)現(xiàn),大多數(shù)語(yǔ)音的高頻分量較小,低頻分量較大,配以相同的權(quán)值,可以發(fā)現(xiàn)低頻分量遠(yuǎn)遠(yuǎn)大于高頻分量,所以在圖像顯示環(huán)節(jié)中,我們只顯示20-4000Hz的頻段的分量大小,著重觀察這一頻段每次均衡后的各分量的改變。1、語(yǔ)音識(shí)別的工作原理語(yǔ)音識(shí)別技術(shù)就是通過(guò)機(jī)器識(shí)別和理解過(guò)程把語(yǔ)音信號(hào)轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令。語(yǔ)音識(shí)別系統(tǒng)通常假設(shè)語(yǔ)音信號(hào)是由一系列編碼組成。輸入的語(yǔ)音波形首先被轉(zhuǎn)換為一組離散的參數(shù)矢量表示語(yǔ)音發(fā)聲一組待識(shí)別的特征參數(shù)矢量(觀察矢量),其中每個(gè)矢量時(shí)間間隔典型取值為10ms~20ms。識(shí)別器的作用是把輸入的語(yǔ)音特征矢量映射為潛在的文字語(yǔ)音識(shí)別的基本功能是將現(xiàn)場(chǎng)錄制的聲音與語(yǔ)音碼本進(jìn)行比較,識(shí)別說(shuō)話人是否在碼本庫(kù)中。本次設(shè)計(jì)中,具備下面基本功能:(1)WAV聲音信號(hào)的錄制,保存在本地PC內(nèi),便于后面讀??;(2)WAV聲音信號(hào)的讀取,即從文件(.wav)讀取音頻信息;(3)點(diǎn)擊訓(xùn)練碼本將目錄下的5個(gè)語(yǔ)音文件訓(xùn)練成vq碼本;(4)選擇要識(shí)別的語(yǔ)音文件,即可判斷是否為碼本庫(kù)中的說(shuō)話者2、語(yǔ)音識(shí)別的實(shí)現(xiàn)方案碼本庫(kù)碼本庫(kù):說(shuō)話人」的碼本計(jì)算預(yù)處理:VQ圖5語(yǔ)音識(shí)別方案(1)特征參數(shù)的提取對(duì)于特征參數(shù)的選取,我們使用MFCC的方法來(lái)提取。MFCC參數(shù)是基于人的聽(tīng)覺(jué)特性利用人聽(tīng)覺(jué)的屏蔽效應(yīng),在Mel標(biāo)度頻率域提取出來(lái)的倒譜特征參數(shù)。MFCC參數(shù)的提取過(guò)程如下:a、對(duì)輸入的語(yǔ)音信號(hào)進(jìn)行分幀。語(yǔ)音信號(hào)因?yàn)槭菧?zhǔn)穩(wěn)態(tài)信號(hào),只有穩(wěn)態(tài)的信息才能進(jìn)行信號(hào)處理,所以要先分幀,每幀長(zhǎng)度約20ms-30ms,在這一區(qū)間內(nèi)把語(yǔ)音信號(hào)看作為穩(wěn)態(tài)信號(hào)。“語(yǔ)音信號(hào)分幀進(jìn)行小波變換”,就是把語(yǔ)音信號(hào)分幀后,對(duì)每一幀進(jìn)行小波變換和處理。b、加窗N,然后作離散傅立葉變換,獲得頻譜分布信息。設(shè)語(yǔ)音信號(hào)的DFT為:其中式中x(n)為輸入的語(yǔ)音信號(hào),N表示傅立葉變換的點(diǎn)數(shù)(每幀的點(diǎn)數(shù))c、再求頻譜幅度的平方,得到能量譜。d、將能量譜通過(guò)一組Mel尺度的三角形濾波器組。圖6Mel尺度三角濾波器組每個(gè)三角形對(duì)應(yīng)一個(gè)帶通/低通濾波器。圖6是把多個(gè)濾波器的頻譜畫(huà)在一個(gè)圖上了。我們定義一個(gè)有M個(gè)濾波器的濾波器組(濾波器的個(gè)數(shù)和臨界帶的個(gè)數(shù)相近),采用的濾波器為三角濾波器,中心頻率為f(m),m=1,2,3,……,M(本系統(tǒng)取M=100)。確定一個(gè)聲音的頻率,則能夠產(chǎn)生同時(shí)掩蔽的另外一個(gè)聲音的頻率范圍稱為“臨界頻帶”通常認(rèn)為,在20Hz到16kHz的音頻范圍內(nèi)有24個(gè)臨界頻帶。臨界頻帶的單位叫Bark(巴克),其寬度定義如下:①1Bark=一個(gè)臨界頻帶的寬度;②頻率f<500Hz的情況下,1Bark=f/100;③f>500Hz的情語(yǔ)音信號(hào)頻譜則一般為100Hz~7kHz的范圍。e、計(jì)算每個(gè)濾波器輸出的對(duì)數(shù)能量,下式其中Hm(k)為三角濾波器的頻率響應(yīng)。0≤m≤M-1f、經(jīng)過(guò)離散弦變換(DCT)得到MFCC系數(shù)。MFCC系數(shù)個(gè)數(shù)N通常取20—30,常常不用0階倒譜系數(shù),因?yàn)樗从车氖穷l譜能量,故在一般識(shí)別系統(tǒng)中,將稱為能量系數(shù),并不作為倒譜系數(shù),本系統(tǒng)選取20階倒譜系數(shù)。functionr=mfcc(s,fs)n=256;nbFrame=floor((1-n)/m)+1;%沿-方向取整fori=1:nforj=1:nbFrameM(i,j)=s(((j-1)*m)+i);%對(duì)矩陣M賦值h=hamming(n);%加hamming窗,以增加音框左端和右端的連續(xù)性=diag(h)*M;i=1:nbFrameframe(:,i)=fft(M2(:,i));%對(duì)信號(hào)進(jìn)行快速傅里葉變換FFTt=n/2;tmax=1/fs;m=melfb(20,n,fs);%將上述線性頻譜通過(guò)Mel頻率濾波器組得到Mel頻譜,下面在將其轉(zhuǎn)化成對(duì)數(shù)頻譜n2=1+floor(n/2);z=m*abs(frame(1n2,:)).^2;r=dct(log(z));%將上述對(duì)數(shù)頻譜,經(jīng)過(guò)離散余弦變換(DCT)變換到倒譜域,即可得到Mel倒譜系數(shù)(2)用矢量量化聚類(lèi)法生成碼本我們將每個(gè)待識(shí)的說(shuō)話人看作是一個(gè)信源,用一個(gè)碼本來(lái)表征。碼本是從該說(shuō)話人的訓(xùn)練序列中提取的MFCC特征矢量聚類(lèi)而生成。只要訓(xùn)練的序列足夠長(zhǎng),可認(rèn)為這個(gè)碼本有效地包含了說(shuō)話人的個(gè)人特征,而與講話的內(nèi)容無(wú)關(guān)。本系統(tǒng)采用基于分裂的LBG的算法設(shè)計(jì)VQ(矢量量化)碼本,X,(k=1,2,…,K)為訓(xùn)具體實(shí)現(xiàn)過(guò)程如下:a、取提取出來(lái)的所有幀的特征矢量的型心(均值)作為第一個(gè)碼字矢量B1。b、將當(dāng)前的碼字矢量(B1)根據(jù)以下規(guī)則分裂,形成2m個(gè)碼矢。其中m為從1變化到當(dāng)前的碼矢的碼矢數(shù),ε是分裂時(shí)的參數(shù)(此處ε=0.01)。形成初始碼本。的碼書(shū),轉(zhuǎn)e。否則,轉(zhuǎn)下一步。Do=10000)。3.項(xiàng)目的設(shè)計(jì)過(guò)程音的mel倒譜系數(shù),接著mfcc.m調(diào)用Melfb.m將能量譜通過(guò)一在Test.m函數(shù)文件中調(diào)用Disteu.m計(jì)算訓(xùn)練錄音(提供vq碼本)與測(cè)試錄音(提供mfcc)mel倒譜系數(shù)的距離,即判斷兩聲音是否為同一錄音者提供。Disteu.m調(diào)用mfcc.m獲取單個(gè)錄音的mel倒譜系數(shù)。mfcc.m調(diào)用Melfb.m將能量譜通過(guò)一組Mel尺度的三角形濾波器組。%函數(shù)train%numberofcentroidsrequired碼失數(shù)目fori=1:n%對(duì)數(shù)據(jù)庫(kù)中的代碼形成碼本file=sprintf(%s(all(s==0,2),:)=[];%計(jì)算MFCC's提取特征特征,返回值是Mel倒譜系數(shù),是一個(gè)log的dct得到的%訓(xùn)練VQ碼本通過(guò)矢量量化,得到原說(shuō)話人的VQ碼本%函數(shù)testfile=sprintf(%s%d.wav,testdir,n);s(all(s==0,2),:)=[];v=mfcc(s,fs);%得到測(cè)試人語(yǔ)音的mel倒譜系數(shù)distmin=4.3;%閾值設(shè)置處t=0;d=disteu(v,code{1});%計(jì)算得到模板和要判斷的聲音之間的“距離”dist=sum(min(d,[],2))/size(d,1);%變換得到一個(gè)距離的量%測(cè)試閾值數(shù)量級(jí)msgc=sprintf(與模板語(yǔ)音信號(hào)的差值為:%10f',dist);ifdist<distmin%一個(gè)閾值,小于閾值,則就是這個(gè)人。ifk1==1msg1=sprintf('說(shuō)話者為elseifk1==2msg1=sprintf(說(shuō)話者為王國(guó)平);elseifk1==3msg1=sprintf('說(shuō)話者為費(fèi)點(diǎn));elseifk1==4msg1=sprintf(說(shuō)話者為陳翔宇);elseifk1==5msg1=sprintf(說(shuō)話者為張明星);msg2=sprintf('說(shuō)話者與模板語(yǔ)音信號(hào)不匹配,不符合要求!\n);ift>1msgbox(msgl);ift<1msgbox(msg2);4.語(yǔ)音部分界面介紹語(yǔ)音識(shí)別模塊組員語(yǔ)音播放播放播放訓(xùn)練碼本語(yǔ)音1圖7語(yǔ)音識(shí)別GUI界面圖7即為語(yǔ)音部分的GUI界面,首先我們小組每個(gè)人事先錄好了時(shí)長(zhǎng)8s,采用頻率為44100Hz的語(yǔ)音信號(hào)作為樣本信號(hào),并且設(shè)置了“播放”按鈕,播放樣本語(yǔ)音?!坝?xùn)練碼本”按鈕,即將我們小組的樣本語(yǔ)音生成各自的碼本(由16個(gè)碼失組成)。生成碼本后,我們用了小組成員另外錄的時(shí)長(zhǎng)8s,采樣頻率為44100Hz的語(yǔ)音信號(hào)作為測(cè)試信號(hào)。測(cè)試過(guò)程中出現(xiàn)了比較多的問(wèn)題,最突出的就是一個(gè)成員的聲音可能會(huì)匹配到另一個(gè)成員(不同人的測(cè)試信號(hào)與樣本信號(hào)算出的成對(duì)歐氏距離的兩個(gè)矩陣的列之間的距離比他自己的測(cè)試信號(hào)和樣本信號(hào)算出來(lái)的距離小)。在錄音測(cè)試的過(guò)程中,由于現(xiàn)場(chǎng)環(huán)境的影響,前后錄制的語(yǔ)音與自己的樣本信號(hào)之間測(cè)出的距離都會(huì)發(fā)生變化,閾值不斷在4.0~5.0之間修改,經(jīng)過(guò)幾次的重復(fù)試驗(yàn),最終將閾值設(shè)定在了4.3,實(shí)現(xiàn)了每個(gè)小組成員的測(cè)試信號(hào)只和自己的樣本信號(hào)匹配(自己測(cè)試信號(hào)與樣本信號(hào)算出來(lái)的距離最小且小于閾值)。五、語(yǔ)音去噪選擇一個(gè)wav語(yǔ)音文件,利用MATLAB中的內(nèi)置噪聲函數(shù)產(chǎn)生噪聲加入到語(yǔ)音信號(hào)中,模仿語(yǔ)音信號(hào)被污染,并對(duì)其進(jìn)行頻譜分析;設(shè)計(jì)數(shù)字濾波器并對(duì)被噪聲污染的語(yǔ)音信號(hào)進(jìn)行濾波,分析濾波后信號(hào)的時(shí)域和頻域特征,回放語(yǔ)音信號(hào)。其流程圖如圖8所示:噪聲噪聲語(yǔ)音信號(hào)噪聲+語(yǔ)音信號(hào)濾波降噪后語(yǔ)音圖8語(yǔ)音降噪流程圖2、語(yǔ)音降噪的具體實(shí)現(xiàn)(1)利用matlab中的函數(shù)uigetfile打開(kāi)PC中已有wav語(yǔ)音文件;(2)使用audioread函數(shù)將文件以矩陣形式保存到全局變量music中;(3)分別用高斯白噪聲awgn、調(diào)頻函數(shù)modulate、加入正弦信號(hào)對(duì)語(yǔ)音信號(hào)加噪;(4)選擇相適應(yīng)的濾波器進(jìn)行降噪。如圖9所示,即為本次項(xiàng)目語(yǔ)音降噪的人機(jī)交互時(shí)GUI界面。操作步驟為:先進(jìn)行打開(kāi)文件,選擇要進(jìn)行加噪并去噪的語(yǔ)音信號(hào),可點(diǎn)擊播放進(jìn)行試聽(tīng),噪聲1、噪聲2、噪聲3分別表示高斯白噪聲、調(diào)頻白噪聲、工頻噪聲,點(diǎn)擊噪聲后便能聽(tīng)到加噪后的音頻,點(diǎn)擊降噪處理就能聽(tīng)到?jīng)]有噪聲的語(yǔ)音,并能看到加噪前后的時(shí)域波形圖和頻域圖變化。時(shí)步哈降噪處理開(kāi)境語(yǔ)開(kāi)年村并文空a、高斯白噪聲降噪主要代碼和算法分析如下:new=music+awgn(music,30,halflength=floor(n/2);plot(f,Pn(1:halflength+1));title('加噪后聲音頻譜)%調(diào)用高斯白噪聲awgn對(duì)原語(yǔ)音加噪%求出語(yǔ)音信號(hào)的頻譜plot(x,new);output1=wden(new,'heursure',s','sI加噪后聲音頻譜與時(shí)域波形如圖10所示。%調(diào)用小波函數(shù)wden進(jìn)行降噪圖10加噪后聲音頻譜與時(shí)域波形降噪后聲音頻譜與時(shí)域波形如圖11所示。圖11降噪后聲音頻譜與時(shí)域波形主要代碼和算法分析如下:y1=modulate(music,f,50000,'fm'halflength=floor(n/2);Pn=Xn.*conj(Xn)/n;h2=floor(max(new));%對(duì)原語(yǔ)音信號(hào)調(diào)制%求出語(yǔ)音信號(hào)的頻譜n=length(new);x=0:n-1;plot(x,new);output1=wden(new,heursure',s',sln%調(diào)用小波函數(shù)wden進(jìn)行降噪加噪后聲音頻譜與時(shí)域波形如圖12所示。圖12加噪后聲音頻譜與時(shí)域波形降噪后聲音頻譜與時(shí)域波形如圖13所示。圖13加噪后聲音頻譜與時(shí)域波形c、工頻信號(hào)主要代碼和算法分析如下:globalmusic;globalnew;globaloutput;globalFileName;n=size(music);a=n(1,1);b=n(1,2);x=linspace(1,a,a);y2=y1(ones(b,1),:);y3=y2';new=music+y3;%加入正弦信號(hào)sound(new,50000);halflength=floor(n/2);Xn=fft(new,n);Pn=Xn.*conj(Xn)/n;title('加噪后聲音頻譜)plot(x,new);%求出語(yǔ)音信號(hào)的頻譜output=WienerScalart96(new,加噪后聲音頻譜與時(shí)域波形如圖14所示。圖14加噪后聲音頻譜與時(shí)域波形降噪后聲音頻譜與時(shí)域波形如圖15所示。 圖15加噪后聲音頻譜與時(shí)域波形六、問(wèn)題與解決方案及收獲總結(jié)1、問(wèn)題與解決方案(1)在均衡器制作過(guò)程中,我們無(wú)法將頻域的波形顯示的很好,使其占據(jù)屏幕的大半。后來(lái)我們只選取了20-4000Hz的頻譜分量進(jìn)行顯示,因?yàn)檫@一部分比重較大,相對(duì)來(lái)(2)語(yǔ)音識(shí)別模塊中一開(kāi)始測(cè)試的時(shí)候是在寢室中,錄音時(shí)長(zhǎng)約為3s,環(huán)境相對(duì)安靜,所以錄音效果較好,同一個(gè)人的錄音文件與模板語(yǔ)音信號(hào)的差值為3.35而不接近的則要達(dá)到4左右,這樣就可以把閥值設(shè)定3.6來(lái)判斷測(cè)試人是否為庫(kù)中的人??僧?dāng)環(huán)境改變后,如在食堂進(jìn)行錄音時(shí),由于周?chē)s音的影響,錄入的測(cè)試語(yǔ)音已有模板語(yǔ)音信號(hào)的差值都變大導(dǎo)致閥值不能固定,在考慮到雜音和說(shuō)話人特征提取不夠等原因,可以加長(zhǎng)錄音時(shí)長(zhǎng),只要訓(xùn)練的序列足夠長(zhǎng),可認(rèn)為這個(gè)碼本有效地包含了說(shuō)話人的個(gè)人特征,而與講話的內(nèi)容無(wú)關(guān)。%起初的test.m代碼functionfinalmsg=test(testdir,n,code)file=sprintf(%s%d.wav,testdir,n);[s,fs]=audioread(file);v=mfcc(s,fs);distmin=3.6;t=0;%閾值設(shè)置處%得到測(cè)試人語(yǔ)音的mel倒譜系數(shù)for1=1:length(code)d=disteu(v,code{1});%計(jì)算得到模板和要判斷的聲音之間的“距離’dist=sum(min(d,[],2))/size(d,1);%變換得到一個(gè)距離的量%測(cè)試閾值數(shù)量級(jí)msgc=sprintf(與模板語(yǔ)音信號(hào)的差值為:%10f',dist);%此人匹配%一個(gè)閾值,小于閾值,則就是這個(gè)人。msgl=sprintf(說(shuō)話者與第%d位模板語(yǔ)音信號(hào)匹配,符合要求!\n',1);t=t+2;%此人不匹配ifdist>distminift>1ift<1但是經(jīng)過(guò)多次比較后發(fā)現(xiàn)不能直接通過(guò)差值與閾值的比較來(lái)判斷測(cè)試者是否為庫(kù)中的人,因?yàn)椴钪挡粫?huì)固定在一個(gè)數(shù)值的上下波動(dòng)。最后閾值是通過(guò)多次實(shí)驗(yàn)數(shù)據(jù)的比較,計(jì)算出一個(gè)值,只要小于這個(gè)值,表明測(cè)試者就在庫(kù)內(nèi),而與哪個(gè)人匹配就根據(jù)每組差值的最小值加以判斷。把閾值增大到4.3,而在ifdist<=distmin這一語(yǔ)句后加入distmin=dist;以此達(dá)到閾值的變動(dòng)。(3)降噪過(guò)程中遇到小波降噪過(guò)程中得到的語(yǔ)音信號(hào)長(zhǎng)度已經(jīng)發(fā)生改變,播放時(shí)出現(xiàn)了倆次。經(jīng)過(guò)我們的研究查看矩陣變量維度,將最后的矩陣長(zhǎng)度減小為0.5倍,即可實(shí)現(xiàn)播放一次。在這次課程設(shè)計(jì)中,我們嘗到了各種滋味,有在困惑中的苦惱,在迷茫中的掙扎,也有在學(xué)習(xí)中的快樂(lè),在成功中的興奮,這是一個(gè)獨(dú)立思考、挑戰(zhàn)自己的過(guò)程。實(shí)驗(yàn)中學(xué)到的不僅僅是MATLAB的應(yīng)用和一些課題的解決方法,更重要的是鍛煉了自慢慢地學(xué)會(huì)了一些簡(jiǎn)單的程序。我們發(fā)現(xiàn)課本知識(shí)在實(shí)踐面前很脆弱,不是說(shuō)課本知識(shí)不重要,而是我們?cè)趯W(xué)好課本知識(shí)的同時(shí)更要注重聯(lián)系實(shí)際,要能解決實(shí)際問(wèn)題,把課本上學(xué)到的東西應(yīng)用到課程設(shè)計(jì)里面這次項(xiàng)目也仿佛給我們突然打開(kāi)了一個(gè)通往另一個(gè)世界的門(mén),在我們眼中高端的語(yǔ)音識(shí)別竟然可以在我們的合作下誕生,而不是在電影電視中各種崇拜,卻只能望洋興嘆。而我們也體會(huì)到,一些平常的軟件,在熟練的掌握和設(shè)計(jì)下竟然也可以解決很多困難的問(wèn)題,書(shū)本上的東西不再是冰冷而蒼白的,它們活生生的出現(xiàn)在我們的實(shí)踐中并與我們的生活如此貼近,讓我們?cè)谂紶柕氖≈幸埠敛粴怵H,一直驚嘆于它們的強(qiáng)大與神奇。我們懂得了遇到困難首先要思考,查找解決辦法,耐心分析錯(cuò)誤原因,做事要有耐心,同時(shí)注重團(tuán)隊(duì)的合作。我們會(huì)在以后的學(xué)習(xí)中更加注重實(shí)踐。七、分工情況朱凱豪:編寫(xiě)“10秒以上的實(shí)際語(yǔ)音至少3種類(lèi)型噪聲的降除”的音效處理功能的代碼,同時(shí)加入加噪函數(shù),分別為高斯白噪聲、調(diào)頻噪聲、工頻噪聲,并用小波變換和維納濾波器實(shí)現(xiàn)三種噪聲的消除,分析總結(jié)小波去噪與維納濾波的基本原理與優(yōu)缺點(diǎn)。王國(guó)平:設(shè)計(jì)與編寫(xiě)8個(gè)頻段數(shù)字均衡器的代碼,分別對(duì)應(yīng)20~100Hz(沉重)、100~200Hz (豐滿)、200~500Hz(力度)、500~1KHz(明朗)、1K~2KHz(透亮)、2K~4KHz(尖銳)、4K~8KHz(清脆)、8K~16KHz(纖細(xì)),在GUI界面中設(shè)計(jì)時(shí)域圖與頻域圖顯示改變均衡器數(shù)值后的語(yǔ)音圖像變化,并進(jìn)行代碼分析與效果測(cè)試。張明星:編寫(xiě)“項(xiàng)目組5人的語(yǔ)音識(shí)別”代碼,在GUI界面中設(shè)計(jì)語(yǔ)音識(shí)別所需要的錄音按鈕、音頻播放按鈕等,進(jìn)行組內(nèi)成員語(yǔ)音的錄制、調(diào)試、并對(duì)代碼進(jìn)行修改與完善。陳翔宇:實(shí)現(xiàn)人機(jī)交互界面的操控,制作降噪模塊與八段數(shù)字均衡器模塊的GUI界面,設(shè)置相應(yīng)按鈕進(jìn)行文件的選取與參數(shù)的調(diào)節(jié),進(jìn)行所有功能的演示。費(fèi)點(diǎn):與各組員一起查找各部分的資料,綜合各部分代碼的分析與報(bào)告,總結(jié)并完成最終報(bào)告的書(shū)寫(xiě)。[2]哈爾濱工業(yè)大學(xué),MATLAB實(shí)現(xiàn)語(yǔ)音識(shí)別功能【J】,2012;[3]肖正安,湖北第二師范學(xué)院學(xué)報(bào),基于Matlab的數(shù)字均衡器的設(shè)計(jì),2008年第25[4]何強(qiáng),何英.MATLAB擴(kuò)展編程[M],北京:清華大學(xué)出版社,2002。九、完整代碼及部分注釋%將錄音文件寫(xiě)入電腦functionrecordCallback(hObject,eventdata,handles)%hObject%eventdata%handlesreserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)set(handles.record,"Enable',off);pause(0.01);Fs=str2double(get(handles.inputFs,'String'));inputtime=str2double(get(handles.inputtime,'String'));handles.Fs=Fs;handles.y=audiorecorder(Fs,16,2);recordblocking(handles.y,inputtime);set(handles.record,'Enable','on');a=getaudiodata(handles.y);audiowrite('C:\Users\dddddd\Desktop\dsp\a6.wav,a,Fs):%輸入采樣頻率functioninputFs_Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletoinputFs(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String)returnscontentsofinputFsastext%str2double(get(hObject,'String'))returnscontentsofinputFsasadouble%---Executesduringobjectcreation,aftersettingallproperties.functioninputFs_CreateFcn(hObject,eventdata,handles)%hObjecthandletoinputFs(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTERifispc&&isequal(get(hObject,'BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%輸入錄音時(shí)間functioninputtimeCallback(hObject,eventdata,handles)%hObjecthandletoinputtime(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofinputtimeastext%str2double(get(hObject,'String'))returnscontentsofinputtimeasadouble%---Executesduringobjectcreation,aftersettingallproperties.functioninputtime_CreateFcn(hObject,eventdata,handles)%hObjecthandletoinputtime(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑動(dòng)條1%---Executesonslidermovement.functionband1_Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband1(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band1,'Value');set(handles.bands1,String',num2str(sliderValue));%Hints:get(hObject,'Value)returnspositionofslider%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofslider%---Executesduringobjectcreation,aftersettingallproperties.functionband1_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband1(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑動(dòng)條2%---Executesonslidermovement.functionband2_Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband2(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band2,'Value');set(handles.bands2,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min)andget(hObject,Max')todeterminerangeofslider%---Executesduringobjectcreation,aftersettingallproperties.functionband2_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband2(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:slidercontrolsusuallyhavealightgraybackgroundifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑動(dòng)條3%---Executesonslidermovement.functionband3_Callback(hObject,eventdata,handles)%hObject%eventdata%handlesreserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band3,'Value');set(handles.bands3,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,Max')todeterminerangeofslider%---Executesduringobjectcreation,aftersettingallproperties.functionband3_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband3(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑動(dòng)條4%---Executesonslidermovement.functionband4_Callback(hObject,eventdata,handles)%hObjecthandletoband4(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band4,'Value');set(handles.bands4,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,Max')todeterminerangeofslider%--Executesduringobjectcreation,aftersettingallproperties.functionband4_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband4(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑動(dòng)條5functionband5_Callback(hObject,eventdata,handles)%hObjectreserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)set(handles.bands5,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,Max')todeterminerangeofslider%---Executesduringobjectcreation,aftersettingafunctionband5_CreateFcn(hObject,eventdata,handles)handletoband5(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilaftera%Hint:slidercontrolsusuallyhavifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑動(dòng)條6functionband6_Callback(hObject,eventdata,handles)%hObjecthandletoband6(see%eventdatareserved-tobedefinedinafuturevers%handlesstructurewithhandlesanduserdata(seeGUIDATA)set(handles.bands6,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,Max')todeterminerangeofslider%---Executesduringobjectcreation,aftersettingafunctionband6_CreateFcn(hObject,eventdata,handles)handletoband6(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafter%Hint:slidercontrolsusuallyhavifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%---Executesonslidermovement.functionband7_Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband7(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band7,'Value');set(handles.bands7,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofslider%--Executesduringobjectcreation,aftersettingallpropertiesfunctionband7_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband7(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor))set(hObject,'BackgroundColor',[.9.9.9]);%滑動(dòng)條8%---Executesonslidermovement.functionband8Callback(hObject,eventdata,handles)%hObjecthandletoband8(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band8,'Value');set(handles.bands8,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min)andget(hObject,'Max)todeterminerangeofslider%--Executesduringobjectcreation,aftersettingallproperties.functionband8_CreateFcn(hObject,eventdata,handles)%eventdatareserved-tobedefinedinafutureversionofMATLAB%Hint:slidercontrolsusuallyhavealightgraybackgroundifisequal(get(hObject,BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑動(dòng)條1的k值顯示functionbands1_Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletobands1(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands1,'String');if(isempty(sliderValue)llsliderValue<0llsliderValue>2)set(handles.band1,'Value',0);set(handles.bands1,'String','0');set(handles.band1,'Value',sliderValue);%Hints:get(hObject,'String')returnscontentsofbands1astext%str2double(get(hObject,'String'))returnscontentsofbands1asadouble%---Executesduringobjectcreation,aftersettingallproperties.functionbands1_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletobands1(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑動(dòng)條2的k值顯示functionbands2Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletobands2(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands2,'String');if(isempty(sliderValue)||sliderValue<0||sliderValue>2)set(handles.band2,'Value',0);set(handles.bands2,String','O');set(handles.band2,'Value',sliderValue);%Hints:get(hObject,'String)returnscontentsofbands2astext%str2double(get(hObject,'String))returnscontentsofbands2asadouble%---Executesduringobjectcreation,aftersettingafunctionbands2_CreateFcn(hObject,eventdata,handles)%hObjecthandletobands2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑動(dòng)條3的k值顯示functionbands3_Callback(hObject,eventdata,handles)handletobands3(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands3,'String');if(isempty(sliderValue)||sliderValue<0||sliderValue>2)set(handles.band3,'Value',0);set(handles.bands3,String','O');%Hints:get(hObject,String')returnscontentsofbands3astext%str2double(get(hObject,'String))returnscontentsofbands3asadouble%---Executesduringobjectcreation,aftersettingafunctionbands3CreateFcn(hObject,eventdata,handles)%hObjecthandletobands3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.ifispc&&isequal(get(hObject,BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑動(dòng)條4的k值顯示functionbands4_Callback(hObject,eventdata,handles)handletobands4(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands4,'String');if(isempty(sliderValue)||sliderValue<0||sliderValue>2)set(handles.band4,'Value',0);%Hints:get(hObject,'String')returnscontentsofbands4astext%str2double(get(hObject,String'))returnscontentsofbands4asadouble%---Executesduringobjectcreation,aftersettingafunctionbands4_CreateFcn(hObject,eventdata,handles)handletobands4(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.ifispc&&isequal(get(hObject,BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑動(dòng)條5的k值顯示functionbands5_Callback(hObject,eventdata,handles)handletobands5(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands5,'String');if(isempty(sliderValue)||sliderValue<0||sliderValue>2)set(handles.bands5,'String','O');%Hints:get(hObject,String)returnscontentsofbands5astext%str2double(get(hObject,'String'))returnscontentsofbands5asadoubfunctionbands5_CreateFcn(hObject,eventdata,handles)%hObjecthandletobands5(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑動(dòng)條6的k值顯示functionbands6_Callback(hObject,eventdata,handles)handletobands6(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands6,'String');if(isempty(sliderValue)||sliderValue<0||sliderValue>2)set(handles.bands6,'String','0');%Hints:get(hObject,'String')returnscontentsofbands6astext%str2double(get(hObject,'String'))returnscontentsofbands6asadouble%---Executesduringobjectcreation,aftersettingafunctionbands6_CreateFcn(hObject,eventdata,handles)%hObjecthandletobands6(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑動(dòng)條7的k值顯示functionbands7_Callback(hObject,eventdata,handles)%hObjecthand
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度在線教育平臺(tái)股東股份轉(zhuǎn)讓及教育資源整合合同3篇
- 2025年度年度公司終止職工勞動(dòng)合同解除與就業(yè)援助合同3篇
- 二零二五年度農(nóng)村住房租賃市場(chǎng)租賃合同續(xù)租合同
- 二零二五年度特色餐飲酒水定制供應(yīng)與品牌授權(quán)合同3篇
- 二零二五年度冷鏈物流中心冷庫(kù)建造及設(shè)備安裝合同
- 2025年學(xué)校食堂豬肉供應(yīng)與配送保障合同3篇
- 2024年中國(guó)電動(dòng)機(jī)油/齒輪油加油器市場(chǎng)調(diào)查研究報(bào)告
- 2024年河北北方學(xué)院附屬第三醫(yī)院張家口市建國(guó)醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 2025年度智能音響產(chǎn)品銷(xiāo)售協(xié)議范本3篇
- 2024年中國(guó)汽車(chē)內(nèi)飾件真空成型機(jī)市場(chǎng)調(diào)查研究報(bào)告
- 空氣動(dòng)力學(xué)仿真技術(shù):湍流模型:k-ε湍流模型原理與應(yīng)用
- 高中期末考試考風(fēng)考紀(jì)及誠(chéng)信教育
- 2025屆廣東省深圳市深圳外國(guó)語(yǔ)九年級(jí)物理第一學(xué)期期末經(jīng)典試題含解析
- 機(jī)械工程技術(shù)訓(xùn)練智慧樹(shù)知到期末考試答案章節(jié)答案2024年北京航空航天大學(xué)
- 人工智能導(dǎo)論智慧樹(shù)知到期末考試答案章節(jié)答案2024年哈爾濱工程大學(xué)
- 醫(yī)生與患者關(guān)系中的信任與治療
- 心衰患者的容量管理中國(guó)專(zhuān)家共識(shí)-共識(shí)解讀
- 山東省濟(jì)南市2023-2024學(xué)年高一上學(xué)期1月期末考試數(shù)學(xué)試題(解析版)
- 文字學(xué)概要完整版本
- ce自我聲明模板
- 鋼閘門(mén)監(jiān)理評(píng)估報(bào)告
評(píng)論
0/150
提交評(píng)論