Как мы решаем ошибку AXSpeechAssetDownloader в iOS?
У нас есть приложение iOS, в котором используется AVSpeechSynthesizer. Он работает на iPad и других устройствах, но мы замечаем, что он не работает на нашем iPhone 6 Plus.
При просмотре вывода консоли мы видим эту ошибку:
| AXSpeechAssetDownloader | ошибка | Результаты получения ошибок ASAssetQuery Error Domain = ASError Code = 21 "Операция не может быть завершена. (Ошибка ASError 21 - Невозможно скопировать информацию об активах)" UserInfo = 0x174a7e100 {NSDescription = Невозможно скопировать информацию об активах}
Устройство, на котором работает приложение, имеет сетевое подключение.
Любые идеи, как даже начать решать это?
Ответы
Ответ 1
У меня была такая же проблема. Я не мог найти никакой помощи, поэтому мне пришлось отлаживать ее, пытаясь различать вещи.
То, что я обнаружил, заключается в том, что если вы заходите в Настройки → Общие → Речь и включаете "Говорить выбор" и гадаете с английским голосом, он только начнет работать для вас.
Сообщите мне, если это поможет.
Ответ 2
Это означает, что ресурсы, необходимые для использования требуемых языков, не были загружены, и приложение не удалось сделать это автоматически. как упоминает @softwarenerd, вы можете перейти в Настройки → Общие → Речь, а затем перейти в "Голоса" и загрузить все нужные вам голоса.
Но тогда это не очень хорошее решение, если вы разрабатываете приложение для магазина приложений. Должен быть способ обработки загрузки автоматически и по требованию.
Ответ 3
Я вижу ту же самую проблему на iOS9. Вот моя работа, которая не идеальна, но, по крайней мере, позволяет избежать краха.
let voices = AVSpeechSynthesisVoice.speechVoices()
for voice in voices {
if lang == voice.language {
utterance.voice = voice
break;
}
}
Ответ 4
Вы также можете увидеть эту ошибку, если вы передаете строку в конструктор AVSpeechUtterance на языке A, но попросите ее использовать ее на языке B.
Пример:
let utterance = AVSpeechUtterance(string: "Hello")
utterance.voice = AVSpeechSynthesisVoice(language: "pl-PL")
В этом случае "Hello" не является польским языком (pl-PL).
Приложение показывает такую ошибку и может (в некоторых случаях) текст речей.