31

mac 命令say可以指定与-v标志一起使用的语音。

say -v Alex "compile completed, put your swords down."

可用的语音可以在系统偏好设置/语音/文本到语音中看到。如何以编程方式获取此列表?

4

8 回答 8

99

This is the list of available voices:

say -v '?'
于 2013-02-21T10:56:03.750 回答
26
for voice in `say -v '?' | awk '{print $1}'`; do say -v "$voice" "Hello, my name is $voice."; done
于 2015-05-07T14:17:06.230 回答
11

Python 版本,由Barry Wark提供:

from AppKit import NSSpeechSynthesizer
print NSSpeechSynthesizer.availableVoices()
于 2009-09-29T04:47:10.550 回答
8

Shell 版本,没有 hack 太便宜了!

(实际上不要使用它,而是使用 python 版本。)

ls /System/Library/Speech/Voices | sed 's/.SpeechVoice$//'

Agnes
Albert
Alex
BadNews
Bahh
Bells
Boing
...
于 2009-09-29T00:26:32.363 回答
6

[NSSpeechSynthesizer availableVoices]

于 2009-09-28T23:20:01.693 回答
2

在决定一个声音之前,值得考虑几种声音。质量有很大的差异。

例如,汤姆听起来有点不耐烦,但比亚历克斯更现实。有些英国人的声音很棒。

使用说 -v '?' 为您提供已安装声音的列表以及一些示例句子,让您了解对声音的期望。您必须通过首选项来安装大多数非常好的声音,但它们带有一个紧凑的语音文件,可以让您在实际下载它们之前听到每个声音的声音。

于 2014-11-27T22:52:27.500 回答
2

您可以使用以下方法对所有可用的声音进行采样:

say -v '?' | awk '{$2=$3=""; printf "-v %s", $1; $1=""; print " \"" $0 "\""}'| xargs -L1 say
于 2020-02-19T11:41:03.440 回答
0
for i in `say --voice=? | cut -f 1 -d' ' ` ; do  
  echo $i;  say --voice=$i $i
done
于 2020-10-21T10:21:01.330 回答