基音檢測算法

基音檢測算法

基音檢測算法可以估計周期性信號的音高或基本頻率,廣泛地套用於語音信號與音樂信號中,算法可分為時域頻域兩種方法。基音檢測算法可套用在不同內容,像是語音辨識、音樂信號分析與檢索、音訊處理與壓縮、電子音樂合成,針對不同的套用需求,也有不同的音高偵測算法。

基本介紹

  • 中文名:基音檢測算法
  • 外文名:Pitch detection algorithm
  • 領域:信號處理
  • 作用:周期性信號的音高或基本頻率
  • 方法:時域和頻域
  • 套用:語音辨識、音樂信號分析
簡介,方法,因素,

簡介

基音是指發濁音時聲帶振動的周期,基音周期的估計稱為基音檢測,其目的是提取出與聲帶振動頻率一致或儘可能相吻合的基音周期變化的軌跡曲線,是語音信號處理中最重要的特徵參數之一,在旋律辨識、聲調辨識、語音合成和語音編碼等研究領域起著非常關鍵的作用。基音檢測算法用於檢測基音信號的方法。由於語音信號可視為一個動態非平穩隨機過程,語音波形和聲帶振動的頻率變化範圍大且十分複雜,還沒有一種通用的方法能準確可靠地檢測出任何人在任何環境下的基音周期。
在基音檢測算法中,以自相關函式(ACF)法和平均幅度差函式(AMDF)法最為經典。ACF 方法是計算語音信號的自相關函式,通過 ACF 曲線在基音周期整數倍位置存在較大峰值來估計基音,方法實現簡單,但隨著信噪比的下降,通常會導致倍頻或半頻錯誤。AMDF 方法是計算語音信號的平均幅度差函式,通過 AMDF 曲線在基音周期整數倍處出現谷值來估計基音,該方法在語音信號的幅度或頻率變化比較敏感時,基音檢測精度明顯下降。

方法

時域方法
在時域方法中,基音檢測算法通常會先估計信號的周期性,並從周期性中找出對應之的音高或頻率。
最直覺的方法,是先找信號的過零率,也就是一個信號的從正數變成負數,或負數變成正數的比率,但是如果信號為複雜波形,由許多不同的周期波組成,則過零率將受影響,不易準確偵測出基音。此方法常被套用在單一音源無噪聲之語音套用,計算量非常小,且過零率也常常是音訊處理中很重要的特徵值,當過零率很高時,常為噪聲或子音。
更複雜的方法會將原信號平移一些時間,去跟原本信號內積比對相似度,若平移若干時間後的信號與原信號很相似,則平移時間非常可能是該信號之周期,透過嘗試不同的平移時間,可把平移時間對相似度作圖,找出相似度最大的周期,這類的方法稱為自相關函式法,可以精確的找出基音。但是自相關函式法有時會因為噪聲太多、複音、泛音等因素,導致判斷錯誤。
最精確的基音檢測算法會先結合各種找相似度的方法(內積、差值),並透過人類的經驗法則去修正去設門檻值,像是若信號為音訊,可確定頻率範圍在20赫茲到20000赫茲間,可先鎖定平移時間在0.00005秒到0.05秒的範圍間,最後透過機率模型或機器學習的方法來判斷音高。像是廣泛被採用的YIN算法與MPM算法,皆為自相關函式法的進階版,但仍局限在單音的音頻偵測,若信號為複音,同時有兩個音源,往往會採用頻域的方法。
頻域方法
若信號為複音,要同時偵測兩個以上的音源之頻率,在頻域中是可行的,首先會先將信號轉為頻譜 ,常見的方法是透過快速傅立葉變換,可在有限運算資源下,得到非常有效的準確度。
常見的頻域方法包含泛音內積頻譜法、倒頻譜分析,最大似然估計法,他們都是由預設的頻率對照表,試圖從信號頻譜特徵中,找到對應之頻率。
頻譜/動態法
頻譜/動態的基音檢測法,像是YAAPT,結合了時域和頻域,時域方面,透過自相關函式法,頻域則是透過頻譜信息來辨識出音高,並從較為可能的音高種類中,利用動態規劃找出最佳的音高選擇,這種結合時域和頻域的算法,可以結合更多信息,降低時域或頻域所獨立造成的誤差。

因素

  1. 語音信號具有一定的複雜性,聲門激勵信號並不是一個完全的周期序列,在某些音的頭尾部並不具有聲帶振動那樣的周期性,有些清池音信號的過渡部分很難被確切的判斷是周期性的或是非周期性的,從而影響基音周期的檢測。
  2. 聲道共振峰有時會嚴重影響激勵信號的諧波結構,所以,要克服聲道的影響,直接從語音信號中取出僅和聲帶振動有關的信息並不容易。
  3. 語音信號本身具有準周期性,加上共振峰和噪聲會影響波形的峰值點和過零點,使得很難定義池音段的每個基音周期的準確開始和結束位置。
  4. 區分清音語音和低電平語音是導致基音檢測困難的另一個重要因素。在許多情況下,清音語音和低電平池音段之間的過度段是非常細微的,確認它是極其困難的。
  5. 在實際套用中,背景噪聲極大的影響著基音檢測的性能。基音周期變化範圍大,從老年男性的50Hz到兒童和女性的500Hz,接近三個多倍頻程,給基音檢測帶來了一定的困難。

相關詞條

熱門詞條

聯絡我們