截至macOS 11(Big Sur),
say
命令行实用程序似乎不知道Siri语音:say -v' ? '
没有列出Siri语音。明确将目标设置为Siri语音无效:
say -v NoraSiri hi!
无法找到Nora Siri语音(默认Siri语音)。更新:正如ccpizza的答案指出,如果Siri声音恰好是系统声音(即默认声音),
say
可以使用它,隐式地,也就是说,从macOS Ventura开始,不需要加上-v
,该答案还提供了交互式更改系统声音的说明(已更新为Ventura版本)。
使用捆绑标识符(例如,
com.apple.speech.synthesis.voice.custom.siri.nora.premium
)[1]不会抱怨未知的语音,但是语音输出失败,并出现打开语音通道失败:-86
:say -v com.apple.speech.synthesis.voice.custom.siri.nora.premium hi!
看起来,任何以前缀
com.apple.speech.synthesis.voice.custom
开头的字符串都会触发此错误。
同样地,
NSSpeechSynthesizer
不列出可用的Siri语音,并且不支持选择语音输出的语音。
macOS Big Sur本身就能够使用Siri语音进行TTS,这一点可以从您可以在“系统偏好设置 > 辅助功能 > 语音”中选择一个作为系统语音的事实中看出,例如与基于快捷键的“按下键时朗读所选文本”功能相结合。
(有趣的是,如果您通过右键单击文本并从上下文菜单中选择“语音 > 开始朗读”,可能也不会对其他辅助功能产生影响,选择为系统语音的Siri语音不会生效 - 这种差异是this MacRumors论坛帖子的主题。)
不幸的是,似乎没有通过实用程序或API公开此功能。
- 是否有任何方法可以使用Siri语音与
say
或NSSpeechSynthesizer
?
[1] 可以通过以下方式确定已安装的Siri语音的捆绑标识符:
ls /System/Library/Speech/Voices/*.SpeechVoice/Contents/Info.plist | grep -i siri | xargs -n 1 /usr/libexec/PlistBuddy -c 'print CFBundleIdentifier'
注意:以上内容适用于我在macOS Big Sur上的使用,该系统是从早期版本升级而来,并且至少安装了一个Siri语音。Siu Ching Pong -Asuka Kenji-报告称,在全新安装的、未升级的Big Sur机器上,System/Library/Speech/Voices
目录为空。
要查找所有可用(可下载)Siri语音的捆绑标识符:
/usr/libexec/PlistBuddy -c 'print DownloadableCustomVoices' /System/Library/PrivateFrameworks/SpeechObjects.framework/Resources/SpeechDataDefaults.plist | grep 'VoiceIdentifier' | sed -E 's/.+ = //'
/System/Library/Speech/Voices/
是空的。看起来文件已经移动到/System/Library/SpeechBase/Voices/
。然而,Siri的文件在那里找不到(grep
没有匹配项)。 - Siu Ching Pong -Asuka Kenji-/System/Library/PrivateFrameworks/SpeechObjects.framework/Versions/A/Resources/SpeechDataDefaults.plist
中找到。 - Siu Ching Pong -Asuka Kenji-/System/Library/PrivateFrameworks/SpeechObjects.framework/Resources/SpeechDataDefaults.plist
是更好的路径(去除/Versions/A
)。 - mklement0