Since AVSpeechSynthesizer is ran in a separate thread from the main application thread, it will have a separate NSRunLoop from the application, so even in a GUI application returning audio data or speaking multiple utterances in a row will probably not work unless I run the loop periodically. I'll probably have to use something like a separate Tokyo runtime for this.