I am also facing this issue.
When using AVSpeechUtterance with certain strings, it stops abruptly after speaking only part of the string.
For example, when given a string of about 500 words, it speaks around 15 words and then stops. When this happens, the synthesizer delegate method -speechSynthesizer:didCancel Utterance: is called.