我们如何解决iOS上的AXSpeechAssetDownloader错误?

时间:2015-06-12 01:40:24

标签: ios avspeechsynthesizer

我们有一个使用AVSpeechSynthesizer发言的iOS应用程序。它适用于iPad和其他设备 - 但我们注意到它不适用于我们的iPhone 6 Plus。

检查控制台输出时,我们看到此错误:

  

| AXSpeechAssetDownloader |误差| ASAssetQuery错误获取结果   错误域= ASError代码= 21“无法完成操作。   (ASError错误21 - 无法复制资产信息)“   UserInfo = 0x174a7e100 {NSDescription =无法复制资产信息}

运行应用程序的设备确实有网络连接。

任何想法如何开始解决这个问题?

5 个答案:

答案 0 :(得分:5)

我遇到了同样的问题。我找不到任何帮助,所以,我不得不通过尝试各种方法进行调试。

我发现如果你访问设置 - >一般 - >演讲,并启用“说出选择”并用英语发声,它将开始为你工作。

如果有帮助,请告诉我。

答案 1 :(得分:3)

这意味着尚未下载说出所需语言所需的资源,并且应用程序无法自动执行此操作。正如@softwarenerd所提到的,你可以去设置 - >一般 - >演讲,然后转到声音并下载您需要的任何声音。

但是,如果您正在为应用商店开发应用,那么这不是一个很好的解决方案。必须有一种方法可以自动和按需处理下载。

答案 2 :(得分:2)

我在iOS9上看到完全相同的问题。这是我的解决方案,这不是完美的,但至少可以避免崩溃。

let voices = AVSpeechSynthesisVoice.speechVoices()
for voice in voices {
    if lang == voice.language {
        utterance.voice = voice
        break;
    }
}

答案 3 :(得分:2)

如果您将字符串传递给语言A中的AVSpeechUtterance构造函数,但是要求使用语言B对其进行语音处理,则可能也会看到此错误。

示例:

let utterance = AVSpeechUtterance(string: "Hello")
utterance.voice = AVSpeechSynthesisVoice(language: "pl-PL")

在这种情况下"你好"不是波兰语(pl-PL)。 应用程序显示此类错误,并且可能(在某些情况下)演讲文本。

答案 4 :(得分:2)

对我来说,我能够通过在话语字符串之后设置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}