2011-05-29 121 views
4

TextGrid是Praat程序使用的「分段」文件。我想寫一個解析器,然後驗證數據。我的問題是:如何解析此格式(Praat TextGrid)

你會如何爲這種格式編寫解析器?一行一行地閱讀它或別的東西?這是一個已知的格式?

File type = "ooTextFile" 
Object class = "TextGrid" 

xmin = 0 
xmax = 93.0538775510204 
tiers? <exists> 
size = 3 

item []: 
    item [1]: 
     class = "IntervalTier" 
     name = "diph" 
     xmin = 0 
     xmax = 93.0538775510204 
     intervals: size = 65 
     intervals [1]: 
      xmin = 0 
      xmax = 1.300090702947846 
      text = "" 
     intervals [2]: 
      xmin = 1.300090702947846 
      xmax = 1.5300845864661654 
      text = "ey_s" 
     intervals [3]: 
      xmin = 1.5300845864661654 
      xmax = 3.4648692624493815 
      text = "" 

(這然後重複到EOF,以間隔[4 .... n])的

+2

我會在整個JSON規範的頭部擊中該格式的作者。不幸的是,規範只是一個頁面。 – phihag 2011-05-29 12:10:18

+0

@marw我不知道格式,但它看起來很自定義。你能舉一個反斜槓,引號和換行符如何存儲的例子嗎?如果是這樣,編寫解析器非常簡單。 – phihag 2011-05-29 12:13:54

+1

那麼,谷歌讓我:)解析器存在於NLTK:http://nltk.googlecode.com/svn/trunk/nltk_contrib/nltk_contrib/textgrid.py感謝您的意見!如果上述失敗,我會重新打開。 – marw 2011-05-29 12:29:45

回答

1

自動普瑞特的TextGrid文件分析器是一個小的應用程序來解析普瑞特的textGrid文件。解析的結果是保存在輸出文本文件中的電子表格。輸出文本文件可以通過Excel等應用程序導入。 TGP旨在成爲一個可以不斷擴展或修改的靈活程序,它目前能夠分析某些類型的TextGrid文件。 TGP 1.0版使用以下項目類型讀取TextGrid文件:文字,電話和可選焦點。

http://tgp.peremila.com/

1

另一種解決方案是與這些對象普瑞特的JSON或YAML表示工作;那麼解析正確性是微不足道的。

我已經編寫了兩個Perl腳本來方便地完成這個任務(轉換from Praat to JSON/YAML,並轉換爲from YAML/JSON to Praat),這對於這些任務可能很有用。

這些腳本是我維護的名爲serialise的插件的一部分,該插件通過CPrAN分發。這個實現有些破綻,但它非常穩定,並且該插件支持大多數您想要使用的對象。所有評論歡迎。