praat脚本获取某个单词的音调列表

时间:2018-09-26 07:02:05

标签: time pitch praat

我正在尝试为Praat编写脚本,但很难做到。

我想要的是得到一个句子(和声音)中某个单词的结果, 例如:由于您目前不在使用汽车,我可以借用它吗?

我想要一个“ moment”一词的音调列表。如果我选择“ moment”一词并在音调菜单下选择音调列表,则它会给我时间和每0.01秒f0(打开声音和TextGrid)。

我一直在搜索并尝试编写脚本,但尚未成功。

您能帮我吗?


我修改了上面的问题。

句子:由于您目前不在使用汽车,我可以借用它吗? (我有一个mp3文件,此句子的文本网格分为2层,第1层是单词,第2层是电话)

以下是我的脚本。我想为单词“ moment”的最后一个音节部分设置f0 max和min,但仅成功使整个间隔10(“ tier 1”中的“ moment”)具有f0 max和min。

我还有一个电话层,用于“ moment”一词(在第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

您能帮我吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以添加一个新层来仅将您感兴趣的部分分开吗?您的数据中还有其他句子吗?

{{1}}

然后,测量刚刚创建的间隔。