系統設計

  

MATLAB 圖形化使用者介面(Graphic User Interface, GUI)

     目前GUI的設計,可以分為兩種;一種為M 檔案,它的好處是適用於複雜的 GUI 介面,而且可將 GUI 應用程式集中於

     一個檔案,執行效率比較好;另一種為「圖形化使用者介面設計環境」(Graphic User Interface Design

     Environment)GUIDE 的好處在於可以快速地「拉」出介面,具有「所看到的即為可用的」性質,方便又快速,並且可

     自動產生每一個控制物件的標準反應函式,使用者只要填入所需的指令或敘述。我們這次的專題主要所採用的是

     GUIDE,藉由他的好處使我們可以快速的拉出我們想要用的圖形。

                 主要我們會使用到GUI來建立資料庫的部份是在下面紅字的部份:

2.6

       如圖2.7所示,在MATLABcommand中輸入GUIDE 即可開啟主面板。以下是我們所設計的GUIDE介面,主要是可以讓評分者自己挑選想

       要的歌曲,然後錄起來進去比對,上下都跑出波形圖,然後挑選想要的評分方式,最後會出現評分結果。

2.7

          A:是我們歌曲選單,可以按這邊來聽取我們想要唱的歌,可以先聽原唱者唱一遍,按下去的同時會跑出圖2.8結果,可以先

          看歌詞以及它的音量和音高的分佈。如圖2.8與圖2.9所示,為我們所實際測試所跑出來的相關結果分析。

2.8

                    B:因為每首歌曲的方式不盡相同,所以要選擇不同的錄音時間,這樣比對起來準確率會比較精準。

          C:接下來就是最重要的步驟了,利用B所錄的音訊檔,來和原唱者做比對,藉此我們就可以依據音高、音量、聲音走勢

            來做評分。

          D:在這裡我們就會把你的各地方所拿到的分數加總在這邊呈現。

          E:依據你各個項目不同的分數,我們也會給你適當的評語

 

          以下為我們所實際測試所跑出來的分析

2.9

          左半邊的三個圖為原唱者所跑出來的圖,由上而下分別是原本的音訊圖、音量圖和音高圖;而右半邊是測試者所跑出

          來的圖。       

 

 

旋律辨識By音高追蹤(ACFCepstrum)

ACF

     

 

      ACF的系統設計流程圖如下:

      我們就來分別討論其中各個步驟的系統設計原因以及其實作結果。

 

          1.Local average filter

          此低通濾波器的設置乃是為了減低凸波。比較音訊加上濾波器前後的結果:

2.8

          上圖的左側為加上濾波器前的音訊,右圖則是加上濾波器後的結果。雖然左右比對下波形結構相同,但是注意看縱軸

          的刻度,會發現右圖的刻度會比左圖低了一些,而且在振幅高與振幅較低的地方的差異度變小了。

 

          2.Center clipper

      首先我們要決定Center clipper中最重要的參數─CL,也就是clipping threshold。決定CL的步驟如下:   

      1.輸入音框,可得音框長度

      2.將音框平均分成三部分

      3.找出第一區域最大值(maxi1)及第二區域最大值(maxi2)

      4.比較此二最大值之大小,取較小者(maxi1 or maxi2)

      5.CL(clipping threshold)=min(maxi1maxi2)*2/3

   

      接下來,討論所要採用的截波方式以及它們的各種優缺點。

      我們在原理分析部分有提到三種截波方式,但我們只採用第一及第二種的截波方式,它們的式子如下:

      1.y(n)=(x(n)-CL),  x(n)>=CL

                =0,         │x(n)│<CL

                =(x(n)+CL),  x(n)<=-CL     (2-9)

      2.y(n)=x(n),       x(n)>=CL

                =0,         │x(n)│<CL

                =-x(n),      x(n)<=-CL           (2-10)

 

2.9:方式1

 

2.10:方式2

      我們就來試試看第一種截波及第二種截波方式的差異就可以發現,方法一及方法二所抓出來的音高曲線都一樣,我們

      看一下它們的數學式以及它們截出來的圖:

2.11:二種應用的Center clipper的截圖,左為方式1,右為方式2

 

  可以發現,這二種截波方式在│x(n)│>=CL時的值都是線性的,所以它們截波方式只差在方式1將y軸低於CL的部分全部截掉,而方式2則是將低於CL

  的值歸零,所以當然運算出的音高曲線會一樣,但是因為方式1是截去,跟方式2的歸零比起來運算量較低,所以我們採用方式1。而在系統流程中,

  是把中央截波器放在ACF之後,我們也有試過將中央截波器放在ACF之前,這樣等於是直接對音框作中央截波,結果如圖2.12所示:
 

2.12:將center clipper置於ACF前的結果

      跟之前同樣的音訊套用原本的做法比起來:

2.13center clipper置於ACF之後

 

         

          跟之前同樣的音訊套用原本的做法比起來,可以發現,將中央截波器放在ACF之前,會使得音高曲線的點變多,但是在唱同一個音的地方,卻有些點

          (圖2.12由紅圈圈框起來的地方)跑到低八度的地方去了,這就表示再經過ACF運算、擷取音高後運算出的音高曲線並不準確,所以這種做法並不成 

          立。

 

          返回首頁