NSSpeechSynthesizer在macOS上获取Siri声音

问题描述 投票:4回答:1

是否有办法获取NSSpeechSynthesizer的Siri声音? NSSpeechSynthesizer.availableVoices()没有列出它们,但是也许有未记录的把戏或其他内容?

我也尝试过使用AVSpeech​Synthesizer,即使它很难在macOS 10.14+上可用,我也无法大声读出来……

swift macos avfoundation avspeechsynthesizer nsspeechsynthesizer
1个回答
0
投票

Siri声音

我不知道有什么技巧可以使Siri语音可用,恐怕不可能通过公共API使其正常工作。

快速检查过的二进制文件/框架,并且有类似PermitAllVoices的检查(将包标识符与com.apple.VoiceOverUtilitycom.apple.VoiceOvercom.apple.VoiceOverUtilityCacheBuilder等进行比较。

也尝试复制声音,更改Info.plist值使其看起来像另一种声音,但仍然不可用/无法工作。

在MacOS上为[AVSpeech​Synthesizer

它可以工作,但是它有很多问题,您必须不时取消服务。

可用声音列表

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(_:willSpeakRangeOfSpeechString:utterance:)方法调用而必须终止speechSynthesizer(_:didFinish:)进程,则可能是错误的:

speechSynthesizer(_:didFinish:)

然后重试,它为我解决了该问题。

附加声音安装

  • 系统偏好设置-可访问性-语音
  • 系统语音-单击并向下滚动并选择自定义...
  • 选择要安装的其他声音
© www.soinside.com 2019 - 2024. All rights reserved.