Сделайте так, чтобы утилита `say` терминала и NSSpeechSynthesizer работали с голосами Siri - PullRequest
4 голосов
/ 09 апреля 2020
  • Утилита командной строки say , похоже, не знает о голосах Siri с macOS 10.15 (Каталина):

    • say -v '?' не перечисляет голоса Siri.

    • Точная настройка голоса Siri явно не работает:

    • say -v NoraSiri hi! нет найдите голос Nora Siri (который является голосом Siri по умолчанию).

    • Использование идентификатора пакета (например, 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 как доступные и не отображает ' • не поддерживает выбор одного для речевого вывода.

Сама ОС поддерживает возможность использовать голос Siri для TTS, о чем свидетельствует тот факт, что вы можете выбрать один из них как системный голос в System Preferences > Accessibility > Speech, например, в сочетании с коротким Функция Speak selected text when the key is pressed на основе ut-ключа.

К сожалению, похоже, что эта функция не предоставляется через утилиту или 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'
...