The say
command-line utility seems to be unaware of Siri voices as of macOS 11 (Big Sur):
say -v '?'
doesn't list Siri voices.
Targeting a Siri voice explicitly doesn't work:
say -v NoraSiri hi!
doesn't find the Nora Siri voice (which is the default Siri voice).
Update: As ccpizza's answer points out, if a Siri voice happens to be the system voice (i.e. the default voice), say
can use it, implicitly, namely without -v
, starting with macOS Ventura ; the answer also has updated-for-Ventura instructions for how to change the system voice interactively.
Using a bundle ID (e.g., com.apple.speech.synthesis.voice.custom.siri.nora.premium
)[1] doesn't complain about an unknown voice, but speech output fails with Open speech channel failed: -86
:
say -v com.apple.speech.synthesis.voice.custom.siri.nora.premium hi!
Seemingly, any string with prefix com.apple.speech.synthesis.voice.custom
triggers this error.
Similarly, NSSpeechSynthesizer
doesn't list Siri voices as available and doesn't support selecting one for speech output.
macOS Big Sur itself is capable of using a Siri voice for TTS, as evidenced by the fact that you can select one as the system voice in System Preferences > Accessibility > Speech
, e.g. in combination with the shortcut-key-based Speak selected text when the key is pressed
feature.
(Curiously, though, a Siri voice selected as the system voice does not take effect if you right-click text and select Speech > Start Speaking
from the context menu and possibly also not for other accessibility features - this discrepancy is the subject of this MacRumors forum thread.)
Unfortunately, it appears that this functionality isn't exposed through a utility or API.
say
or NSSpeechSynthesizer
?[1] The bundle IDs of the installed Siri voices can be determined as follows:
ls /System/Library/Speech/Voices/*.SpeechVoice/Contents/Info.plist | grep -i siri | xargs -n 1 /usr/libexec/PlistBuddy -c 'print CFBundleIdentifier'
Note: The above works for me as of macOS Big Sur, upgraded from an earlier version, with at least one Siri voice installed. Siu Ching Pong -Asuka Kenji- reports that on a freshly installed, non-upgraded Big Sur machine the System/Library/Speech/Voices
directory is empty.
To find the bundle IDs of all available (downloadable) Siri voices:
/usr/libexec/PlistBuddy -c 'print DownloadableCustomVoices' /System/Library/PrivateFrameworks/SpeechObjects.framework/Resources/SpeechDataDefaults.plist | grep 'VoiceIdentifier' | sed -E 's/.+ = //'
In a WWDC20 talk, Apple says Siri voices are not available in AVSpeechSynthesizer.
The talk is called "Create a seamless speech experience in your apps." Apparently this applies to Catalina as well.
Here's the relevant slide:
I started a thread at macrumors regarding similar problems configuring the system voice to speak text.