2016-01-13 5 views
0

Я новичок в похвале, так что, возможно, это простой вопрос. Я пытаюсь создать скрипт в praat, который пройдет через некоторые объекты в моем списке объектов с циклом for и удалит интервалы времени. Я создал этот скрипт, который будет помещен в цикл for.Правка сценарий для удаления тишины, не может выбирать и удалять объекты

selectObject: i 
inten=To Intensity... 100 0 "no" 
txt=To TextGrid (silences)... -35 0.1 0.05 'silent' 'sounding' 
selectObject: i 
plusObject: txt 
Extract intervals where: 1, "no", "contains", "sounding" 
myobj=Concatenate 
Copy: string$(i) 
selectObject: inten 
plusObject: txt 
plusObject: myobj 
Remove 

Хотя я получаю то, что я хочу, чтобы моя проблема заключается в линии

Extract intervals where: 1, "no", "contains", "sounding" 

В этой линии части, которые содержат звук извлеченной и выбрали. Затем я сразу использую конкатенацию, чтобы создать нужный файл и выбрать его. Однако, поскольку эта строка производит больше одной переменной, я не могу ее сохранить. Поэтому позже у меня нет ссылки, чтобы удалить его из каталога объектов. Хотя я все еще мог запускать его так, что мой каталог будет затоплен, и я не думаю, что это изящно. Какие-либо предложения?

ответ

1

Это может показаться очевидным, но вы можете сохранить идентификационные номера из нескольких извлеченных интервалов, сохранив каждый из них в индексированной переменной и затем повторно выбрав их, когда вам нужно их удалить.

Ниже вы найдете отредактированную и прокомментированную версию вашего сценария. Я изменил некоторые имена переменных, чтобы было легче следовать.

sound = selected() 
intensity = To Intensity: 100, 0, "no" 
textgrid = To TextGrid (silences): -35, 0.1, 0.05, silent, sounding 

# Select multiple objects at once 
selectObject: sound, textgrid 

Extract intervals where: 1, "no", "contains", "sounding" 

# Save the ID numbers of the currently selected intervals 
total_parts = numberOfSelected() 
for i to total_parts 
    part[i] = selected(i) 
endfor 

# No need to make a copy just to rename 
sounding = Concatenate 
Rename: string$(sound) 

# Select all the objects you want to remove 
selectObject: intensity, textgrid 
# Including the extracted intervals 
for i to total_parts 
    plusObject: part[i] 
endfor 
# And remove them 
Remove 

# If you knew beforehand what objects to select, 
# you could also use removeObject() 

# Select your concatenated sound 
selectObject: sounding 

Как и в сторону, то selection плагин доступен через CPrAN была написана, чтобы сделать его легче управлять объектные выбора Praat для таких случаев, как это. Две петли, вставленные выше, могли быть заменены на вызовы @saveSelection() и @restoreSelection() (полное раскрытие: я написал этот плагин).

+0

Как я уже сказал, я новичок в похвале, поэтому совсем не очевидно. Большое спасибо! – Dimitris

 Смежные вопросы

  • Нет связанных вопросов^_^