Я пытаюсь написать сценарий для Praat, и у меня возникают трудности с этим.
Я хочу получить результат для определенного слова в предложении (и звука), например: Поскольку в данный момент вы не пользуетесь своей машиной, могу ли я одолжить ее?
Мне нужен список предложений для слова "момент". Если я выберу слово «момент» и выберу список шагов в меню шага, он даст мне время и f0 для каждой 0,01 секунды (откройте и звук, и TextGrid).
Я искал и пытался написать сценарий, но пока не удалось.
Не могли бы вы помочь мне с этим?
Я изменил верхний вопрос.
предложение: Поскольку в данный момент вы не пользуетесь своей машиной, могу ли я ее одолжить? (у меня есть mp3-файл, текстовая сетка с 2 уровнями для этого предложения, уровень 1 — это слово, а уровень 2 — это телефон)
Ниже приведен мой сценарий. Я хочу иметь f0 max и min для последней слоговой части слова «момент», но мне удалось получить f0 max и min только для всего интервала 10 («момент» на уровне 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
Не могли бы вы помочь мне с этим? Огромное спасибо.