I believe I hit all the requirements and extras on this one.
2 small things:
After the quotes run out, I get the following error: "Maximum call stack size exceeded" just curious what that means (Splicing).
The voices generated sometimes randomly do a different voice than specified. I don't think it is my code but perhaps something with the API. Let me know if it is my code though please.