如果有一种方法可以选择与设置应用程序中相同的语音,那么它将在 AVSpeechSynthesisVoice 类的“查找语音”主题下显示。查看 AVSpeechSynthesisVoice 的代码定义时,我没有找到任何不同的检索语音的方法。
这是我正在处理的应用程序中获取增强语音的解决方法:
为了节省存储空间,新的 iOS 设备可能默认情况下没有增强版本的语音。在我的全新 iPhone 上迭代可用语音时,我只找到了默认质量语音,例如:[AVSpeechSynthesisVoice 0x1c4e11cf0] Language: en-US, Name: Samantha, Quality: Default [com.apple.ttsbundle.Samantha-compact]
我在这篇文章中找到了如何启用其他语音,并从中下载了名为“Samantha(增强版)”的语音。再次检查可用语音列表时,我注意到了以下添加内容:[AVSpeechSynthesisVoice 0x1c4c03060] Language: en-US, Name: Samantha (Enhanced), Quality: Enhanced [com.apple.ttsbundle.Samantha-premium]
目前,我已经能够在 Xcode 上选择增强语言。鉴于 AVSpeechSynthesisVoice.currentLanguageCode() 方法公开了当前选择的语言,我运行了以下代码来选择我能找到的第一个增强语音。如果没有可用的增强版,则只需选择默认版本(下面的代码是为我的应用程序中处理所有语音的 VoiceOver 自定义类创建的。下面的代码更新其语音变量)。
var voice: AVSpeechSynthesisVoice!
for availableVoice in AVSpeechSynthesisVoice.speechVoices(){
if ((availableVoice.language == AVSpeechSynthesisVoice.currentLanguageCode()) &&
(availableVoice.quality == AVSpeechSynthesisVoiceQuality.enhanced)){
self.voice = availableVoice
print("\(availableVoice.name) selected as voice for uttering speeches. Quality: \(availableVoice.quality.rawValue)")
}
}
if let selectedVoice = self.voice {
print("The following voice identifier has been loaded: ",selectedVoice.identifier)
} else {
self.voice = AVSpeechSynthesisVoice(language: AVSpeechSynthesisVoice.currentLanguageCode())
我也希望苹果能够公开一种直接加载所选语言的方法,但在此期间,我希望这个解决方法可以为您提供帮助。我猜Siri的增强语音是即时下载的,所以可能这就是它需要如此长时间来回答我的语音命令的原因 :)
最好的问候。
@"en-US"
语音时,我得到了旧的、计算机化的Siri。遗憾。 - mbm29414