AVSpeechSynthesizer doesn't work on iOS10

lithium picture lithium · Oct 5, 2016 · Viewed 9.7k times · Source

My AVSpeechSynthesizer code is not working on device (iOS 10), but it worked on iOS 9.x and it is working now in simulator.

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)

I'm getting this error:

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}

Before that there were error messages like that:

Unable to copy asset information from https://mesu.apple.com/assets/ for asset type

Does anyone know how to solve this issue? I know there is some workarounds (user has to go to Settings->General and switch Speak Selection, for example) but I don't think it's a real solution here.

Update: I created a new project (XCode8/Swift3/no other pods/frameworks and so on). It works in simulator, but it gives me the same errors on my device.

Update 2: It works on device. I have similar error messages (Unable to copy asset attributes and so on), but it works for now. I don't know what it was.

Answer

kaka picture kaka · Nov 26, 2016

Turn off your silent mode (the physical switch). It works in my case.