AVSpeechSynthesizer: delegate willSpeakRangeOfSpeechString returns false character ranges

I'm using AVSpeechSynthesizer to let the App speak some text and use the delegate method speechSynthesizer:willSpeakRangeOfSpeechString:utterance: to keep track of the current progress, and to highlight the currently spoken word. Usually this works great, but under certain circumstances, the character range that is returned by the delegate method will be wrong and remains wrong until the end. The returned range seems to have an additional offset and this offset can even grow. This issue is triggered by certain words.


In my case I use a German text with a german voice and I've noticed that this issue is triggered whenever the text includes the word "Fusion Drive" (the text I used for testing was a review about the new iMacs). For example I use the sentence…


Im Unterschied zu seinem Vorgänger kann er auf ein Fusion Drive und einen dedizierten Grafikchip (Typ AMD Radeon Pro 560) zugreifen


The word "Drive" from the above sentence does have the character range (58,5), but the delegate method does return (58,1) for the "D" and (60,4) for "rive", which means that according to these character ranges there must be a space character between the "D" and "rive" (at index 59), which is wrong. Therefore all ranges coming afterwards are also off by one. If a later sentence contains "Fusion Drive" again, the range will be then off by 2. Each time the text-to-speach feature encounters "Fusion Drive" the error becomes larger.


Further tests have revealed that "Fusion drive" would not trigger the Problem, also "Fusion" or "Drive" alone would not. The trigger seems to be "Fusion Dr" only. So if I use other works that start with "Dr" like "Drum" or "Dream" the rage is wrong again. Also the pronounciation of the "Dr"-word is wrong if the issue occurs. It sounds like "D-ream", "D-rive" etc. But the pronounciation is correct if the text does not trigger this issue (like when the word "Fusion" is not present).


Also the issue can not be related to any special characters which are not "speakable", because this happens with only ASCII characters as well.


Am I doing something wrong? Is there a way to workaround this issue.