VoxShot Demo

Type some text and press "Speak" to synthesize and play it.

Streaming playback

play() starts speaking before the whole text is rendered, and keeps one chunk of lookahead. "Cut and start the next line" interrupts an utterance while that lookahead is still being rendered, then immediately asks for a different one — the sequence that used to wedge the engine (#67). Watch the log: the abandoned render should be cancelled, and the next line should still be answered.