Oh dear, thats bad, but thank you basjak for posting a reply. You do appear to be the "text" expert on the forum.
However, the "text-speech" must be temporarily stored somewhere whilst it is "speaking" so I think it should be possible somehow to get to that storage place wherever it is and clear it.
As a temp solution, I may try to split all the strings in to smaller chunks, pass those through the "speech" and hope that the joins aren't too noticeable. That way I can opt not to activate the next chunk of text if I need the speech to stop.
Any more thoughts always welcome.