如何解析这种格式(Praat TextGrid)

时间:2011-05-29 12:05:29

标签: python parsing text

TextGrid是Praat程序使用的“分段”文件。我想编写一个解析器,然后验证数据。我的问题是:

你会如何为这种格式编写解析器?逐行阅读还是其他什么?这是一种已知的格式吗?

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])

3 个答案:

答案 0 :(得分:13)

TextGrid解析器已经存在,它是NLTK Toolkit的一部分。 Python文件在这里:

http://nltk.googlecode.com/svn/trunk/nltk_contrib/nltk_contrib/textgrid.py

更新链接: https://github.com/nltk/nltk_contrib/blob/master/nltk_contrib/textgrid.py

答案 1 :(得分:1)

Automatic Praat的TextGrid文件分析器是一个解析Praat的textGrid文件的小应用程序。解析的结果是保存在输出文本文件中的电子表格。输出文本文件可以由Excel等应用程序导入。 TGP是一个灵活的程序,可以轻松地连续扩展或修改,它目前能够分析某些类型的TextGrid文件。 TGP的1.0版本使用以下项目类型读取TextGrid文件:word,phone和可选焦点。

http://tgp.peremila.com/

答案 2 :(得分:1)

另一种解决方案是使用这些Praat对象的JSON或YAML表示;然后解析正确性是微不足道的。

我已经编写了两个Perl脚本来实现这一目的(转换from Praat to JSON/YAML和转换from YAML/JSON to Praat),这可能对这些任务有用。

脚本是我维护的名为serialise的插件的一部分,该插件通过CPrAN分发。实现有点乱,但它非常稳定,插件支持大多数你想要使用的对象。欢迎所有评论。