确定用户对给定语言的首选AVSpeechSynthesisVoice

时间:2015-06-10 15:51:17

标签: ios text-to-speech avspeechsynthesizer

我的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文档但未找到我需要的内容。

1 个答案:

答案 0 :(得分:0)

对我有用的方法如下:

let defVoice = AVSpeechSynthesisVoice(language: NSLocale.current.languageCode)

我已经用英语进行了测试,其中有很多变体。它返回用户在“设置”中选择的语音作为其当前语言环境的首选语音。