使 `say` 终端实用程序和 NSSpeechSynthesizer 与 Siri 语音一起工作
Make the `say` terminal utility and NSSpeechSynthesizer work with Siri voices
从 macOS 11 (Big Sur) 开始,say
command-line utility 似乎无法识别 Siri 语音:
say -v '?'
不列出 Siri 语音。
明确指定 Siri 语音无效:
say -v NoraSiri hi!
找不到 Nora Siri 语音(这是默认的 Siri 语音)。
使用包 ID(例如,com.apple.speech.synthesis.voice.custom.siri.nora.premium
)[1] 不会抱怨未知语音,但语音输出失败Open speech channel failed: -86
:
say -v com.apple.speech.synthesis.voice.custom.siri.nora.premium hi!
貌似,任何前缀为com.apple.speech.synthesis.voice.custom
的字符串都会触发这个错误。
同样,NSSpeechSynthesizer
没有列出可用的 Siri 语音,也不支持 select 语音输出。
macOS Big Sur 本身 能够将 Siri 语音用于 TTS,事实证明您可以 select 将其作为 [=] 中的系统语音20=],例如结合基于快捷键的 Speak selected text when the key is pressed
功能。
(不过,奇怪的是,如果您右键单击文本和select Speech > Start Speaking
来自上下文菜单,可能也不适用于其他辅助功能 - 这种差异是 this MacRumors forum thread 的主题。)
不幸的是,此功能似乎并未通过实用程序或 API 公开。
- 有什么方法可以让
say
或 NSSpeechSynthesizer
使用 Siri 语音吗?
[1] 已安装 Siri语音的bundle ID可以确定如下:
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 语音的包 ID:
/usr/libexec/PlistBuddy -c 'print DownloadableCustomVoices' /System/Library/PrivateFrameworks/SpeechObjects.framework/Resources/SpeechDataDefaults.plist | grep 'VoiceIdentifier' | sed -E 's/.+ = //'
使用键盘快捷键可以激活新的Siri语音(noraSiri)
在 WWDC20 演讲中,Apple 表示 AVSpeechSynthesizer 不支持 Siri 语音。
演讲名为“Create a seamless speech experience in your apps”。显然这也适用于 Catalina。
这是相关的幻灯片:
我开始 thread at macrumors 关于配置系统语音朗读文本的类似问题。
从 macOS 11 (Big Sur) 开始,
say
command-line utility 似乎无法识别 Siri 语音:say -v '?'
不列出 Siri 语音。明确指定 Siri 语音无效:
say -v NoraSiri hi!
找不到 Nora Siri 语音(这是默认的 Siri 语音)。
使用包 ID(例如,
com.apple.speech.synthesis.voice.custom.siri.nora.premium
)[1] 不会抱怨未知语音,但语音输出失败Open speech channel failed: -86
:say -v com.apple.speech.synthesis.voice.custom.siri.nora.premium hi!
貌似,任何前缀为
com.apple.speech.synthesis.voice.custom
的字符串都会触发这个错误。
同样,
NSSpeechSynthesizer
没有列出可用的 Siri 语音,也不支持 select 语音输出。
macOS Big Sur 本身 能够将 Siri 语音用于 TTS,事实证明您可以 select 将其作为 [=] 中的系统语音20=],例如结合基于快捷键的 Speak selected text when the key is pressed
功能。
(不过,奇怪的是,如果您右键单击文本和select Speech > Start Speaking
来自上下文菜单,可能也不适用于其他辅助功能 - 这种差异是 this MacRumors forum thread 的主题。)
不幸的是,此功能似乎并未通过实用程序或 API 公开。
- 有什么方法可以让
say
或NSSpeechSynthesizer
使用 Siri 语音吗?
[1] 已安装 Siri语音的bundle ID可以确定如下:
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 语音的包 ID:
/usr/libexec/PlistBuddy -c 'print DownloadableCustomVoices' /System/Library/PrivateFrameworks/SpeechObjects.framework/Resources/SpeechDataDefaults.plist | grep 'VoiceIdentifier' | sed -E 's/.+ = //'
使用键盘快捷键可以激活新的Siri语音(noraSiri)
在 WWDC20 演讲中,Apple 表示 AVSpeechSynthesizer 不支持 Siri 语音。
演讲名为“Create a seamless speech experience in your apps”。显然这也适用于 Catalina。
这是相关的幻灯片:
我开始 thread at macrumors 关于配置系统语音朗读文本的类似问题。