如何使用AppleScript获取已安装语音的列表?

时间:2014-10-06 22:15:00

标签: applescript text-to-speech

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

1 个答案:

答案 0 :(得分:5)

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

do shell script "say -v?"
  

-v voice, - voice = 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