2014-10-06 71 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 
相關問題