I wish Mathematica would wait until Speak
stops speaking before moving on to the next command, but I couldn't think of anything better than
mySpeak[text_String] := Module[{phrases}
,
phrases =
StringSplit[
StringReplace[text, (# -> # <> "\n") & /@ {".", ";", "!", "?"}],
"\n"];
Do[
Speak[phrases[[i]]];
Pause[0.4+0.2*StringLength[phrases[[i]]]];
, {i, Length@phrases}
]
]
Is there a better solution?