1. 程式人生 > >賓西法尼亞大學強制對齊標註軟體(P2FA)介紹以及使用說明

賓西法尼亞大學強制對齊標註軟體(P2FA)介紹以及使用說明

一、綜述

1. 介紹

賓夕法尼亞大學語音標籤強制對齊(Penn Phonetics Lab Forced Aligner , P2FA) 是基於 HTK 的自動語音標註工具包。它包括美式英語的聲學模型,用來強制對齊的 python 檔案以及 readme 檔案和一些例子。同樣,在 P2FA 的網站上,還有一個線上處理系統,提交一個 wav 檔案和一個轉錄檔案,之後將會以郵件方式收到一個標註好的 praat TextGrid 檔案。

包含在工具包中的聲學模型是基於 GMM 的單音節 HMM 模型。每個 HMM 狀態使用 32 個高斯混合在 39 個 PLP 係數上。聲學模型以 8KHz, 11,025Hz 以及 16Hz 分開。每一個聲學模型包含了一個在詞與詞之間的可選插入的短暫停頓HMM(“sp”),這大大增加了標註的準確度。

2. 工具介紹

./models/: 聲學模型、引數檔案以及 CMU 發音字典
./align.py: 一個 python 指令碼,用來自動執行強制對齊,從 wav 檔案和對應的
轉錄檔案產生一個 Praat TextGrid 檔案
./test/:用來測試工具的檔案
./examples/:例子檔案

3. 先決條件

需要將 version 3.4 的 HTK 工具包事先裝好來做強制對齊。 HTK 工具包可以
http://htk.eng.cam.ac.uk/找到。 python 指令碼只支援 version 3.4。最新的版本
3.4.1 在對齊“ sp” 模型的時候有問題。

為了使用 align.py 指令碼,需要有 Python2.5/2.6(早些時候/更高版本還沒有
經過測試)。

4. 使用 align.py 腳步

1) 執行”python align.py wavfile trsfile output_file”。如果你沒有從工具包的資料夾中執行 align.py,你將需要指定路徑。

Wavfile 是包含了需要對齊的語音。如果它不是按照指定的三種模型的取樣的話,它將被按照 11,025Hz 重取樣。這樣的取樣率是推薦的。

Trsfile 是一個包含轉錄的文字檔案。 空格或者換行符用來分隔單詞。如果一個詞在 CMU 的發音字典中沒有找到,將會報錯, 但是你能夠編輯檔案 model/dic 並且新增需要的新發音。你將在轉錄中包含以下標籤’{SL}’ 安靜, ‘{LG}’ 笑聲, ‘{NS}’ 噪音, ‘{CG}’ 咳嗽, ‘{BR}’ 呼吸, 和’{LS}’脣聲.

Output_file 是 praat TextGrid 輸出檔案,包含強制對齊後的結果。

工具包包含例子用來測試。你可以對齊測試檔案

Python align.py ./test/BREY00538.wav ./test/BREY00538.txt./test/BREY00538.TextGrid

Output file 在詞與詞之間將包括‘sp’間隔,這裡表示一個停頓。

2) 如果你有多於一個檔案需要對齊,你講寫一個 shell指令碼來使得 align.py指令碼來迴圈。你也可以按照下面的說明。

3) 一些命令列選項也將被包括。他們必須先於 wav 檔案的規範,它們是:
-r sampling_rate 覆蓋使用的取樣率模型, 8000, 11025, 16000。預設的 wav 檔案的取樣率是三個中之一,否則是 11025

-s start_time
Wav 檔案的開始部分到對齊(以秒為單位,預設為 0)

-e end_time
Wav 檔案的結束部分到對齊(以秒為單位,預設情況下將結束)

5. 做強制對齊的方法

1) 請參考./example/資料夾下檔案的正確格式

2) 請按照如下的描述準備語音檔案和轉錄檔案。你可以為很長的語音檔案做標註(例如一個小時),同時你也可以一步標註許多檔案。

3) 建立參考的轉錄檔案, transcript.mlf transcript.mlf 是 HTK 的“主標籤檔案”包含所有檔案的標註。 下面是生成檔案的步驟:

I. 單詞的所有字母要大寫。如果一個字在 CMU 發音字典裡面沒有出現,你既可以手動新增也可以從強制對齊當中把它排除掉,主要去決定於你的目的。 如果transcript.mlf 中有未知的詞,標註將失敗。

II. 你將把如下的標籤包含在 transcript.mlf 中: ‘{SL}’ 安靜, ‘{LG}’ 笑聲, ‘{NS}’ 噪音, ‘{CG}’ 咳嗽, ‘{BR}’ 呼吸, and ‘{LS}’脣聲.

III. 你可能想要每兩個詞之間插入一個‘ sp’。‘ sp’代表小小的停頓。 它從強制對齊中可以有零個長度(沒有停頓)。

4) 建立 code.scp 和 test.scp。它們所包含的檔案的名稱分別是編碼和對齊。

5) 提取聲學特徵

HCopy -T 1 -C ./models/your-sampling-rate/config -S code.scp

配置檔案包含用於語音檔案( .wav .raw, 取樣率等等)以及聲學特徵(mfcc,plp 等等)。如果您的語音檔案有不同的取樣率比 8000 赫茲,11,025 赫茲,或 16,000 赫茲,可以降低取樣率或轉換至 11,025 赫茲(迄今為止具有最好的效能)。在我們的訓練程式中, 我們將 44100Hz 的目標取樣率使用‘ sox –polyphase’ 來降低取樣。

6) 強制對齊

HVite -T 1 -a -m -I transcript.mlf -H ./model/your-sampling-rate/macros -H ./model/your-sampling-rate/hmmdefs -S test.scp -i ./align.mlf -p 0.0 -s 5.0 ./model/dict ./model/monophones

align.mlf 是強制對齊的結果。你可以將其轉換為標籤檔案,如, Praat TextGrids。 請注意:

a) 在 align.mlf 裡面的時間單位是 100 納秒( 0.00000001 秒) ;

b) 有一個四捨五入的問題,當取樣速率 11,025 Hz 和時間步長為 10 毫秒,所以需要更正 align.mlf 中的時間標記。你可以使用下面的公式來轉換時間標記 x 到秒:

y = (x/10000000 + 0.0125)*(11000/11025).

二、具體使用

英文、中文標註:

Englishalign/Chinaalign:

主要使用命令: python align2.py xxx.wav xxx.txt xxx.TextGrid

其中: xxx.wav 中是所要轉錄的音訊檔案

xxx.txt 是 wav 中所對應的文字檔案

xxx.TextGrid 是轉換之後的 praat 檔案

中文標註情況:

圖 1 中文“八”的標註結果

圖 1 中文“八”的標註結果

圖 3 句子“我到北京去”的標註結果

英文標註情況:
圖 4 英文單詞“ statute”的標註結果

三、總結

經過實驗,感覺這個標註軟體對於純淨條件下的語音標註效果很好,精確度也很高。但是,抗噪聲能力不是很強。同時,標註後的檔案為三層內容,格式為 praat TextGrid 檔案格式,如果用到 HTK 還需要轉換成 lab 檔案的格式來使用。