Mon code AVSpeechSynthesizer ne fonctionne pas sur le périphérique (iOS 10), mais il a fonctionné sur iOS 9.x et il fonctionne maintenant en simulateur.AVSpeechSynthesizer ne fonctionne pas sur iOS10
let str = self.audioOutput //just some string here, this string exists, and it's in english
let synth = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: str)
utterance.rate = AVSpeechUtteranceDefaultSpeechRate
let lang = "en-US"
utterance.voice = AVSpeechSynthesisVoice(language: lang)
synth.speakUtterance(utterance)
Je reçois cette erreur:
MobileAssetError:1] Unable to copy asset attributes
Could not get attribute 'LocalURL': Error Domain=MobileAssetError Code=1 "Unable to copy asset attributes"
UserInfo={NSDescription=Unable to copy asset attributes}
0x1741495e0 Copy assets attributes reply: XPC_TYPE_DICTIONARY <dictionary: 0x1741495e0> { count = 1, transaction: 0, voucher = 0x0, contents =
"Result" => <int64: 0x1744203a0>: 1}
Avant qu'il y avait des messages d'erreur comme ça:
Unable to copy asset information from https://mesu.apple.com/assets/ for asset type
Quelqu'un sait comment résoudre ce problème? Je sais qu'il y a quelques solutions de contournement (l'utilisateur doit aller à Paramètres-> Général et changer de sélection de Speak, par exemple) mais je ne pense pas que ce soit une vraie solution ici.
Mise à jour: J'ai créé un nouveau projet (XCode8/Swift3/pas d'autres pods/frameworks et ainsi de suite). Cela fonctionne en simulateur, mais cela me donne les mêmes erreurs sur mon appareil.
Mise à jour 2: Fonctionne sur l'appareil. J'ai des messages d'erreur similaires (Impossible de copier les attributs d'actifs et ainsi de suite), mais cela fonctionne pour le moment. Je ne sais pas ce que c'était.
dans votre code essayer de vérifier si votre 'AVSpeechSynthesisVoice (langue: lang)' existe, sinon .. essayer autre langue – TonyMkenu
j'ai essayé quelque chose comme ça: laisse voix = AVSpeechSynthesisVoice.speechVoices() pour la voix dans les voix { print ("\ (voix.langue) ") print (" \ (voice.name) ") print (" \ (voice.identifier) ") } est-il suffisant? Je "dans cette liste en-US". – lithium
essayer cette : 'garde laisse voix = AVSpeechSynthesisVoice (identifiant: AVSpeechSynthesisVoiceIdentifierAlex) else {return}' la place 'AVSpeechSynthesisVoice (langue: lang).' – TonyMkenu