更改默认的文字转语音

And*_*ang 1 applescript voice text-to-speech

Tell application "System Preferences" 
    set "default voice" to "Agnes" 
end tell 
Run Code Online (Sandbox Code Playgroud)

结果是:

无法将"默认语音"设置为"anna".不允许访问.

mkl*_*nt0 6

您的方法有两个问题:

  • System Preferences应用程序的字典不包含default voice用于更改TTS(文本到语音)默认语音的元素或任何其他元素(从OS X 10.11开始); 实际上,似乎Apple没有提供改变默认语音的程序化方式(甚至不通过它的NSSpeechSynthesizerCocoa类).
  • 通过双引号default voice,您尝试将值分配给字符串文字,这将始终失败.

注意:此答案的早期版本指向voice在Dropbox位置命名的Bash脚本; 此脚本已重命名为voices,修改了其语法,现在已正确发布为开源项目 - 请参阅下文.

不幸的是,从OSX 10.11(El Capitan)开始,没有记录的编程方式来更改默认语音.

它可以完成,但这样做需要在未记录的系统内部,因此不能保证未来的兼容性.

voices 是我写的一个CLI就是这样 - 经过验证可以在OSX 10.11上运行到OSX 10.8.

然后,您可以从AppleScript执行以下操作:

do shell script "/path/to/voices -d {voiceName}"
Run Code Online (Sandbox Code Playgroud)

举例来说,如果你把voices/usr/local/bin和想要切换到Agnes作为默认的声音,使用:

do shell script "/usr/local/bin/voices -d Agnes"
Run Code Online (Sandbox Code Playgroud)

如果你碰巧已经安装了Node.js的,你可以安装voices/usr/local/bin

npm install voices -g
Run Code Online (Sandbox Code Playgroud)

否则,请按照此处说明操作.