033f3685f5
Browsers suspend the Web Audio AudioContext until a user gesture; speakQuotes fires on reply-complete (no active gesture), so a suspended context played silently. Prime/resume the context on any click or keydown (capture phase) so it's running before playback. Server side was fine throughout (/tts + /tts/stream both 200 with valid audio).