文本到语音API(AVSpeechSynthesisVoice)在iOS 13 GM中损坏



>更新

我在不同的设备上安装了iOS 13 GM,但没有遇到此问题。所以我不再确定这是特定于iOS 13 GM的,还是关于我安装它的方式。在第一台设备(iPhone X(上,我进行了升级(通过iTunes中的"选项键+检查更新按钮"(。在第二台设备(iPhone SE(上,我进行了完全还原。还不确定是什么原因导致它进入这种状态。

原始问题

AVSpeechSynthesisVoice.speechVoices()报告说,当我使用 iOS 13 GM 在我的设备上运行它时,没有可用的语音。事实上,当我尝试使用AVSpeechSynthesisVoice(identifier:)加载语音时,它总是返回 nil。它在模拟器中工作。我不认为这是以前的测试版的问题,它似乎适用于iOS 13.1 beta 2和3。

有没有人遇到过这种情况,并想出了任何解决方法?我没有看到任何有意更改此行为的文档,所以我怀疑这是一个错误。我打算提交雷达。但这对即将发布的iOS 13没有帮助。

此行为在新创建的单一视图项目中可重现,并将以下简单的viewDidLoad函数添加到包含的视图控制器中。

override func viewDidLoad() {
super.viewDidLoad()
let voices = AVSpeechSynthesisVoice.speechVoices()
print("Voice Count: (voices.count)")
}

输出很长:

2019-09-11 10:43:09.370992-0400 SpeechTest[1617:412065] Creating client/daemon connection: C591307C-313E-4B5F-91A8-184B7E662819
2019-09-11 10:43:09.396250-0400 SpeechTest[1617:412065] Got the query meta data reply for: com.apple.MobileAsset.MacinTalkVoiceAssets, response: 0
2019-09-11 10:43:09.397519-0400 SpeechTest[1617:412065] Consumed extension
2019-09-11 10:43:09.401982-0400 SpeechTest[1617:412065] Got the query meta data reply for: com.apple.MobileAsset.MacinTalkVoiceAssets, response: 0
Voice Count: 0
2019-09-11 10:43:09.435890-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.445269-0400 SpeechTest[1617:412066] Consumed extension
2019-09-11 10:43:09.468849-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.499573-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.520244-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServices.GryphonVoice, response: 0
2019-09-11 10:43:09.545243-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServices.CustomVoice, response: 0
2019-09-11 10:43:09.549941-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServices.CombinedVocalizerVoices, response: 2
2019-09-11 10:43:09.550075-0400 SpeechTest[1617:412066] [AXTTSCommon] Error running custom voice query XML not present
2019-09-11 10:43:09.569114-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.599459-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.630763-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServicesVocalizerVoice, response: 0
2019-09-11 10:43:09.650161-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServices.GryphonVoice, response: 0
2019-09-11 10:43:09.666885-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServices.CustomVoice, response: 0
2019-09-11 10:43:09.671279-0400 SpeechTest[1617:412066] Got the query meta data reply for: com.apple.MobileAsset.VoiceServices.CombinedVocalizerVoices, response: 2
2019-09-11 10:43:09.671412-0400 SpeechTest[1617:412066] [AXTTSCommon] Error running custom voice query XML not present
...

它重复最后 7 行 39 次,大概对应于它应该知道的 39 个声音。

我遇到了同样的 AVSpeechUtterance 问题,随着时间的推移,它似乎在我的设备上自行解决。在使用之前崩溃的应用程序或全新安装一段时间后,我不再在 iOS 13 或 13.1 上崩溃。

我遇到了同样的问题,我做了什么来解决它:

  1. 转到"设置">"语音">"语音">>"语音"(取决于应用的配置(。

    • 我的应用程序使用com.apple.ttsbundle.Samantha-compact所以我下载了萨曼莎和萨曼莎(增强版(
  2. 重启苹果电脑

现在我可以正常运行我的应用程序了。

这并没有使我的应用程序崩溃,但每次声明AVSpeechSynthesizer时都会导致内存泄漏。我通过将 AVSpeechSynthesizer 声明为全局变量来解决这个问题

static let synth = AVSpeechSynthesizer()

最新更新