When playing very long text to speech strings, the audio may end before your string has been completely read out.
Speech engines have a maximum amount of text it will recite at once (typically somewhere around 40 seconds worth). It determines each piece through the use of periods. If a large piece of text is only broken up with commas, at some point it will likely get cut off.
To fix this, break up your sentences by introducing periods in several places. Or consider splitting your speech into several say() functions.