【问题标题】:How to apply Praat script to an audio file?如何将 Praat 脚本应用于音频文件?
【发布时间】:2020-04-04 05:43:55
【问题描述】:

我正在尝试在 Colab 中将音频文件的 formants 更改为 praat。我找到了scriptit's code and the code for calculating formants。我安装了praat

!sudo apt-get update -y -qqq --fix-missing && apt-get install -y -qqq praat > /dev/null
!wget -qqq http://www.praatvocaltoolkit.com/downloads/plugin_VocalToolkit.zip
!unzip -qqq /content/plugin_VocalToolkit.zip > /dev/null

with open('/content/script.praat', 'w') as f:
  f.write(r"""writeInfoLine: preferencesDirectory$""")

!praat /content/script.praat
/root/.praat-dir

!mv /content/plugin_VocalToolkit/* /root/.praat-dir

!praat --version
Praat 6.0.37 (February 3 2018)

如何在没有 UI 的情况下使用 linux 命令行或 python 将此脚本应用于多个 wav 文件?

【问题讨论】:

    标签: audio praat


    【解决方案1】:

    一般答案

    你没有。你运行一个脚本,它完全取决于脚本它是如何工作的,它在哪些对象上工作,这些对象在哪里被提取,它们是如何被提取的,等等。

    因此,您必须始终查看如何应用特定脚本,而这始终需要弄清楚该脚本如何需要其输入,以及如何达到这一点。

    具体答案

    你想要的脚本页面显示

    这个命令[对]每个选定的声音[做一些事情]

    所以第一件事就是打开你想要的文件并选择它们。

    假设您将使用足够少的声音来一次性打开它们。如果您正在处理大量声音文件,或者文件太大而无法保存在内存中,则必须将作业批处理成更小的块。

    一种方法是使用包装脚本打开您的文件,选择它们,然后执行您想要的其他脚本:

    # Get a list of all your files
    files = Create Strings as file list: "list", "/some/path/*.wav"
    total_files = Get number of strings
    
    # Open each of them
    for i to total_files
        selectObject: files
        filename$ = Get string: i
        sounds[i] = Read from file: "/some/path/" + filename$    
    endfor
    
    # Clear the selection
    nocheck selectObject(undefined)
    
    # Add each sound to your selection
    for i to total_files
        plusObject: sounds[i]
    endfor
    
    # Run your script
    runScript: path_to_script$, ...
    # where the ... is the list of arguments your script expects
    
    # In your specific case, it would be something like
    runScript: preferencesDirectory$ + "/plugin_VocalToolkit/changeformants.praat",
        ... 500, 1500, 2500, 0,     0,    5500, "yes", "yes"
    #      ,-´  ,-´  ,--´ ,--´    ,-´       ^     ^      ^
    # New F1,  F2,  F3,  F4, and F5 means   |     |      |
    #                               Max formant   |      |
    #                       Process only voiced parts    |
    #                             Retrieve intensity contour
    
    # Do something with whatever the script gives you
    

    我的 Praat 已经很生疏了,但这至少应该让您知道该怎么做(免责声明:我没有运行上述任何操作,但概念应该没问题)。

    将“包装”脚本存储在某处,然后您可以从命令行执行它:

    $ praat /path/to/wrapper.praat
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 2013-09-21
      • 1970-01-01
      相关资源
      最近更新 更多