第二章 系統簡介與理論說明
2.3 語音活動偵測
2.3.1 音框的選取
近年來語音活動偵測(voice activity detection, VAD)的技術已廣泛應用 在通訊上,最常見的判定真人語音資訊為語音能量和越零率,雜訊及氣音 的越零率都很高,語音能量都較低。例如,由歐洲電信標準協會(ETSI)
所制定用於GSM(Global System for Mobile Communications)系統中的 AMR(Adaptive Multi Rate)VAD 判定方法就採用了能量、週期、頻譜失 真等三種參數來判定[4][5]。另外由國際電信聯盟(ITU)所制定的
G.729-VAD 採用了全頻帶能量差、低頻帶能量差、頻譜失真和越零率四種 參數來判定[6][7]。
對於一段語音的離散時間訊號,使用一個固定長度的視窗(window)套 上去,只看視窗內的訊號,對這些訊號做演算,求出在這視窗內的語音特 徵。套在視窗上的這一段語音即稱為音框[25]。移動視窗到下一個時間點,
就得出下一個音框。根據每一個音框計算語音的特徵參數。例如對於一個 取樣頻率為16kHz 的語音訊號,它的取樣間距是 62.5 微秒,視窗長度取 512 點,換算成時間就是 32 ms,這也就是一個音框的長度。我們讓前後音 框重疊1/2 個音框長度,則每次向前移動視窗的距離就是 16 ms,也就是
256 個取樣點。
對於一定長度的語音訊號,視窗的移動距離越短,得出的音框數目就 越多,語音特徵也就越多。當語音訊號變化快的時候,如果視窗越多,可 以看出語音特徵在短時間內改變的情形。
2.3.2 語音端點偵測
由於量化後的語音資料,包含實際語音訊號與雜訊及靜音部份。所以 我們要利用語音的特徵偵測發生語音的判斷。根據語音訊號端點偵測判斷 時所採用的參數,大致上可區分為三大類型(1)時域端點偵測法;(2)頻率端 點偵測法;(3)混合參數端點偵測法等;其中時域端點偵測法最簡單也最常被 應用的一種方法[26],但是抗雜訊能力較低;而頻域端點偵測法以及混合參 數端點偵測法,兩者的抗雜訊能力較高,但所需的計算量較複雜;所以本文 僅針對時域端點偵測法做說明。
在時域端點偵測中,用來判斷端點偵測判斷依據的參數:能量參數 (Energy)以及越零率參數(Zero-Crossing Rate : ZCR)[26]。可藉由這兩個參 數配合臨界值的設定,即可找出錄音訊號中,發生語音的端點所在之處。
在時域端點偵測法中,因為語音訊號的能量一般都比背景雜訊大,所以偵 測有效語音訊號最直接的方法,就是依據訊號區段的能量大小,來做為判 斷的依據。然而,有些字音在字首或字尾有子音或磨擦音的存在,因其能 量太小不易被偵測出來,因此在端點偵測時,除了依據能量參數外,也常 使用訊號的越零率參數,來找出精確的語音訊號端點。
2.3.2.1 能量偵測
一個音框內的能量測量為
log ∑ (2‐8)
把一個位於n 時刻的音框內 N 個訊號,取平方再相加,就得到音框之 能量E(n)。視窗長度會影響計算出的音框能量,長度越長,含蓋的取樣點 愈多,相當於是越多的值被平均掉,因此得到的曲線越平滑。反之,音框 越短則音框能量隨著訊號改變的現象越明顯,曲線就較不平滑。
2.3.2.2 越零率測量
語音訊號波形上可以找到一條零線,振幅在其上為正,在其下為負,
沿著時間看波形的擺動,當振幅從負變正,或是從正到負,都是越過零線。
單位時間內越過零線的次數多,表示波形擺動劇烈。我們計算一個音框內 越過零線的次數,可以得出其越零率,計算公式如下:
∑ | 1 | (2-9)
上式中的函數sgn[.]是符號函數。
利用能量與越零率,我們可以做語音的端點偵測。最簡單的想法就是從能 量上做判斷,能量大於某個門檻就是語音,否則就不是語音。但這種做法 不太精確,因為聲帶不振動的輔音通常能量也很小,有時候不說話而背景 噪音很大,反而會看到大的能量,一個比較可靠的做法是同時看能量的變 化與越零率的變化。
在語音未開始之前,會取到一段背景噪音的訊號,在語音結束之後也會取 到一段背景噪音。語音端點偵測就是要找出語音從第幾個音框開始,到第 幾個音框結束。假設開始有一段背景噪音,利用這段噪音的訊息來訂定能 量與越零率的門檻值,作為判斷語音端點的依據[25]。
(1) 將取到的一段聲音以固定音框長度及固定音框間距,轉成一序列的音框。
然後計算每一音框的能量與越零率。
(2) 取最前面的若干個音框視為噪音部份,求其能量與越零率之分佈,即計 算其平均值與變異量。
= ∑=1 , (2‐10)
∑ , (2‐11)
∑ (2‐12)
∑ (2‐13)
(3) 訂兩個能量門檻及一個越零率門檻值。
(2‐14)
, (2‐15)
(2‐16)
(4) 沿著音框序列,標注第一個能量超過 的音框,注記為 。如果其後 連續的 個音框,其能量大於 ,而且 個音框之後,能量更是大於 , 則 視為可能的語音起點。反之,在 之後的 個音框內,有小於 的,
或是 個音框之後不會大於 ,則不是語音起點,可能只是短暫的噪 音造成的現象。因此放棄此 點,繼續往下找。
(5) 找到 之後,往回檢查,看其前個音框越零率,是否大於 ,若是就 繼續往回找,直到越零率小於 為止。這時候音框視為真正語音的起點,
將此音框訂為 。原因是元音之前若有輔音,不容易從能量看出來,
可以藉助越零率來判斷。如果在 之前, 個音框內沒有越零率大於 者,就將 作為真正的語音起點,這表示沒有低能量的輔音在前面。
(6) 從 之後應該是元音,以後的音框能量大於 ,就是語音存在,一直 到能量小於 ,就視為語音結束,語音終點的音框標注為 。
(7) 從 或 到 之間,就是語音存在的區域。