是否有办法获取NSSpeechSynthesizer
的Siri声音? NSSpeechSynthesizer.availableVoices()
没有列出它们,但是也许有未记录的把戏或其他内容?
我也尝试过使用AVSpeechSynthesizer
,即使它很难在macOS 10.14+上可用,我也无法大声读出来……
我不知道有什么技巧可以使Siri语音可用,恐怕不可能通过公共API使其正常工作。
快速检查过的二进制文件/框架,并且有类似PermitAllVoices
的检查(将包标识符与com.apple.VoiceOverUtility
,com.apple.VoiceOver
,com.apple.VoiceOverUtilityCacheBuilder
等进行比较。
也尝试复制声音,更改Info.plist
值使其看起来像另一种声音,但仍然不可用/无法工作。
AVSpeechSynthesizer
它可以工作,但是它有很多问题,您必须不时取消服务。
AVSpeechSynthesisVoice.speechVoices().forEach { voice in
print("Name: \(voice.name) Language: \(voice.language) Identifier: \(voice.identifier)")
}
let utterance = AVSpeechUtterance(string: "Ahoj, jak se máš?")
utterance.voice = AVSpeechSynthesisVoice(identifier: "com.apple.speech.synthesis.voice.zuzana.premium")
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(utterance)
当您调用speak(utterance)
时,将调用以下所有方法(委托),它应能正常工作:
speechSynthesizer(_:didStart:)
speechSynthesizer(_:didStart:)
speechSynthesizer(_:willSpeakRangeOfSpeechString:utterance:)
如果仅得到speechSynthesizer(_:willSpeakRangeOfSpeechString:utterance:)
方法调用而必须终止speechSynthesizer(_:didFinish:)
进程,则可能是错误的:
speechSynthesizer(_:didFinish:)
然后重试,它为我解决了该问题。