【发布时间】:2019-03-01 21:08:42
【问题描述】:
我正在尝试为 Praat 编写脚本,但在执行时遇到了困难。
我想要的是在一个句子(和一个声音)中对某个单词有一个结果, 例如:你的车暂时不用,我可以借吗?
我想要一个“时刻”这个词的音调列表。如果我选择单词“moment”并在音高菜单下选择音高列表,那么它会给我每 0.01 秒的时间和 f0(打开声音和 TextGrid)。
我一直在搜索并尝试编写此脚本,但尚未成功。
你能帮我解决这个问题吗?
我已经修改了上面的问题。
句子:因为你现在没用你的车,我可以借用一下吗? (我有一个 mp3 文件,这个句子有 2 层的文本网格,第 1 层是单词,第 2 层是电话)
以下是我的脚本。我想为单词“moment”的最后一个音节部分设置 f0 最大值和最小值,但只成功地在整个间隔 10 中设置了 f0 最大值和最小值(第 1 层中的“矩”)。
我还有一个“时刻”一词的电话层(在第 2 层),如下所示:
“时刻”一词的电话等级是 M OW M AH N T
=> 我想要 [M AH N T] 的 f0 max 和 f0 min 不包括 [M OW] 这是第一个音节部分。
以下是我目前的脚本。
form Get F0 Min-Max
sentence Directory ./
word Base_file_name
comment The name of result file
text textfile F0_list.txt
endform
# Create a header row for the result file:
header$ = "Filename TextGridLabel startTime endTime minTime f0min maxTime f0max'newline$'"
fileappend "'textfile$'" 'header$'
#Read all files in a folder
Create Strings as file list... mp3list 'directory$'/'base_file_name$'*.mp3
Create Strings as file list... gridlist 'directory$'/'base_file_name$'*.TextGrid
n = Get number of strings
for i to n
clearinfo
#We first extract pitch tiers
select Strings mp3list
filename$ = Get string... i
Read from file... 'directory$'/'filename$'
soundname$ = selected$ ("Sound")
To Pitch... 0.01 75 600
output$ = "'soundname$'.Pitch"
# Write to binary file... 'output$'
# Read grid files and extract the selected intervals in them
select Strings gridlist
gridname$ = Get string... i
Read from file... 'directory$'/'gridname$'
int=Get number of intervals... 1
# Calculates F0 max, and F0 min (I need interval 10 to be analyzed for the word "moment" so have the 1 10 for the label)
select TextGrid 'soundname$'
label$ = Get label of interval... 1 10
if label$ <> ""
startTime = Get starting point... 1 10
endTime = Get end point... 1 10
select Pitch 'soundname$'
f0max = Get maximum... startTime endTime Hertz Parabolic
maxTime = Get time of maximum... startTime endTime Hertz Parabolic
f0min = Get minimum... startTime endTime Hertz Parabolic
minTime = Get time of minimum... startTime endTime Hertz Parabolic
resultline$ =
"'soundname$''tab$''label$''tab$''syllableTime''tab$''endTime''tab$''minTime''tab$''f0min''tab$''maxTime''tab$''f0max'"
fileappend "'textfile$'" 'resultline$'
endif
fileappend "'textfile$'" 'newline$'
endfor
# clean up
select all
Remove
你能帮我解决这个问题吗?太感谢了。
【问题讨论】:
-
您好,欢迎来到 SO:) 您能否分享您目前拥有的东西,以便人们知道缺少什么。
-
您能否重新格式化问题以明确您的例句从哪里开始?也许把它放在一个单独的段落中,或者让它变成斜体。