孟若蘭,劉艷麗,陳錦苗,李昊天,王琪瑤
(承德醫(yī)學(xué)院生物醫(yī)學(xué)工程系,河北承德,067000)
關(guān)鍵字: MATLAB GUI;變聲器;設(shè)計
MATLAB是兩個詞組組合而成的,這兩詞組分別是matrix和laboratory。其用漢語可以翻譯成為矩形實驗室或者矩形工廠。其原理或者功能是,MATLAB能夠?qū)?shù)值分析、矩陣計算、科學(xué)數(shù)據(jù)可視化以及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,這便為我國的科學(xué)研究、工程設(shè)計以及必須進行有效數(shù)值計算的眾多科學(xué)領(lǐng)域帶來了一場全新的變革,其成功為這些科學(xué)領(lǐng)域提供了一種全面且科學(xué)的解決方案,并且成功突破了傳統(tǒng)非交互式程序設(shè)計語言(如C、Fortran)編輯模式的局限性??偠灾?,MATLAB是能夠在一定程度上作為代表當今國際科學(xué)計算軟件水平的一個重要產(chǎn)物。
關(guān)于 GUI,其英文全稱為Graphical User Interface。為了應(yīng)用方便,都習(xí)慣性使用其簡稱—— GUI。 GUI用漢語翻譯稱為人機交互圖形用戶界面設(shè)計。從理論層面來進行解釋,其主要指的是采用圖形方式顯示的計算機操作用戶界面。GUI和傳統(tǒng)意義上所使用的計算機命令界面相比較,其最大的一個優(yōu)勢或者特點便是其所具備的圖形界面。但從視覺上來分析,圖形界面要比命令界面更具有可接受性,更能夠吸引住大眾的目光。
為了實現(xiàn)變聲的目的,從男聲變女聲、女聲變男聲、老人變童聲等需要在分析語音信號參數(shù)的過程當中適時采用短時自相關(guān)法提取語音信號的基音周期。與此同時,也會應(yīng)用到LPC即倒譜分析法分析共振峰的范圍,然后再通過MATLAB編寫程序來對語音參數(shù)進行修改,進而使其更加接近想要的聲音的范圍,構(gòu)置GUI界面。
一般情況下,在進行性別變聲的過程中,我們需要考慮的因素主要包括幾個方面,諸如基音的周期、基音的頻率、共振峰的頻率等等,其主要變化諸如以上幾個因素的頻率來實現(xiàn)聲音的轉(zhuǎn)變。下表是不同聲音即男聲、女聲和童聲在基頻、共振峰方面的關(guān)系。
表1 人群中基頻和共振峰之間的關(guān)系
對語音信號進行低通濾波,借助MATLAB編程采用自相關(guān)算法,對基音周期進行估值,然后再繼續(xù)完成自相關(guān)計算。
首先,構(gòu)建巴特沃斯濾波器。我們需要根據(jù)特定人的說話特征在第一時間內(nèi)確定相應(yīng)的指標參數(shù),然后根據(jù)本段語音設(shè)計計算出巴特沃斯模擬濾波器的階數(shù)N是5,3dB截止頻率,計算出? 為0.175,歸一化c低通原型系統(tǒng)函數(shù)為:
其中,b0=1.0000,b1=3.2361,b2=5.2361,b3=5.2361,b4=3.2361。將 P= S/ ?c代入 Ga(p)中,得到低通濾波器 :
以設(shè)定的濾波器作為根據(jù),進行MATLAB程序的編寫,如果有信號經(jīng)過低通濾波器之后,其必然對會原始信號的濾波產(chǎn)生一定的影響。經(jīng)過低通濾波器后,其還是會保留原始基音頻率。隨后我們再用2KHz采用頻率進行采用,采樣的序列設(shè)為X(n),然后再進行自相關(guān)計算。
然后,語音信號的短時自相關(guān)函數(shù)
我們將語音信號的自相關(guān)函數(shù)定義為:
在這個公式當中,不同的字母代表著不同的含義:第一,xn(n)代表的是語音信號,K代表的是信號延遲點數(shù),N代表的是語音幀長度。經(jīng)過低通濾波之后,我們選取了160個樣點數(shù),每一個語音幀長度都確定為10ms,對每幀語音求短時自相關(guān),獲取到最大點數(shù),這就是其在基音周期當中表現(xiàn)出來的峰值。而峰值之間的間隔平均值也就是我們要計算出的基音周期。在這里筆者想要強調(diào)一點內(nèi)容,因為在圖中并不是所有的樣點都是有價值的,其會摻雜著很多的野點,因為我們在編寫MATLAB程序時,一定要在排除掉這些野點之后計算出對應(yīng)基音周期。
我們在分析線性預(yù)測之后,可以得出合成濾波器的系統(tǒng)函數(shù)是:
我們利用線性預(yù)測的基本思想,來對現(xiàn)在或者未來的樣點值進行預(yù)測,其中會借用到過去M個樣點值:。其中,?()yn代表的是預(yù)測信號,ia代表的是預(yù)測系數(shù),而y(n)則代表的是取樣信號,預(yù)測誤差ε(n)則為
基于此,我們便可以通過在某個準則下使預(yù)測誤差ε( n )達到最小值的方法來決定位移的一組線性預(yù)測參數(shù)。此外,把語音信號的某一幀內(nèi)的短時均方預(yù)測誤差定義為:
關(guān)于GUI界面設(shè)計,其需要在MATLAB的基礎(chǔ)上新建立起GUI,根據(jù)需求添加各個部件,完成以下設(shè)計。
圖1 GUI界面設(shè)計圖
然后,打開一段男聲錄制好的聲音,進行仿真實驗,其具體效果如圖2所示。
圖2 最終的仿真合成變聲圖
上述此種變聲器的設(shè)計最大的優(yōu)勢就在于其新建了LPC倒譜法,專門用來提取共振峰。除此之外,其還能夠有效控制相關(guān)參數(shù),省去了很多比較復(fù)雜或者麻煩的計算步驟和問題。這會是未來變聲器的一個重要發(fā)展和完善方向。