web-dev-qa-db-ja.com

iOSでAXSpeechAssetDownloaderエラーを解決するにはどうすればよいですか?

AVSpeechSynthesizerを使用して話すiOSアプリがあります。 iPadやその他のデバイスで動作しますが、iPhone 6Plusでは動作しないことがわかりました。

コンソール出力を調べると、次のエラーが表示されます。

| AXSpeechAssetDownloader |エラー| ASAssetQueryエラーフェッチ結果エラードメイン= ASエラーコード= 21 "操作を完了できませんでした。(ASエラーエラー21-アセット情報をコピーできません)" UserInfo = 0x174a7e100 {NSDescription =アセット情報をコピーできません}

アプリが実行されているデバイスにはネットワーク接続があります。

これを解決し始める方法について何かアイデアはありますか?

26
Praxiteles

私は同じ問題を抱えていました。助けが見つからなかったので、いろいろ試してデバッグしなければなりませんでした。

私が見つけたのは、[設定]-> [一般]-> [スピーチ]にアクセスし、[選択を話す]を有効にして英語の音声をいじくり回すと、機能し始めるということです。

これが役立つかどうか教えてください。

5
softwarenerd

これは、必要な言語を話すために必要なリソースがダウンロードされておらず、アプリがそれを自動的に実行できなかったことを意味します。 @softwarenerdが言及しているように、[設定]-> [一般]-> [音声]に移動し、[音声]に移動して、必要な音声をダウンロードできます。

しかし、アプリストア用のアプリを開発している場合、これは実際には良い解決策ではありません。ダウンロードを自動的かつオンデマンドで処理する方法が必要です。

3
Totoro

言語AのAVSpeechUtteranceコンストラクターに文字列を渡しているが、言語Bを使用して音声を使用するように要求している場合にも、このエラーが表示されることがあります。

例:

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

この場合、「Hello」はポーランド語(pl-PL)ではありません。アプリはそのようなエラーを表示し、(場合によっては)テキストをスピーチすることがあります。

2
Karbaman

私の場合、発話文字列をutterance.voiceafterに設定することで、これを解決することができました。

speechUtterL1 = AVSpeechUtterance(string: ("أتمنى لك نهارا سعيد")) 
speechUtterL1.voice = AVSpeechSynthesisVoice(language: "ar-SA")

逆に、音声を1回だけ設定すると、エラーが発生します。

[TTS]カスタム音声クエリの実行中にエラーが発生しましたErrorDomain = ASError Code = 15 "アセットタイプcom.Apple.MobileAssetの https://mesu.Apple.com/assets/ からアセット情報をコピーできません。 VoiceServices.GryphonVoice "UserInfo = {NSDescription =アセットタイプcom.Apple.MobileAsset.VoiceServices.GryphonVoice}からアセット情報をコピーできません https://mesu.Apple.com/assets/

2
Zyntx

IOS9でもまったく同じ問題が発生します。これが私の回避策です。これは完璧ではありませんが、少なくともクラッシュを回避します。

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