Thanks for your answers.
The singleton is there because of the way the app is using sound, not to encapsulate NeatSpeech. And this works with the Slt voice, so I hoped it would be easy to switch to NeatSpeech.
Regarding the queuing, it’s in place because Slt and the previous sound mechanism I used could’t handle it, and the text come in chunks because of the nature of the app.
I did not expect such a difference between OpenEars and NeatSpeech, but I’ll test further, and let you know if I need more support.