【问题标题】:How do I get a list of installed voices with AppleScript?如何使用 AppleScript 获取已安装声音的列表?
【发布时间】:2015-06-05 00:29:40
【问题描述】:

如何使用 AppleScript 获取已安装声音的列表?我看到以前使用过:“告诉应用程序声音”或查看目录“/System/Library/Speech/Voices/”中有哪些文件,但这些方法似乎不再起作用了。

【问题讨论】:

    标签: applescript text-to-speech


    【解决方案1】:

    您可以使用 shell 脚本 say 和 -v 选项来获取列表。

    do shell script "say -v?"
    

    -v 语音,--voice=语音 指定要使用的声音。默认是在 系统偏好。获取安装在 系统,指定“?”作为声音名称。

    在我的系统上,我会得到一个很长的列表,例如:

    Deranged            en_US    # I need to go on a really long vacation.
    Fred                en_US    # I sure like being inside this fancy computer
    Good News           en_US    # Congratulations you just won the sweepstakes and you don't have to pay income tax again.
    Hysterical          en_US    # Please stop tickling me!
    Jorge               es_ES    # Hola, me llamo Jorge y soy una voz española.
    

    为了只提取名称,我将使用名称后面的空格作为分隔符来分隔名称和垃圾

    set the_name to do shell script "say -v? |   awk -F\"\\ \\ \" '{print $1}'"
    

    所以我在这里将 say 命令的结果通过管道传输到 awk。

    -F fs 选项 将输入字段分隔符定义为正则表达式 fs。 所以这就是我使用空格将名称与垃圾分开的地方。

    我只需要给出一个双倍空格,而不是名称和垃圾之间的全部空格。我还必须用每个反斜杠来转义空格。

    而且因为我们在 Applescript 中,所以我们实际上需要转义转义符以将它们传递到 shell。当然也可以避免多余的引号。

    \"\\ \\ \"
    

    awk {print $1} 将打印出字段 1 ($1) 中的所有字段

    这给了我:

    Deranged
    Fred
    Good News
    Hysterical
    Jorge
    

    【讨论】:

    • 在带有 zsh 终端的 macOS Catalina (v10.15.7) 上,我必须输入如下命令(注意:'-v' 和反斜杠之间有一个空格):say -v \?
    猜你喜欢
    • 2011-03-13
    • 1970-01-01
    • 2019-01-19
    • 2012-08-27
    • 2015-10-21
    • 1970-01-01
    • 2021-01-12
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多