The tts_speak() function has an additional parameter that, if not NULL,
will be filled with a pointer to an UtteranceId. If this is specified,
the caller must also call tts_free_utterance() to deallocate the
UtteranceId when they're done with it.
* tts_default() allocates a new TTS struct via it's default() constructor, returning a pointer to it or NULL on error.
* tts_free(tts) destroys the TTS pointed to by tts. If tts is NULL, this
function does nothing.
Any errors reported will cause the C API functions to return an error
value (NULL or -1). The caller can then use:
* const char* tts_get_error() to get a pointer to a string describing
the error
* void tts_clear_error() to deallocate any currently stored error
message.