Подтвердить что ты не робот

Как мы решаем ошибку AXSpeechAssetDownloader в iOS?

У нас есть приложение iOS, в котором используется AVSpeechSynthesizer. Он работает на iPad и других устройствах, но мы замечаем, что он не работает на нашем iPhone 6 Plus.

При просмотре вывода консоли мы видим эту ошибку:

| AXSpeechAssetDownloader | ошибка | Результаты получения ошибок ASAssetQuery Error Domain = ASError Code = 21 "Операция не может быть завершена. (Ошибка ASError 21 - Невозможно скопировать информацию об активах)" UserInfo = 0x174a7e100 {NSDescription = Невозможно скопировать информацию об активах}

Устройство, на котором работает приложение, имеет сетевое подключение.

Любые идеи, как даже начать решать это?

4b9b3361

Ответ 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). Приложение показывает такую ​​ошибку и может (в некоторых случаях) текст речей.