代码之家  ›  专栏  ›  技术社区  ›  badner

如何从praatscript打开praat

  •  2
  • badner  · 技术社区  · 9 年前

    我想允许praatscript打开praat对象行。这将允许我打开praat,然后自动允许脚本将对象加载到对象窗口中。

    比如剧本

    run_something.praat 1.wav 1.TextGrid 0.1 0.2
    

    可以打开praat,然后将编辑器打开到音频文件“1.wav”中的0.1和0.2<这对我来说很容易做到

    现在我的脚本如下所示:

    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
    

    当然,它会告诉我,查看和编辑不起作用,因为GUI没有打开。我不能使用环境,因为它必须在windows和linux上工作

    2 回复  |  直到 9 年前
        1
  •  3
  •   jja    9 年前

    您可以使用 --open 选项…打开所需文件。这将在GUI模式下启动Praat,并打开指定的文件(和/或脚本):

    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 0 praat \
      'runScript: "path/to/your/script", "1.wav", "1.TextGrid", 0.1, 0.2'
    

    Instructions for using sendpraat 可在Praat手册中找到。第一个参数是以秒为单位的超时(=如果此时操作尚未完成,则为die),然后是程序名称,然后是要按顺序运行的命令列表。

    使Praat的实例执行命令。但我可能错了。

        2
  •  0
  •   Xiaoou Wang    7 年前

    对于那些与sendpraat抗争的人:

    sendpraat praat 'execute "pathtoyourscript"'
    
    推荐文章