В вашем подходе есть две проблемы:
- Словарь для приложения
System Preferences
не содержит элемента default voice
или какого-либо другого элемента для изменения голоса TTS (преобразования текста в речь) по умолчанию.(начиная с OS X 10.11);на самом деле, похоже, что Apple не предоставляет никакого программного способа изменения голоса по умолчанию (даже через класс NSSpeechSynthesizer
Какао). - Двойными кавычками
default voice
вы 'мы пытаемся присвоить значение строковому литералу , который всегда будет неудачным.
Примечание: более ранняя версия этого ответа указывала на скрипт Bashс именем voice
в папке Dropbox;с тех пор этот сценарий был переименован в voices
, его синтаксис был пересмотрен и теперь правильно публикуется как проект с открытым исходным кодом - см. ниже.
К сожалению, начиная с OSX 10.11 (El Capitan), нет задокументированного программного способа изменить голос по умолчанию.
Это можно сделать, но это требует недокументированных внутренних компонентов системы, поэтому совместимость в будущем не гарантируется.
voices
- это написанный мною CLI, который делает именно это - проверено на работу с OSX 10.11 вплоть до OSX 10.8.
Затем вы можете сделать следующее из AppleScript:
do shell script "/path/to/voices -d {voiceName}"
Например, если вы поместили voices
в /usr/local/bin
и хотите переключиться на Agnes
в качестве голоса по умолчанию, используйте:
do shell script "/usr/local/bin/voices -d Agnes"
Если у вас установлен Node.js, вы можете установить voices
в /usr/local/bin
с
npm install voices -g
В противном случае следуйте инструкциям здесь .