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

标签 ios text-to-speech avspeechsynthesizer

我的 iOS 应用程序提供了多种语言的 AVSpeechSynthesizer 支持(不仅仅是设备的当前语言)。
Settings->General->Accessibility->Speech->Voices->西类牙语,用户可以将首选语音设置为“西类牙语(西类牙)”“西类牙语(墨西哥)”(对应于分别为 es-ESes-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/

相关文章:

c# - 从 Unity 检查互联网连接

iphone - 当用户点击 iPhone 中的上方 View 时隐藏 UIActionSheet

ios - 将控制方法添加到 Storyboard 中创建的按钮?

ios - 如何从 Swift3 iOS 中的对象数组中查找唯一值

javascript - Web 语音 API 滞后。我的代码是坏的还是这是可以预料的?

java - UtteranceProgressListener 不会调用函数

ios - AVSpeechSynthesizer 只工作一次

python - 权限被拒绝 : 403 Request had insufficient authentication scopes

iOS 6 - AVSpeechSynthesizer 问题

ios - 根据 AVSpeechUtterance 在 swift 中更改 slider 值