According to this:
https://developer.mozilla.org/en-US/...Utterance/text
the limit is 32K characters which calibre already respects. If you can find some reference for a smaller limit, I can change it to that. Or you can experiment yourself, see the function speak_marked_text in tts.pyj