我们如何解决 iOS 上的 AXSpeechAssetDownloader 错误?
Posted
技术标签:
【中文标题】我们如何解决 iOS 上的 AXSpeechAssetDownloader 错误?【英文标题】:How do we solve an AXSpeechAssetDownloader error on iOS? 【发布时间】:2015-06-12 01:40:23 【问题描述】:我们有一个使用 AVSpeechSynthesizer 说话的 ios 应用。它适用于 iPad 和其他设备 - 但我们注意到它不适用于我们的 iPhone 6 Plus。
在检查控制台输出时,我们会看到以下错误:
|AXSpeechAssetDownloader|错误| ASAssetQuery 获取结果时出错 错误域=ASError Code=21“操作无法完成。 (ASError 错误 21 - 无法复制资产信息)" UserInfo=0x174a7e100 NSDescription=无法复制资产信息
运行应用的设备确实有网络连接。
任何想法如何开始解决这个问题?
【问题讨论】:
我们遇到了完全相同的问题,但对我们来说,它发生在运行 iOS 9 的设备上。 迁移到 iOS8 后看到同样的问题:|AXSpeechAssetDownloader|error| ASAssetQuery 错误获取结果 Error Domain=ASError Code=21“操作无法完成。(ASError 错误 21 - 无法复制资产信息)”UserInfo=0x174473e00 NSDescription=无法复制资产信息 2015-07-09 10 :56:33.371 xxxxxxxx[6275:1073856] 为资产构建 MacinTalk 语音:(null) 这是在 iOS8.4 的 iPadAir 上 在 iPod Touch 上的 iOS 8.4 上看到完全相同的问题。在下面尝试了@softwarenerd 的建议,但没有帮助。 今天看到这个问题,昨天 exact 相同的项目运行良好。完全一样,事实上,与我只是关闭笔记本电脑然后cmd-R'd今天继续测试相同的项目本身。昨天没有错误,今天失败了。奇怪的是,实际说话效果很好,因为我在代码中调用的声音是我喜欢的声音,所以我认为它是默认的。 【参考方案1】:我遇到了同样的问题。我找不到任何帮助,所以我不得不尝试各种方法来调试它。
我发现,如果您访问设置 -> 常规 -> 语音,并启用“语音选择”并使用英语语音,它就会开始为您工作。
如果这有帮助,请告诉我。
【讨论】:
它对我有用,你知道为什么会这样吗?我有一个 iPod touch 5G 和一个 iPhone 5S 并且在没有该配置的情况下工作。但随着六加开始崩溃 Settings\General iOS10.1.1 中没有 Speech 它在 Accessibility 中并且仍然显示错误【参考方案2】:这意味着说所需语言所需的资源尚未下载,并且该应用未能自动下载。正如@softwarenerd 所提到的,您可以转到设置-> 常规-> 语音,然后转到语音并下载您需要的任何语音。
但是,如果您正在为应用商店开发应用,这并不是一个很好的解决方案。必须有一种方法可以按需自动处理下载。
【讨论】:
这不是答案,至少对我来说。我已明确地将我的代码与设备的首选语音匹配,并且没有任何变化,仍然看到:“|AXSpeechAssetDownloader|error| ASAssetQuery 错误获取结果(对于 com.apple.MobileAsset.MacinTalkVoiceAssets)错误域=ASError Code=21“无法复制资产信息" UserInfo=NSDescription=无法复制资产信息"【参考方案3】:我在 iOS9 上看到了完全相同的问题。这是我的解决方法,虽然并不完美,但至少可以避免崩溃。
let voices = AVSpeechSynthesisVoice.speechVoices()
for voice in voices
if lang == voice.language
utterance.voice = voice
break;
【讨论】:
我假设lang变量实现let lang = AVSpeechSynthesisVoice(language: "en-US")
`【参考方案4】:
如果您使用语言 A 将字符串传递给 AVSpeechUtterance 构造函数,但要求使用语言 B 进行语音,您也可能会看到此错误。
例子:
let utterance = AVSpeechUtterance(string: "Hello")
utterance.voice = AVSpeechSynthesisVoice(language: "pl-PL")
在这种情况下,“Hello”不是波兰语 (pl-PL)。 应用程序显示此类错误,并且可能(在某些情况下)语音文本。
【讨论】:
这正是我的情况。【参考方案5】:对我来说,我可以通过在 话语字符串之后设置 utterance.voice 来解决此问题。
speechUtterL1 = AVSpeechUtterance(string: ("أتمنى لك نهارا سعيد"))
speechUtterL1.voice = AVSpeechSynthesisVoice(language: "ar-SA")
反过来,我只设置一次声音会导致错误:
[TTS] 运行自定义语音查询时出错 Error Domain=ASError Code=15 “无法从https://mesu.apple.com/assets/复制资产信息 对于资产类型 com.apple.MobileAsset.VoiceServices.GryphonVoice" UserInfo=NSDescription=无法复制资产信息 https://mesu.apple.com/assets/ 用于资产类型 com.apple.MobileAsset.VoiceServices.GryphonVoice
【讨论】:
以上是关于我们如何解决 iOS 上的 AXSpeechAssetDownloader 错误?的主要内容,如果未能解决你的问题,请参考以下文章