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