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

问题描述 投票:0回答:4

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

python parsing text
4个回答
17
投票

TextGrid 解析器已经存在,它是 NLTK 工具包的一部分。 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
投票

自动 Praat 的 TextGrid 文件解析器是一个用于解析 Praat 的 textGrid 文件的小型应用程序。解析的结果是保存在输出文本文件中的电子表格。输出文本文件可以通过 Excel 等应用程序导入。 TGP 是一个灵活的程序,可以轻松地不断扩展或修改,目前它能够分析某些类型的 TextGrid 文件。 TGP 1.0 版本读取具有以下项目类型的 TextGrid 文件:单词、电话和可选的焦点。

http://tgp.peremila.com/


1
投票

另一种解决方案是使用这些 Praat 对象的 JSON 或 YAML 表示形式;那么解析正确性就很简单了。

我编写了两个 Perl 脚本来实现这一点(将 从 Praat 转换为 JSON/YAML,以及将 从 YAML/JSON 转换为 Praat),这对于这些任务可能很有用。

这些脚本是我维护的名为

serialise
的插件的一部分,该插件通过 CPrAN 分发。该实现有点麻烦,但它非常稳定,并且该插件支持您想要使用的大多数对象。欢迎大家评论。


0
投票

您可以使用https://github.com/kylebgorman/textgrid。它已经负责编码检测,因此您不必猜测编码。

pip install textgrid

使用示例:

from textgrid import TextGrid

tg = TextGrid.fromFile('example.TextGrid')
© www.soinside.com 2019 - 2024. All rights reserved.