Как открыть праат из праатскрипта

Я хотел бы позволить praatscript открыть строку объекта praat. Это позволило бы мне открыть praat, а затем автоматически разрешить скрипту загружать объекты в окно объекта.

например скрипт

run_something.praat 1.wav 1.TextGrid 0.1 0.2

мог открыть праат, а затем открыть редактор до 0.1 и 0.2 в аудиофайле "1.wav" <это легко сделать

Я просто не могу открыть праат заранее, чтобы вставить то, что мне нужно.

сейчас мой сценарий выглядит так:

form Info
    text Sound
    text Textgrid
    real Start
    real End
endform


if sound$ != "" and textgrid$ != ""
     Read from file: sound$
     Read Strings from raw text file: textgrid$
     @read_lab()

selectObject: 1, 3
View & Edit
editor = 3
editor: editor
Select: start , end
Zoom to selection
endeditor

endif

конечно, это скажет мне, что View and Edit не работает, потому что GUI не открыт. Я не могу использовать среду, потому что она должна работать на Windows и Linux

1 ответ

Решение

Вы можете начать Praat, используя --open возможность... открыть файлы, которые вы хотите. Это запустит Praat в режиме GUI с открытыми файлами (и / или скриптами):

praat --open sound.wav annotation.TextGrid script.praat

Но если вы хотите выдавать команды для этого экземпляра Praat программно (= без нажатия на что-либо), вам, вероятно, придется использовать sendpraat, который должен использоваться на всех платформах, где работает Praat.

Обратите внимание, что инструкции по компиляции на этой странице, по крайней мере, немного устарели для Linux: я смог собрать на своей машине с

gcc -std=gnu99 -o sendpraat -DSTAND_ALONE -DUNIX \
  `pkg-config --cflags gtk+-2.0 glib-2.0` \
  sendpraat.c \
  `pkg-config --libs   gtk+-2.0 glib-2.0`

При наличии sendpraat вам нужно будет запустить экземпляр Praat с графическим интерфейсом, как вы предпочитаете, а затем, в отдельном выражении, отправить выполнение вашего скрипта:

sendpraat 0 praat \
  'runScript: "path/to/your/script", "1.wav", "1.TextGrid", 0.1, 0.2'

Инструкции по использованию sendpraat доступны в руководстве Praat. Первый аргумент - это время ожидания в секундах (=die, если действие к тому времени не завершено), затем имя программы, а затем список команд для последовательного запуска.

Насколько я знаю, не существует простого способа запустить один скрипт, который за один шаг откроет версию Praat с графическим интерфейсом и заставит этот экземпляр Praat выполнить команду. Но я могу ошибаться.

Для тех, кто борется с sendpraat:

пытаться:

sendpraat praat 'execute "pathtoyourscript"'
Другие вопросы по тегам