2

我的 iOS 应用程序AVSpeechSynthesizer支持多种语言(不仅仅是设备的当前语言)。
Settings->General->Accessibility->Speech->Voices->Spanish中,用户可以将首选语音设置为“Spanish (Spain)”“Spanish (Mexico)”(分别对应于es-ESes-MX)。
与葡萄牙语(pt-PT,pt-BR),法语(fr-FR,fr-CA)等类似。

如果我的一位用户想让我的应用说西班牙语短语,我如何确定用户在“设置”中选择了哪些可用的西班牙语语音?

我测试[AVSpeechSynthesisVoice speechVoices]了当用户偏好发生变化时声音的顺序是否会发生变化,但答案似乎是否定的。
[AVSpeechSynthesisVoice voiceWithLanguage:]需要完整的语言区域设置字符串,因此即使默认情况下有两个西班牙语语音可用,传入“es”也会使您为零。
我扫描了 中的所有键[NSUserDefaults standardUserDefaults],但那里没有任何相关内容。而且我浏览了UIAccessibility文档但没有找到我需要的东西。

4

1 回答 1

0

对我有用的方法如下:

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

我已经测试过英语,其中有很多变体。它返回用户在“设置”中选择的语音作为他们当前区域设置的首选语音。

于 2018-12-11T21:01:32.310 回答