專利名稱::聲音信號的音框基本周期的計算方法及系統的制作方法
技術領域:
:本發明涉及一種聲音信號的音框基本周期的計算方法及系統。
背景技術:
:音高檢測算法(PitchDetectionAlgorithm)是針對聲音信號的音高(pitch)作估算所設計出來的算法,這些算法主要是在估算及^r測聲音波形的基頻。音高檢測的應用非常廣泛,如在語言學習上,即是以音高檢測來找出語音基頻的軌跡,并與標準語音模板比對,進行所謂的音調評分。另外,音高偵測也可應用于旋律識別(MelodyRecognition),擷取啤唱者之歌聲來計算其音高向量,進而將此音高向量與音樂音高數據庫進行比對,找出最接近的歌曲,以達到畔唱找歌的功能。KTV伴唱機更利用音高偵測技術,衍生出歌唱音準評分及伴奏跟調等功能。音高檢測算法主要分為兩種類型,一種為利用聲音信號在頻域(FrequencyDomain)上的特性來做音高檢測,另一種則是利用聲音信號在時域(TimeDomain)上的特性來做音高檢測。不管是在頻域或時域上的音高檢測算法,均是用來求出聲音信號的基本周期。在時域上的音高檢測算法,是從輸入信號變動的波形中找出重復出現的波形,也就是利用聲音波形相似的特征來找出其基本周期。在作法上是先將聲音信號切成一個個的音框(frame),然后針對每個音框來作音高檢測,也就是將音框內之原始聲音信號與聲音位移后之信號依序作相似度比對。當此位移時間距離等于音高頻率倒數時,聲音信號和其位移信號必有最大的相似度,此時便可求出基本周期。時域上的各種算法就是在定義尋找這兩種信號相似度的算法法則,而目前在時域上較為廣泛使用的算法為平均振幅差異函凄t(AverageMagnitudeDifferenceFunction,AMDF)算法以及自相關(Auto-CorrelationFunction,ACF)算法。無論是利用ACF算法或AMDF算法來進行音高檢測,最后都有一個重要的步驟,就是找出局部極值。以ACF算法來說,就是要找出聲音信號之ACF曲線的局部最大值(localmaximum),而在AMDF算法中,則是要找出聲音信號之AMDF曲線的局部最小值(localminimum)。這些局部極值即是所謂的音高點,后續再通過這些音高點來計算聲音信號的基頻。圖1A為一聲音信號的AMDF曲線示意圖。請參照圖1A,以虛線圏起之部分即為AMDF曲線100的局部最小值。在找出局部最小值后,接下來則是要計算基本周期。已知的一種作法是直接找出最小的局部最小值,然后取該點與原點間的距離作為聲音信號的基本周期。但是這種作法的誤判率非常高,因為并非所有AMDF曲線的第一個波谷均為最小值,如圖1B所繪示之AMDF曲線110。為此,當前提出另一種方法,也就是找出最小及次小的局部最小值,如圖1B之102與104,然后計算點102至點104的距離,即為聲音信號的基本周期。然而,此種作法也不盡理想,以圖1C所繪示之AMDF曲線120來說,利用此已知方法所算出來的基本周期會是實際上的兩倍。
發明內容本發明所要解決的技術問題是提供一種聲音信號的音框基本周期的計算方法及系統,解決了現有技術中存在無法準確地算出聲音信號的音框基本周期的問題。為了解決上述問題,本發明提供了一種聲音信號的音框基本周期的計算方法是利用聲音信號在時域上經音高檢測算法所產生的音高點來求出聲音信號的基本周期,其中聲音信號在一音框中經音高檢測演算后會獲得復數個音高點,每個音高點均有對應之坐標值(x,y),且這些x坐標值由小至大排序為數組。此計算方法的步驟如下(a)選取最小之x坐標值為一基準值與一累加值;(b)將基準值與累加值相加,以得一比較值,其中當比較值小于數組中最大之x坐標值時,更包括將比較值與其余x坐標值依序進行比對,并計算比較值與這些x坐標值之間的差異值,若比較值與一x坐標值的差異值小于門坎值時,以x坐標值取代基準值后回到步驟(b);若比較值與這些x坐標值的差異值大于門坎值時,選取次一X坐標值取代基準值及累加值,并回到步驟(b)。反之,當比較值大于數組中最大之X坐標值時,利用累加值計算出聲音信號之音框基本周期。本發明還提供了一種計算聲音信號的音框基本周期的系統,主要是由取樣模塊、比對模塊、累加模塊及計算模塊所構成,且其是利用聲音信號之在時域上經音高檢測算法所產生的音高點來求出聲音信號的基本周期,其中聲音信號在一音框中經音高檢測演算后會獲得復數個音高點,每個音高點均有對應之坐標值(x,y),而這些坐標值是由小至大排列為數組。其中,取樣模塊用于選取一x坐標值作為基準值及累加值,且其第一次所選取之x坐標值為最小的x坐標值。累加模塊用于接收取樣模塊所輸出之基準值及累加值,并將基準值與該累加值相加,以輸出一比較值。比對模塊用于接收累加模塊所輸出之比較值,并對比較值與其余x坐標值依序進行比對,以及計算比較值與這些x坐標值的差異值,其中當比較值小于數組中最大之x坐標值,且其與一x坐標值的差異值小于門坎值時,將此x坐標值反饋至累加模塊以取代基準值;以及當比較值小于數組中最大之x坐標值,且其與這些x坐標值的差異值大于門坎值時,輸出一重新取樣信號至取樣模塊,以使其選取次一x坐標值取代基準值與累加值;以及當比較值大于數組中最大之x坐標值時,輸出累加值。計算模塊即是用于接收比對模塊所輸出之累加值,并依據累加值計算出聲音信號之音框基本周期。與現有技術相比,應用本發明,聲音信號在時域上經音高檢測演算所產生的音高點對應之x坐標值,找到可能的音框基本周期,再提供累加運算方式來驗證,而求出真正的音框基本周期。本發明與現有技術之間的差異在于本發明并非直接取聲音信號在時域上經音高檢測演算后所產生之曲線的絕對極值或次一極值來計算音框基本周期,而是先判斷作為基準值的x坐標值累加后是否均近似于這些x坐標值,以驗證此點是否即為基本周期。由此可知,本發明能夠精確地計算出聲音信號的基本周期。圖1A為一聲音信號的AMDF曲線示意7圖1B為另一聲音信號的AMDF曲線示意圖1C為又一聲音信號的AMDF曲線示意圖2為本發明之一實施例中聲音信號的AMDF曲線示意圖3為本發明之一實施例中聲音信號的音框基本周期的計算方法步驟流程圖4為本發明之一實施例中計算聲音信號的音框基本周期的系統方框示意圖。具體實施例方式下面結合附圖和具體實施方式對本發明作進一步說明。以下實施例是以AMDF算法所求出的音高點來計算音框基本周期,但其并非用于限定本發明。熟習此技藝者應該知道,本發明可利用任何時域上之音高檢測算法所求出之音高點來計算音框基本周期。圖2為本發明之一實施例中聲音信號的AMDF曲線示意圖。請參照圖2,此AMDF曲線200具有多個音高點,這些音高點分別對應至一坐標值(x,y),其中這些x坐標值是代表音框點數,y坐標值則是代表AMDF值。圖3為本發明之一實施例中聲音信號之音框基本周期的計算方法步驟流程圖。圖4為本發明之一實施例中計算聲音信號之音框基本周期的系統方框示意圖。請同時參照圖2、第圖3及圖4,計算聲音信號之音框基本周期的系統400主要是由取樣模塊410、比對模塊420、累加模塊430及計算模塊440所構成。而聲音信號之音框基本周期的計算方法例如是利用取樣模塊410,在這些音高點所對應的x坐標值中,先擇其最小值為基準值及累加值(步驟320)。值得一提的是,由于所欲分析的聲音信號通常都會有些許的噪聲(noise),為避免這些噪聲影響到計算音框基本周期的準確度,計算聲音信號之音框基本周期的系統400還可以包括有一篩選模塊450,用于篩除掉不恰當的音高點。詳細來說,本實施例在挑選作為基準值與累加值的x坐標值前,可以先利用篩選模塊450對圖2中所有的音高點進行篩選(步驟300)。如8此一來,除了可以過濾掉噪聲外,也可以減少計算次數以降低計算復雜度。具體來說,在步驟300中例如是僅保留滿足一篩選條件的音高點,而此篩選條件例如是依據這些音高點之y坐標值的平均值而定。本實施例之篩選條件是依據此聲音信號之AMDF值的平均值而定,詳細來說,步驟300中例如是保留小于AMDF值之平均值的音高點。然而,在另一實施例中,若是以ACF算法求得聲音信號的音高點,則其于步驟300中是保留大于ACF值之平均值的音高點。經過上述之篩選步驟后,本實施例之音高點的坐標值(x,y)對應關系如下列r表一」所示<table>tableseeoriginaldocumentpage9</column></row><table>表一在選定基準值及累加值之后,接著利用累加模塊430將基準值與累加值相加,而得一比較值(步驟324),并將比較值輸出至比對模塊420。接著,利用比對模塊420判斷比較值是否大于數組中最大x坐標值(步驟326)。若判斷結果為比較值小于數組中最大x坐標值,則將比較值與其余x坐標值進行比對,并計算其間的差異值(步驟328)。然后,判斷比較值與x坐標值間的差異值是否小于門坎值(步驟332)。若判斷結果為比較值與一x坐標值間的差異值小于門坎值,則將此x坐標值反饋至累加模塊430,以便于以此x坐標值取代基準值(步驟334),并回到步驟324。反之,若判斷結果為比較值與一x坐標值間的差異值大于門坎值,則比對模塊420會輸出一重新取樣信號至取樣模塊410,以利用取樣模塊410選取次一x坐標值,并將其輸出至累加模塊430以取代基準值與累加值(步驟336)。若步驟326所得之判斷結果為比較值大于數組中最大x坐標值,則利用此累加值計算聲音信號之音框基本周期(步驟330)。在上述說明中,所謂差異值例如是指x坐標值與比較值之間的誤差率,其中誤差率=I比較值-x坐標值I+累加值值得注意的是,由于樂器之各半音音階間的誤差率最小為5.6125%,因此在本發明中,x坐標值與比較值之間的誤差率也必須小于此值,以避免發生跨音階的錯誤。換言之,當以誤差率來作為比較值與x坐標值之差異值時,此時的門坎值即為5.6125%。在其它實施例中,也可以利用各半音音階間的最小誤差率5.6125%來反推x坐標值與比較值之間的允許誤差點數,也就是以比較值與x坐標值間的差值絕對值作為上述之差異值,而此時的門坎值為累加值乘以5.6125%。以下將舉數據說明本實施例,但其并非用于限定本發明。根據r表一J所示,當本實施例依序取得x坐標值7或36為基準值及累加值,并以差值絕對值作為差異值時,其門坎值分別為7x5.6125%=0.392875及36乂5.6125%=2.0205。將基準值與累加值相加所得之比較值(14與72)與其余x坐標值比對后發現,其與x坐標值的差值絕對值均大于門坎值,因而接著取坐標值43為基準值及累加值。此時,門坎值為43*5.612%=2.41316。將基準值43與累加值43相加所得之比較值86與其余x坐標值比對后可發現,比較值86與x坐標值87之間的誤差點為1,小于其門坎值,故可繼續進行下一步驟,也就是將x坐標值87取代基準值43而與累加值43相加,并得比較值130。將比較值130與其余x坐標值比對后發現,其與x坐標值131亦具有1點誤差點數。再繼續累加下去可發現,累加值43與x坐標值131相加而得的比較值174同樣與x坐標值175具有1點的誤差點數;累加值43與x坐標值175相加而得的比較值218也是與x坐標值217具有1點的誤差點數。由上述可知,當以累加值43來進行累加時,比較值與實際的音高點的誤差率都在門坎值之內,且誤差點數不會超過l個取樣點,故可得知實際的音高點應介于x坐標值43與x坐標值44之間,假設本實施例之聲音信號取樣頻率是16KHz,則此聲音信號的基頻是介于16KHz/43(約等于372.09Hz)至16KHz/44(約等于363.64Hz)之間,而此聲音信號的基本周期即為其基頻的倒數。如前文所述,上述實施例雖以AMDF算法所求出的音高點為例做說明,但其并非用于限定本發明之應用。熟習此技藝者應該了解,本發明也可以利用ACF算法或其它時域上的音高檢測算法所求出之音高點來計算音框的基本周期。綜上所述,本發明與現有技術之間的差異在于具有以累加x坐標值之方式求出聲音信號之音框基本周期的技術手段,通過此一技術手段可以解決現有技術在擷取最小音高點時容易發生誤判的問題,進而達成增進時域上之音高檢測算法之準確度的功效。雖然本發明所公開之實施方式如上,惟所述之內容并非用于直接限定本發明之專利保護范圍。任何本發明所屬
技術領域:
中具有通常知識者,在不脫離本發明所公開之精神和范圍的前提下,可以在實施的形式上及細節上作些許之更動。本發明之專利保護范圍,仍須以所附之權利要求書為準。權利要求1、一種聲音信號的音框基本周期的計算方法,用于利用聲音信號在時域上經音高檢測演算所產生的音高點來求出音框基本周期,其中聲音信號在一音框中經音高檢測演算后會獲得復數個音高點,每個音高點均有對應之坐標值(x,y),且該些x坐標值由小至大排序為數組,包括下列步驟(a)選取最小之x坐標值為一基準值與一累加值;及(b)將所述基準值與所述累加值相加,以得一比較值,其中當所述比較值小于所述數組中最大之x坐標值時,更包括下列步驟將所述比較值與其余所述x坐標值依序進行比對,并計算該比較值與該些x坐標值之間的差異值,其中當所述比較值與所述x坐標值其中之一的差異值小于一門坎值時,以該x坐標值取代所述基準值后回到步驟(b);及當所述比較值與所述x坐標值的差異值大于所述門坎值時,選取次一x坐標值取代所述基準值及所述累加值,并回到步驟(b);及當所述比較值大于所述數組中最大之x坐標值時,利用所述累加值計算出所述聲音信號之音框基本周期。2、如權利要求1所述的計算方法,其特征在于,在所述步驟(a)前,更包括對所述音高點進行篩選。3、如權利要求2所述的計算方法,其特征在于,所述篩選所述音高點的方法包括保留滿足一篩選條件之音高點。4、如權利要求3所述的計算方法,其特征在于,所述篩選條件依據所述音高點之所述y坐標值的平均值而定。5、如權利要求1所述的計算方法,其特征在于,所述差異值為所述x坐標值與所述比較值之間的誤差率,且所述門坎值為5.6125%。6、如權利要求1所述的計算方法,其特征在于,所述差異值為所述比較值與所述x坐標值之間的差值絕對值,且所述門坎值為累加值乘以5.6125%。7、一種計算聲音信號的音框基本周期的系統,用于利用聲音信號在時域上經音高檢測演算所產生的音高點來求出音框基本周期,其中聲音信號在一音框中經音高檢測演算后會獲得復數個音高點,每個音高點均有對應之坐標值(x,y),且所述x坐標值由小至大排序為數組,其特征在于,包括一取樣模塊,用于選取所述x坐標值其中之一作為一基準值及一累加值,且其第一次所選取之x坐標值為最小的x坐標值;一累加模塊,用于接收所述取樣模塊所輸出之所述基準值及所述累加值,并將該基準值與該累加值相加,以輸出一比4交值;一比對模塊,用于接收所述累加模塊所輸出之所述比較值,并對該比較值與其余x坐標值依序進行比對,以及計算該比較值與該些x坐標值的差異值,其中當該比較值小于數組中最大之x坐標值,且其與該些x坐標值其中之一的差異值小于一門坎值時,將該x坐標值反饋至該累加模塊以取代所述基準值;以及當該比較值小于數組中最大之x坐標值,且其與該些x坐標值的差異值大于該門坎值時,輸出一重新取樣信號至所述取樣模塊,以使其選取次一x坐標值取代該基準值與所述累加值;以及當該比較值大于數組中最大之x坐標值時,輸出該累加值;及一計算模塊,用于接收所述比對模塊所輸出之累加值,并依據該累加值計算出該聲音信號之音框基本周期。8、如權利要求7所述的系統,其特征在于,更包括一篩選模塊,耦接于所述取樣模塊,用于對所述音高點進行篩選。9、如權利要求8所述的系統,其特征在于,所述篩選模塊對所述音高點進行篩選是保留滿足一篩選條件的音高點。10、如權利要求9所述的系統,其特征在于,所述篩選條件是依據所述音高點之所述y坐標值的平均值而定。11、如權利要求7所述的系統,其特征在于,所述比對模塊計算的所述差異值為所述比較值與所述x坐標值之間的差值絕對值,且所述門坎值為累加值乘以5.6125%。12、如權利要求7所述的系統,其特征在于,所述比對模塊計算的差異值為所述x坐標值與所述比較值之間的誤差率,且所述門坎值為5.6125%。全文摘要本發明公開了一種聲音信號的音框基本周期的計算方法及系統,此聲音信號經音高檢測演算后,在音框中的每個音高點均有對應坐標值(x,y),取最小x坐標值為基準值與累加值,并將其相加而得一比較值。將比較值與其余x坐標值進行比對,當比較值與x坐標值之間的差異值大于門坎值時,選取次一x坐標值為基準值與累加值重新進行比對;當差異值小于門坎值時,以此x坐標值取代基準值再次進行累加與比對的步驟。當比較值大于最大x坐標值時,利用累加值計算出聲音信號之音框基本周期。此方法可解決已知時域音高算法誤判音高點的問題,以提高音高檢測的準確度。文檔編號G10L25/90GK101504833SQ20081020801公開日2009年8月12日申請日期2008年12月25日優先權日2008年12月25日發明者官圳清,陳進旺申請人:愛唱數碼科技(上海)有限公司