2014-10-06 80 views

回答

5

您可以使用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的{打印$ 1}将在现场1($ 1)

这给了我打印出所有的字段:

Deranged 
Fred 
Good News 
Hysterical 
Jorge 
相关问题