通信工程-基于Matlab的GUI設計_第1頁
通信工程-基于Matlab的GUI設計_第2頁
通信工程-基于Matlab的GUI設計_第3頁
通信工程-基于Matlab的GUI設計_第4頁
通信工程-基于Matlab的GUI設計_第5頁
已閱讀5頁,還剩36頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于MATLAB的GUI設計摘要:隨著科學技術的日漸發展,語音識別技術廣泛應用在我們身邊,如人工合成語音、識別內容或辨別講話者,但普遍面臨噪聲給信號帶來干擾的問題。基于上述,本設計主要以研究語音信號的采集、加噪、濾波為研究方向,設計一款在MATLAB軟件上的語音信號采集及分析的GUI界面仿真系統。預先錄制一段聲音,以.wav導入系統,采集語音信號后做傅里葉變換、加入隨機噪聲、采用巴特沃斯低通濾波器濾波加噪信號,分別得到對應的時域、頻域圖。通過測試和分析對比,并調用函數實現編程代碼,最終實現系統的仿真界面,并播放原始聲音。本設計的優點在于GUI以窗口、彈出框、按鍵、動態文本框等具較強的演示性、可視性的界面形式構成,對語音信號采集與分析的研究具有十分重要的參考意義。關鍵詞:語音信號,MATLAB,采集分析,GUIGUIdesignbasedonMATLABAbstract:Withinprovementsinscienceandtechnology,speechrecognitiontechnologyiswidelyusedaroundus,suchasartificiallysynthesizingspeech,recognizingcontentordistinguishingspeakers,butgenerallyfacestheproblemofnoisecausinginterferencetothesignal.Basedontheabove,thisdesignmainlyfocusesontheacquisition,noiseandfilteringofvoicesignals,anddesignsaGUIinterfacesimulationsystembasedontheacquisitionandanalysisofvoicesignalsonMATLABsoftware.Apre-recordedsoundisimportedintothesystemwith.Wav,andafterthevoicesignaliscollected,Fouriertransformisperformed,randomnoiseisadded,andthenoisesignalisfilteredwithbatworthlow-passfilter,andcorrespondingtime-domainandfrequency-domaingraphsareobtainedrespectively.Throughtestingandanalysisandcomparison,andcallingthefunctiontorealizetheprogrammingcode,thesimulationinterfaceofthesystemisfinallyrealized,andtheoriginalsoundisplayed.TheadvantagesofthisdesignarethattheGUIiscomposedofWindows,pop-upboxes,buttons,dynamictextboxesandotherinterfaceformswithstrongdemonstrationandvisibility.Keywords:voicesignal,MATLAB,acquisitionandanalysis,GUI目錄TOC\o"2-3"\h\z\u\t"標題1,1"第1章緒論 第2章系統的設計及原理2.1系統設計的原理流程系統的設計是基于在Matlab的平臺上,借助于其軟件的相關功能來進行。首先利用手機端的錄音功能,進行原始語音信號的獲取,獲取之后我們進行其時頻的分析,分析之后我們對原始信號進行加噪處理,在此基礎上,對信號進行時域和頻域的分析;并設計一個濾波器對加噪信號進行濾波處理,濾波處理之后再分析其時頻特性,我們對這三次的時頻分析進行一個對比,以達到恢復到原始聲音的效果。針對上述,設計的具體原理流程如圖2-1所示。圖2-1設計原理流程圖2.2原始信號的獲取我們用移動端的錄音機錄制好一段話,相比PC端錄音,其優勢是方便,而且電腦運行的時候會產生一定的噪聲,用手機錄好就可以避免這個問題。然后將其導入電腦,以文件名“test”,后綴為.wav保存到D:\MATLAB\work中,即可進行后期的運用。2.3原始信號的時頻分析時域分析:任何一段語言信號,無論是人的聲音、動物的聲音、機械的聲音還是其他自然界的聲音,它一定都會在時間上有幅值變化,并且與之會對應有相應的高音、低音頻率成分,且時間是判斷音量大小的幅值分析,所以我們采用時間序列分析法去對我們的原始信號進行分析。頻域分析:頻域分析即是對原始信號的成分構成進行研究。頻域分析方法有兩種:一個是濾波器組分析法,另一個是傅里葉分析法。本文研究所用到的是傅里葉分析方法。傅里葉變換的所做的工作就是分析頻譜,從此變換過程中我們可以看到,語音信號的音調大小,振幅的上下波動都可以被觀測出來。由此可以看出來,信號的非平穩性,這需要我們再用到短時傅里葉變換法來分析頻譜,即“短時譜”。2.4信號的加噪信號的加噪是指在原始的語音信號上面加上隨機噪聲,我們利用Rand函數來產生和原始信號等長度的隨機噪聲信號,將兩個信號疊加到同一個信號上,這就是對原始信號的加噪處理。2.5濾波器的選擇及濾波原理2.5.1巴特沃斯低通濾波器巴特沃斯濾波器是電子濾波器的一種。巴特沃斯濾波器的特點是通頻帶的頻率響應曲線最平滑。這種濾波器最先由英國工程師斯替芬·巴特沃斯(StephenButterworth)在1930年發表在英國《無線電工程》期刊的一篇論文中提出的。巴特沃斯低通濾波器是常用的模擬濾波器之一,其通帶和阻帶都有平坦的幅度響應。現給定兩個信號,一個是正弦信號,一個是矩陣信號,模擬人的噪聲,給兩個信號加隨機噪聲來構成混合信號,來進行濾波,濾波效果圖如下圖2-2:圖2-2濾波效果圖從上圖中可見,加噪之后的正弦信號和矩陣信號通過巴特沃斯低通濾波器濾波之后,其信號波形大大的減少了波動,且波形變得平滑圓潤,降噪效果明顯得到提升,可適用于本文的研究。程序代碼見附錄I。2.5.2濾波對加了噪聲信號的語音信號進行濾波處理,其用到的就是在基于Matlab2015a版本軟件上自帶的相關函數,如巴特沃斯低通濾波器的buttord函數,函數中的濾波器階數和截止頻率的值是我們可以給定的。其使用方法是[N,Wn]=buttord(wp,ws,rp,rs),其中rp為通帶衰減最大值,rs是阻帶衰減最小值,wp,ws可以是實際的頻率值,通過給定相應的值來求出濾波器階數N和截止頻率Wn,第二步是用butter函數求出頻率響應的參數即:濾波器的傳輸函數,[b,a]=butter(N,Wn,’s’),最后一步是用bilinear函數即雙線性Z變換法來求得數字濾波器的系數b,a。第3章MATLABGUI設計及使用3.1MALAB軟件簡述MATLAB是外國公司開發的軟件,其主要的應用領域涉及控制設計、信號處理以及金融建模設計等。在其功能方面,MATLAB軟件可以進行數學上的計算,數據上的可視化符號的運算,圖形的處理等一系列功能。值得一提的是在數據上的可視化功能方面,它增添了很多工具箱。尤其是在MATLAB的最新版本中,速度有了很大的提高。因此對我畢業設計的軟件部分有很大的利用價值和幫助。那么本文就是運用MATLAB進行程序編寫,在此基礎上搭建GUI界面進行語音信號的采集和分析等仿真設計。在MATLAB軟件中輸入GUIDE命令后會如下圖3-1,此界面是讓新建一個GUI界面,其中有保存路勁可選。進入主界面后,就會看到界面主要有菜單區域、工具區域、控件區域、圖形編輯區域。圖3-1新建GUI界面操作3.2核心控件功能說明3.2.1靜態文本框的使用界面上所有靜態文本框可以通過用戶預設,給出相應的固定顯示內容,它的參數主要是包括:文本框的顏色、文本框內預設字體設置、預設內容的設置、動態索引的屬性等,具體參數設置界面如圖3-2所示。圖3-2靜態文本屬性GUI界面中我們設計出的界面會涉及到美觀性以及相關的特性,屬性及功能描述可通過下表3-1可見:表3-1控件相關屬性表序號屬性功能aBackgroundColor顯示的真彩色圖像bCData顯示的真彩色圖像cForegroundColor文本顏色dString文本輸入eVisible控件是否可見fEnable使能狀態gTag定義hUserData用戶指定數據iPosition尺寸和位置jUnits位置及大小的單位每一個控件函數會執行相對應的回調,簡要列出執行方式有如下:BusyAction:處理回調函數的中斷;CallBack:連接程序系統的扭帶;CreateFcn:在對象產生過程中執行;DeleteFcn:刪除對象過程中執行;Interruptible:指定當前的回調函數在執行時是否允許中斷,去執行其他的函數。3.2.2動態文本框的使用界面上所有動態文本框可以通過用戶預設,給出需要隨時更改的內容顯示窗口,它可以根據程序循環索引不斷改變自己的內容,它的參數主要是包括:文本框的顏色、文本框內預設字體設置、預設內容的設置、動態索引的屬性等,具體參數設置界面如圖3-3所示,向動態文本框輸入顯示內容固定語句為:set(handles.edit1,'String',filepath);圖3-3動態文本框屬性3.3.3執行按鈕的使用界面上所有執行按鈕相當于一個控制開關,每點擊一次執行按鈕,這執行相應的主程序,從而完成相應的程序任務,所有的額主程序寫在執行按鈕的回調函數(functionpushbutton1_Callback(hObject,eventdata,handles))中,其中:hObject即為handletopushbutton1(seeGCBO);eventdata即為reserved-tobedefinedinafutureversionofMATLAB;handles即為structurewithhandlesanduserdata(seeGUIDATA);說明hObject為發生事件的源控件,eventdata為事件數據結構,handles為傳入的對象句柄。用戶根據自己的要求編寫相應的執行程序,具體參數設置界面如圖3-4所示。圖3-4執行按鈕屬性3.3.4坐標軸控件的使用界面上用以顯示結果的圖形表現形式,可以更加直觀了解數據的動態變化情況,具體參數設置界面如圖3-5所示。圖3-5坐標屬性3.3回調函數及數據傳遞我們每設計一個的控件,其右鍵選中下拉都會有幾種不同的回調函數,其中一種就是CallBack函數,這種函數可能會因不同的控件而可能不是回調函數,所以視情況可定,如圖3-6所示。圖3-6回調函數句柄圖形之間的層次關系,如圖3-7所示。創建圖形句柄的常見函數:(1)figure:創建一個新的圖形對象;(2)newplot:做好開始畫新圖形對象的準備;(3)axes函數:創建坐標軸圖形對象;(4)line:畫線;(5)patch:填充多邊形;(6)surface:繪制三維曲面;(7)image:顯示圖片對象;(8)uicontrol:生成用戶控制圖形對象;(9)uimenu:生成圖形窗口的菜單中層次菜單與下一級子菜單。圖3-7層次關系圖而獲取與設置對象屬性常用到的函數有:gcf函數:獲得當前圖形窗口的句柄;gca函數:獲得當前坐標軸的句柄;gco函數:獲得當前對象的句柄;gcbo函數:獲得當前正在執行調用的對象的句柄;gcbf函數:獲取包括正在執行調用的對象的圖形句柄;delete函數:刪除句柄所對應的圖形對象;findobj函數:查找具有某種屬性的圖形對象。設置方法:(1)get函數返回某些對象屬性的當前值。例如:p=get(obj,'Position');(2)函數set改變句柄圖形對象屬性,例如:set(obj,'Position',vect)。在GUI編程序代碼時,值傳遞的方式我會用到如下2種方法:第一種方法是調用主函數的數據結構傳值,即handles。具體例子如下:functionsliderbar1_Callback(hObject,eventdata,handles)%%eg1v1=get(hObject,'value');obj=handles.Text1%直接定位Tag為Text1的控件set(obj,'value',v1);%%eg2handles.MyStruct.P1=v1;%更改handles中的數據guidata(hObject,handles);%更新handlesend通過這個編程我們可以看出假設一個圖像窗口句柄中有handles,那子函數Callback就可以讓handles進行值傳遞。第二種方法是用控件的UserData來傳值:每個控件我們都可以對它進行定義域,可以做一個最直觀的例子如下:t1=timer('TimerFcn',{@Timer1Fcn},'ErrorFcn',@Timer1ErrorFcn},'Period',1.0,'ExecutionMode','fixedrate');t1.Userfata=handles.MyStruct;其中Timer1Fcn表面上看是未給它遞入參數,然而函數的定義我們一定要有2個參數或以上:functionTimer1Fcn(obj,eventata);obj.UserData=XXXXX;或者我們定義Timer只允許這樣傳遞一個參數,又或者可以像如下這樣進行傳值。t1=timer('TimerFcn',{@Timer1Fcn,handles},'ErrorFcn',{@Timer1ErroFcnr,handles},'Period',1.0,'ExecutionMode','fixedrate');第4章測試效果預先準備一段時長大約為8s的語音信號“test.wav”,以此在平臺上完成后續的測試步驟。4.1語音信號采集我們采用MATLAB中的自帶audioread函數對語音信號進行采集,這個函數是我們可以直接使用的,調用方式如下:[y,fs]=audioread('D:\test.wav');其中括號內的是指我們錄制的語音所存放的路徑,其中y是聲音數據量,fs是采樣頻率,我們將兩個值放入MATLAB的工作空間。然后采用傅里葉變換分析法,即fft(y)函數,選取長度y里的點數進行傅里葉變換:y_p=fft(y,n),可得到頻域。原始語音信號及其頻譜如下圖4-1所示:圖4-1原始語音信號4.2信號加噪采用matlab中的randn函數,它可以生成標準正態分布的隨機數或者是矩陣,所以可以利用這個函數可以生成隨機噪聲,以達到目的。相關功能代碼編程如下:noise=n*mean(pyr(:,1))*randn(n,1);其中n表明生成的隨機噪聲函數的幅值取決于原始信號的平均值的n倍,在信號加噪過程中,我將n分別取了n=0.01,n=0.1,n=1,n=10四個值,測試比較圖如下:當取n值為0.01時,加噪后的頻譜圖與原始信號的對比圖如下圖4-2:圖4-2n=0.01當取n值為0.1時,加噪后的頻譜圖與原始信號的對比圖如下圖4-3:圖4-3n=0.1當取n值為1時,加噪后的頻譜圖與原始信號的對比圖如下圖4-4:圖4-4n=1當取n值為10時,加噪后的頻譜圖與原始信號的對比圖如下圖4-5:圖4-5n=10通過四組的測試值,我發現當n=0.01時,其加噪后的時頻幅值與原始信號相比,其波動不大,其只符合在較安靜的環境下測試;取n=1和n=10時,發現其相比原始信號,其噪聲的幅值過于大,易造成原始信號的失真,最終發現取n=0.1時,加噪對于原始信號的是最符合我們平常所處的環境。之所以選擇0.1倍于基準聲幅,也是為了避免添加具體數值噪聲帶來的變化不明顯或者過強,造成原始語音信號失真過多。此時加噪后的信號時域和頻域分析如圖4-3所示。4.3信號數字濾波利用MATLAB數字濾波器設置函數:[n,wn]=buttord(wp,ws,rp,rs,'s');[b,a]=butter(n,wn,'s');[bz,az]=bilinear(b,a,0.5);設置一個巴特沃斯低通濾波器,濾波器的頻率響應曲線如圖4-6所示。圖4-6數字濾波器我選擇用到巴特沃斯低通濾波器原因是通過測試,巴特沃斯低通濾波器對加噪信號的濾波效果是最好的。當我們選定此濾波器之后,就開始需要確定其濾波器的參數值。在我們采用雙線性變換法當中,是將加噪后的信號通過低通濾波器,經選擇嘗試多組性能指標參數如表4-1下,發現Fs=1000,Fp=1200,rp=2,rp=80這組參數對濾波的效果最好。表4-1測試值FsFprprs10001200280110013002801200140028013001500280濾波后的信號時頻分析如圖4-7所示。圖4-7濾波后的信號4.4聲音回放無論是原始聲音、還是加噪后的聲音都可以再由數字信號轉化為模擬信號,從而實現語音信號的播放。[pyr,fs]=audioread(filepath);%聲音讀取sound(pyr(:,1),fs);%聲音回放結合原始信號加噪和加噪信號的濾波的測試結果來看,影響聲音回放效果跟我們選擇的基準聲幅的倍數和濾波參數值的大小有關系。通過幾次的測試,我發現當選擇0.1倍基準聲幅,且通帶邊界頻率Fp=1000,抽樣頻率Fs=2000,rp=2,rs=80時,此時聲音回放效果最佳,既能恢復到原始聲音,且對人的聲音具有較高的識別度。第5章仿真系統設計及實現5.1語音信號的采集模塊語音信號采集這個模塊,為做到系統測試的普適性和統一性,本文首先對于音頻文件的格式定義為“*.wav”格式,放置路徑不限,可以根據軟件自適應選擇文件的位置,如圖5-1所示,當點擊“導入語音”按鈕,則進入文件地址選擇頁面,如圖5-2所示,當前文件夾中所有滿足條件的文件都會顯示在當前窗口,一旦選中某個音頻文件后,動態文本框中會顯示該文件的絕對路徑信息,方便用戶檢查。圖5-1語音采集模塊圖5-2文件打開5.2語音信號分析模塊語音分析模塊的設置,為加強使用系統者對語音信號采集與分析的效果體現以及方便用戶進行對比,為此設計了六個按鍵,分別是原始時域分析、原始頻域分析、加噪時域分析、加噪頻域分析、濾波后時域分析、濾波后頻域分析。按照處理流程,第一步是顯示原始語音信號的時頻分析效果,根據提取出來的語音信號特征分別進行時域顯示和頻域顯示;然后加入隨機噪聲,通過分析后,就會有加噪后的語音信號時域顯示和頻域顯示波形圖;最后進行低通濾波,實現原始信號的恢復,每一個控件的設置會對應的有一個Callback回調函數,通過對這個回調函數的編程來實現對應每個按鍵的功能。最后加上播放語音和關閉按鍵,從而盡可能地還原信號,播放效果。整體語音分析模塊如圖5-3所示。圖5-3語音分析模塊5.3整體界面設計為使用戶更簡潔明了、直觀的看到我們的系統設計,我將語音采集模塊和語音分析模快放置在同一個界面,并用靜態文本框加上系統名稱:“基于MatlabGUI的語音信號采集與分析系統”。其界面沒有加過多的美觀設計。最終搭建完成的語音信號采集與分析系統的平臺控件如圖5-4所示。系統的編程代碼見附錄II。圖5-4完整界面5.4仿真及實現效果為檢驗其系統對語音信號的采集與處理效果,我將錄制來自三種不同的聲音來觀測其加噪、濾波前后的頻譜圖,及聲音回放的效果。錄制一段帶音樂的狗叫聲,時間大約在15s左右,其仿真濾波效果如下圖5-5:圖5-5動物濾波頻譜對比圖錄制一段人的聲音,大約在8s左右,文字內容為:“武漢加油!中國加油!戰勝疫情!富國強兵!”頻譜圖對比效果如下圖5-6:圖5-6人的聲音頻譜對比圖錄制一段自然界流水的聲音,大約在9s左右,頻譜對比圖如下圖5-7:圖5-7流水頻譜對比圖分析與小結:通過選取錄制三種不同的聲音,在系統上進行加噪,濾波處理,與原始信號的頻譜進行對比,我們可以看到濾波之后的頻譜圖明顯在原始信號的兩邊減少了幅度的波動,濾波效果得到顯現,且從聲音的回放中,能清晰可聽,辨識度高,能識別出語音內容。系統整體仿真效果是成功的。此系統的界面設計可應用于語音信號的分析與處理的基礎教學,對于學者理解語音信號的特性具有很好的效果。第6章總結針對本次畢業設計,總體來說我對語音信號有了新的一個認識。本次設計首先是對語音信號的采集與分析做了一個背景調查,發現語音信號識別技術廣泛運用在我們身邊,如常用的微信語音助手、車載語音導航、智能機器人語音識別等,但是普遍面臨的問題都會有大詞匯量連續語音識別無法正確、合理的運用,在室外環境噪聲相對較大的情況下,語音識別會面臨不穩定性以及恢復原聲的困難性。針對這些,我再查看了關于此的國內外研究現狀,大多是圍繞此再不斷的發展研究進步當中。于是我開始了對我本文的設計。基于本次畢業設計是在MATLAB2015A版本軟件上完成的,我首先去了解了MATLAB的相關使用說明,對軟件的基礎知識做進一步加深。再者開始研究語音信號采集的原理,錄制好一段語音導入系統,對此原始語音信號進行一個時域分析,觀測其原始信號隨時間的一個幅值變化,然后通過傅里葉變換來取得原始信號的頻譜圖。隨后加入一個跟原始信號等長度的隨機噪聲,并觀測其加入噪聲后的時域圖和頻譜圖,最后通過驗證發現巴特沃斯低通濾波器的濾波效果最好,所以本設計采用了此濾波器來對加噪信號的濾波。通過不斷測試,給多組測試值參數,最終得出相應的性能指標。此外,本研究是在先設計好的GUI界面上完成的,所以我針對于此再去學習關于GUIDE模型搭建的知識,主要涉及到的是靜態、動態文本框,控件以及回調函數的運用。在搭建好MATLABGUI界面系統之后,我選擇了三段不同的錄音來實現我的設計仿真效果,通過分析對比其時頻圖,并播放其原始聲音,發現整個設計下來還是成功的。介于本次設計是做一款在MATLAB軟件上實現語音信號的采集及分析的用戶圖形界面系統,其主要的優點還是以界面、窗口式的畫面呈現在我們面前,以便我們更直觀的去研究語音信號的分析過程。雖然應用較少,其中也存在不足之處,但這可以運用到我們對語音信號基礎知識的教學研究上面。在本次畢業設計中,也遇到許多的問題,通過這次的經歷,我發現需要把學到的知識去真正用到實踐中才能發現自己對知識的掌握程度,而且還需要養成具有邏輯的思考,而不是隨意地使用知識。這次設計培養了我克服苦難的意志堅持性和百折不撓地克服困難和障礙的能力。參考文獻:[1]蘇金明,王永利.MATLAB7.0實用指南(上冊)[M].北京:電子工業出版社,2004,81-98.[2]劉慧穎.MATLABR2006a基礎教程[M].北京:清華大學出版社,2007,132-136.[3]劉敏,魏玲.Matlab通信仿真與應用[J].北京:國防工業出版社,2001.1.[4]趙怡紅,張常年,數字信號處理及其MATLAB的實現[M].北京:化學工業出版社,2002.1.[5]徐俊文,王強,金珩.MATLAB環境下的GUI編程[J].內蒙古民族大學學報(自然科學版),2006(06):640-641.[6]黨丹鳳,周立勇,王海濤.基于MATLAB的圖形用戶界面設計[J].測繪技術裝備,2015,17(03):71-74.[7]周淵,王炳和,劉斌勝.基于MATLAB的噪聲信號采集與分析系統的設計[J].電聲技術,2004(07):52-54.[8]柴瑞娟.基于MATLABGUI的線性控制系統教學仿真軟件的設計[J].計算機與現代化,2003(09):65-67.[9]鐘可君,張海林.基于MatlabGUI設計的光學實驗仿真[J].實驗室研究與探索,2010,29(10):52-53+80.[10]呂波,黃靖鈞.MATLAB與大學物理波動光學教學整合的研究[J].九江學院學報(自然科學版),2010,25(03).[11]SportsMonitoringDataandVideoInterfaceUsingaGUIAutoGenerationMatlabTool[J].HugoG.Espinosa,DanielA.James,SeanKelly,AndrewWixted.ProcediaEngineering.2017:15-19.[12]Matlab-basedinterfaceforthesimultaneousacquisitionofforcemeasuresandDopplerultrasoundmuscularimages[J].ComputerMethodsandProgramsinBiomedicine.2016:20-25.[13]燕麗紅.基于Matlab&GUI語音信號處理平臺的設計[J].計算機與數字工程,2020,48(01):267-270.[14]余海峰.基于matlab的語音信號特征提取方法研究[J].信息通信,2019(12):75-77.[15]馬曉偉.基于智能聲控需求的語音識別研究[J].通訊世界,2019,26(10):133-134.[16]卓嘎,次仁尼瑪.基于Matlab的藏語語音頻譜仿真和分析[J].電子設計工程,2019,27(19):170-173.[17]鄧克琦.基于MATLAB實現語音信號儲存空間的簡化[J].電聲技術,2019,43(10):8-10.[18]白燕燕,胡曉霞.基于MATLAB的語音短時譜的分析[J].電子測試,2019(18):44-45.[19]王青云,梁瑞宇,趙力,馮月芹,包永強.實時語音信號處理教學與實驗方法研究[J].實驗室研究與探索,2019,38(09):186-189+220.[20]白燕燕,胡曉霞.基于MATLAB語譜圖的聲樂研究[J].軟件工程,2019,22(09):1-4.[21]張亞峰,劉靜怡.自適應語音信號去噪處理研究[J].精密制造與自動化,2019(03):39-42.致謝畢業設計是大學本科四年最后一次考核環節,也是最重要的一次考核。首先感謝母校,廣州大學松田學院四年來對我的培養和幫助,為我的大學生活提供了良好的環境,為即將正式進入社會的我做好鋪墊。本次畢業設計,我也非常感謝我的指導老師,趙老師在我的整個論文工作中,給我提出很多有效的意見,幫助我迅速的找到論文的不足之處,細心負責、嚴格要求的態度使我感觸很深,能在很早的時間里督促我去按指定的時間里完成論文。同時也感謝身邊一起努力的同學,在我困惑提出疑問的時候給予我幫助和鼓勵。最后,懇切希望各位老師認真審閱,指出其中不足之處。附錄附錄I驗證巴特沃斯濾波器效果程序代碼Fs=1000;%采樣率N=1000;%采樣點數n=0:N-1;t=0:1/Fs:1-1/Fs;%時間序列Signal_Original_1=sin(2*pi*10*t)+sin(2*pi*20*t)+sin(2*pi*30*t);Signal_Original_2=[zeros(1,100),20*ones(1,20),-2*ones(1,30),5*ones(180),-5*ones(1,30),9*ones(1,140),-4*ones(1,40),3*ones(1,220),12*ones(1,100),5*ones(1,20),25*ones(1,30),7*ones(1,190)];Noise_White_2=0.5*randn(1,1000);%高斯白噪聲Noise_White_1=[0.3*randn(1,500),rand(1,500)];%前500點高斯分部白噪聲,后500點均勻分布白噪聲Mix_Signal_1=Signal_Original_1+Noise_White_1;%構造的混合信號Mix_Signal_2=Signal_Original_2+Noise_White_2;%構造的混合信號%信號Mix_Signal_1和Mix_Signal_2分別作巴特沃斯低通濾波。figure(1);Wc=2*50/Fs;%截止頻率50Hz[b,a]=butter(4,Wc);Signal_Filter=filter(b,a,Mix_Signal_1);subplot(4,1,1);%Mix_Signal_1原始信號plot(Mix_Signal_1);axis([0,1000,-4,4]);title('原始信號');subplot(4,1,2);%Mix_Signal_1低通濾波濾波后信號plot(Signal_Filter);axis([0,1000,-4,4]);title('巴特沃斯低通濾波后信號');%混合信號Mix_Signal_2巴特沃斯低通濾波Wc=2*100/Fs;%截止頻率100Hz[b,a]=butter(4,Wc);Signal_Filter=filter(b,a,Mix_Signal_2);subplot(4,1,3);%Mix_Signal_2原始信號plot(Mix_Signal_2);axis([0,1000,-10,30]);title('原始信號');subplot(4,1,4);%Mix_Signal_2低通濾波濾波后信號plot(Signal_Filter);axis([0,1000,-10,30]);title('巴特沃斯低通濾波后信號');附錄II源程序代碼functionvarargout=yuyinxinhao(varargin)%YUYINXINHAOMATLABcodeforyuyinxinhao.fig%YUYINXINHAO,byitself,createsanewYUYINXINHAOorraisestheexisting%singleton*.%%H=YUYINXINHAOreturnsthehandletoanewYUYINXINHAOorthehandleto%theexistingsingleton*.%%YUYINXINHAO('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinYUYINXINHAO.Mwiththegiveninputarguments.%%YUYINXINHAO('Property','Value',...)createsanewYUYINXINHAOorraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforeyuyinxinhao_OpeningFcngetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.Allinputsarepassedtoyuyinxinhao_OpeningFcnviavarargin.%%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone%instancetorun(singleton)".%%Seealso:GUIDE,GUIDATA,GUIHANDLES%Edittheabovetexttomodifytheresponsetohelpyuyinxinhao%LastModifiedbyGUIDEv2.514-Feb-202010:01:17%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@yuyinxinhao_OpeningFcn,...'gui_OutputFcn',@yuyinxinhao_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%Executesjustbeforeyuyinxinhaoismadevisible.functionyuyinxinhao_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstoyuyinxinhao(seeVARARGIN)%Choosedefaultcommandlineoutputforyuyinxinhaohandles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakesyuyinxinhaowaitforuserresponse(seeUIRESUME)%uiwait(handles.figure1);%Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=yuyinxinhao_OutputFcn(hObject,~,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;%Executesonbuttonpressinpushbutton2.functionpushbutton2_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%聲音讀取并返回樣本數據pyr和數據的采樣率fs%sound(pyr,fs);%聲音回放axes(handles.axes1);%將上面的坐標軸作為當前的坐標軸plot(pyr(:,1));%畫出樣本數據pyr第一列的所有元素,即原始信號xlabel('時間');ylabel('幅度');%title('初始信號波形');%繪出時域波set(gca,'FontSize',6);%設置文字大小,同時影響坐標軸標注、圖例、標題等。grid;%Executesonbuttonpressinpushbutton3.functionpushbutton3_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%聲音讀取n=length(pyr(:,1));%選取變換的點數pyr1=fft(pyr(:,1),n);%對n點進行快速傅里葉變換%繪出頻域頻譜axes(handles.axes1);plot(abs(fftshift(pyr1)));%畫出頻譜平移的之后取絕對值得頻譜圖%title('初始信號頻譜');xlabel('頻率');ylabel('幅度');set(gca,'FontSize',6);%設置文字大小,同時影響坐標軸標注、圖例、標題等。grid;%Executesonbuttonpressinpushbutton4.functionpushbutton4_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton4(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%聲音讀取n=length(pyr);noise=0.5*mean(pyr(:,1))*randn(n,1);%加噪聲%noise=noise';s=pyr(:,1)+noise;%將兩個信號疊加到一個新的信號加噪axes(handles.axes2);plot(s);%title('加噪聲后信號波形')xlabel('時間');ylabel('幅度');set(gca,'FontSize',6);%設置文字大小,同時影響坐標軸標注、圖例、標題等。grid;functionpushbutton5_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton5(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%聲音讀取n=length(pyr(:,1));noise=0.1*mean(pyr(:,1))*randn(n,1);%加噪聲%noise=noise';s=pyr(:,1)+noise;%畫出加噪之后,其時域頻域S=fft(s,n);axes(handles.axes2);plot(abs(fftshift(S)));xlabel('頻率');ylabel('幅度');%title('加噪聲后信號信號頻譜');set(gca,'FoExecutesonbuttonpressinpushbutton5.ntSize',6);%設置文字大小,同時影響坐標軸標注、圖例、標題等。grid;%Executesonbuttonpressinpushbutton6.functionpushbutton6_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton6(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%聲音讀取%設計IIR低通濾波器rp=2;%通帶最大衰減2dbrs=80;%阻帶最小衰減80dbFt=8000;%采樣頻率Fp=1000;%通帶邊界頻率Fs=1200;%抽樣頻率為2000Hzwp=2*pi*Fp/Ft;%模擬角頻率ws=2*pi*Fs/Ft;%求出待設計的模擬濾波器的邊界頻率[n,wn]=buttord(wp,ws,rp,rs,'s');%低通濾波器的階數和截止頻率[b,a]=butter(n,wn,'s');%S域頻率響應的參數即:濾波器的傳輸函數[bz,az]=bilinear(b,a,0.5);%利用雙線性變換實現頻率響應S域到Z域的變換%濾波n1=length(pyr(:,1));%計算音頻信號的長度noise=0.1*mean(pyr(:,1))*randn(n1,1);%加噪聲s=pyr(:,1)+noise;z=filter(bz,az,s);%濾波axes(handles.axes3);plot(z);%title('低通濾波后的信號波形');xlabel('時間');ylabel('幅度');set(gca,'FontSize',6);%設置文字大小,同時影響坐標軸標注、圖例、標題等。grid;%Executesonbuttonpressinpushbutton7.functionpushbutton7_Callback(hObject,eventdata,handles)%hObjecthandletopushbutton7(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)globalfilepath[pyr,fs]=audioread(filepath);%聲音讀取rp=2;rs=80;Ft=8000;Fp=1000;Fs=1200;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;%求出待設計的模擬濾波器的邊界頻率[n,wn]=buttord(wp,ws,rp,rs,'s');%低通濾波器的階數和截止頻率[b,a]=butter(n,wn,'s');%S域頻率響應的參數即:濾波器的傳輸函數[bz,az]=bilinear(b,a,0.5);%利用雙線性變換實現頻率響應S域到Z域的變換%濾波n1=length(pyr(:,1));noise=0.1*mean(pyr(:,1))*randn(n1,1);%加

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論