![](/img/trans.png)
[英]Why is my Pitch Object sounds different from my original audio file in PRAAT?
[英]create text file from textGrid using Praat or any other audio processing tool
我有一个Prosodylab -Aligner生成的textGrid文件,可以在Praat
打开。 是否有可能摆脱这样的文本文件:
Word in text | Pronounciation started at
Hello 0:0:0.000
my 0:0:1.125
friends 0:0:2.750
编辑
附加的textGrid文件:
File type = "ooTextFile"
Object class = "TextGrid"
xmin = 0.0
xmax = 2.53
tiers? <exists>
size = 2
item []:
item [1]:
class = "IntervalTier"
name = "phones"
xmin = 0.0
xmax = 2.53
intervals: size = 13
intervals [1]:
xmin = 0.0
xmax = 0.62
text = "sil"
intervals [2]:
xmin = 0.62
xmax = 0.78
text = "K"
intervals [3]:
xmin = 0.78
xmax = 0.81
text = "L"
intervals [4]:
xmin = 0.81
xmax = 0.92
text = "IH1"
intervals [5]:
xmin = 0.92
xmax = 1.02
text = "K"
intervals [6]:
xmin = 1.02
xmax = 1.07
text = ""
intervals [7]:
xmin = 1.07
xmax = 1.22
text = "T"
intervals [8]:
xmin = 1.22
xmax = 1.31
text = "UW1"
intervals [9]:
xmin = 1.31
xmax = 1.51
text = "S"
intervals [10]:
xmin = 1.51
xmax = 1.67
text = "T"
intervals [11]:
xmin = 1.67
xmax = 1.85
text = "AA1"
intervals [12]:
xmin = 1.85
xmax = 1.88
text = "P"
intervals [13]:
xmin = 1.88
xmax = 2.53
text = "sil"
item [2]:
class = "IntervalTier"
name = "words"
xmin = 0.0
xmax = 2.53
intervals: size = 6
intervals [1]:
xmin = 0.0
xmax = 0.62
text = "sil"
intervals [2]:
xmin = 0.62
xmax = 1.02
text = "CLICK"
intervals [3]:
xmin = 1.02
xmax = 1.07
text = "sp"
intervals [4]:
xmin = 1.07
xmax = 1.31
text = "TO"
intervals [5]:
xmin = 1.31
xmax = 1.88
text = "STOP"
intervals [6]:
xmin = 1.88
xmax = 2.53
text = "sil"
TextGrid文件的语法有点奇怪。 为了限制您的使用,列出单词及其起点,您的解析器可能非常简单:
查找包含8个空格和字符串'name =“ words”'的文本行
检查以下所有行,并在下次出现8个空格和字符串'name =“'时停止
2A。 立即将浮点数保存在12个空格和字符串'xmin ='之后
2B。 立即将字符串保存在12个空格之后,并保存字符串'text ='
此过程的结果将是:
0.0 0.62 1.02 1.07 1.31 1.88
“ sil”“点击”“ sp”“到”“停止”“ sil”
现在,只需对这两个数组重新排序,就可以得到表格(数字是以秒为单位给出的起点)。
请记住,“ sil”是元标记“ silence”的缩写,而“ sp”是“ speech pause”的缩写。 尽管预计语音开始和结束时会保持沉默,但语音暂停可能是错误的,因为单词“ TO”的音高/ t /始于发音闭塞,这与语音暂停非常相似,但其中一部分爆破声。
由于这是一个Praat
文件,并且您说可以在Praat
打开它,所以我认为一个更好的解决方案是使用Praat
来解决它。 如下所示的脚本涉及更少的信念飞跃:
form Parse TextGrid...
sentence File /path/to/your.TextGrid
integer Tier 2
endform
Read from file: file$
intervals = Get number of intervals: tier
writeInfoLine: "Word in text", tab$, "Pronounciation started at"
for i to intervals
label$ = Get label of interval: tier, i
if label$ != ""
start = Get start point: tier, i
appendInfoLine: label$, tab$, string$(start)
endif
endfor
如果您保存到一个脚本的地方,你可以再调用Praat
从像在命令行中praat /path/to/your/script.praat "/path/to/your.TextGrid" 2
并从中获取所需的输出stdout
。
您也可以手动运行它,也可以使用它来编写文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.