我的 iOS 应用程序提供了多种语言的 AVSpeechSynthesizer
支持(不仅仅是设备的当前语言)。
在 Settings->General->Accessibility->Speech->Voices->西类牙语
,用户可以将首选语音设置为“西类牙语(西类牙)”或“西类牙语(墨西哥)”(对应于分别为 es-ES 和 es-MX。
与葡萄牙语(pt-PT、pt-BR)、法语(fr-FR、fr-CA)类似等等
如果我的一位用户想让我的应用说西类牙语短语,我如何确定用户在“设置”中选择了哪些可用的西类牙语语音?
我测试了 [AVSpeechSynthesisVoice speechVoices]
以查看当用户偏好改变时声音的顺序是否改变,但答案似乎是否定的。 [AVSpeechSynthesisVoice voiceWithLanguage:]
需要完整的语言区域设置字符串,因此即使默认情况下有两种西类牙语语音可用,但传入“es”会让您变成 nil。
我扫描了 [NSUserDefaults standardUserDefaults]
中的所有键,但那里没有任何相关内容。我查看了 UIAccessibility
文档,但没有找到我需要的内容。
最佳答案
对我有用的方法如下:
let defVoice = AVSpeechSynthesisVoice(language: NSLocale.current.languageCode)
我测试过英语,英语有很多变体。它返回用户在“设置”中选择的语音作为其当前语言环境的首选语音。
关于ios - 确定用户对给定语言的首选 AVSpeechSynthesisVoice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30761290/