iOS 文字转语音 : What decides the default voice returned by [AVSpeechSynthesisVoice voiceWithLanguage]?

标签 ios text-to-speech avspeechsynthesizer

AVSpeechSynthesisVoice.voiceWithLanguage 已在 iOS SDK 7.0 中引入。那时,每种语言/地区只有一种声音。

自 iOS SDK 9.0 起,为每种语言/地区添加了更多语音。因此 Apple 引入了一个新的 API voiceWithIdentifier,这样你就可以获得你想要的特定语音。

我的问题是,如果我们仍然在 iOS 9 或更高版本中使用 voiceWithLanguage 怎么办?这个 API 究竟返回了什么?更重要的是,返回的语音是否在 iOS 版本之间甚至在不同设备之间发生变化?

我注意到,voiceWithLanguage 返回的内容有点依赖于 iOS 语音设置“设置 -> 常规 -> 辅助功能 -> 语音 -> 语音 -> 英语”。但不是完全匹配。也就是说,例如英语美国,如果您设置语音“Fred”,voiceWithLanguage 将返回“Fred”,这很酷。但是,如果您将语音设置为“Nicky”,则 voiceWithLanguage 会返回“Nicky”以外的其他内容。

我问这是因为我的应用程序正在使用 voiceWithLanguage。当用户将 iOS 升级到 iOS 12 时,他们报告说他们听到了不同的声音。我相信 voiceWithLanguage 在升级到 iOS 12 后会返回不同的声音。虽然我无法在相同类型的设备上重现它。

当然,我可以开始改用 voiceWithIdentifier。但是就是对这个voiceWithLanguage很好奇。

最佳答案

[还没有解决方案]我也遇到了同样的问题。

首先,通过设置不同的声音

Accessibility -> Speech -> Voices
or 
Accessibility -> VoiceOver -> Speech -> Voices

然后

AVSpeechSynthesisVoice(language: language)

它不会影响 iOS 12.0.1 中的 AVSpeechSynthesizer(它适用于 iOS 11.x 和 iOS 12.0.0)

我还在 iOS 12.0.1 上发现了另外两件事

首先,Siri语音在使用时不再可用

AVSpeechSynthesisVoice(identifier: "com.apple.ttsbundle.siri_male_ja-JP_compact")

其次,如果我不设置语音标识符,该地区的女性 Siri 会说出文本。它也不受偏好的语音设置影响。顺便说一句,我仍然找不到让 Male Siri 说话的方法,但是...哈哈

关于iOS 文字转语音 : What decides the default voice returned by [AVSpeechSynthesisVoice voiceWithLanguage]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52727301/

相关文章:

ios - 如何修改SWIFT_MODULE_NAME?

mysql - 将 MySql 数据库连接到 IOS 应用程序

android - 在不修改应用程序代码的情况下从网页重定向

android - Android 中的声音管理语音识别/TTS

javascript - 使用 speechSynthesis.speak() 在 javascript 中同步执行

swift - NSSpeechSynthesizer 在 macOS 上获取 Siri 声音

ios - 使用 AVSpeechSynthesizer 可以改变单词或短语的发音方式吗?

ios - UIAlertView 和 UIActionSheet 按钮单击 - EXC_BAD_ACCESS

java - 文本到语音转换器

iOS 应用程序蓝牙音频在 "Phone Mode."中推出