Proposal for OVOS-AUDIO-1, the audio output service specification.
Problem
The audio output service — the pipeline's output-side counterpart that consumes ovos.utterance.speak and renders responses as audio — has no normative contract. Topics, queue semantics, lifecycle signals, and stop integration are all implementation-defined.
Proposal
Defines the full contract for the audio output service:
- Rendering pipeline — dialog-transformer chain → TTS synthesis → TTS-transformer chain → playback queue
- Sequential playback queue — TTS speech and sound effects in declared order;
ovos.audio.queue for scheduled sounds, ovos.audio.play_sound for immediate playback
- Output lifecycle —
ovos.audio.output.started / ovos.audio.output.ended with session identity from context.session.session_id
- Speaking-status query —
ovos.audio.is_speaking (session-scoped via context)
- Stop integration —
ovos.audio.stop and universal ovos.stop; MAY scope to session
- Listen trigger —
ovos.mic.listen emitted after playback ends when listen: true is set on the speak message
PR
PR #38
Proposal for OVOS-AUDIO-1, the audio output service specification.
Problem
The audio output service — the pipeline's output-side counterpart that consumes
ovos.utterance.speakand renders responses as audio — has no normative contract. Topics, queue semantics, lifecycle signals, and stop integration are all implementation-defined.Proposal
Defines the full contract for the audio output service:
ovos.audio.queuefor scheduled sounds,ovos.audio.play_soundfor immediate playbackovos.audio.output.started/ovos.audio.output.endedwith session identity fromcontext.session.session_idovos.audio.is_speaking(session-scoped via context)ovos.audio.stopand universalovos.stop; MAY scope to sessionovos.mic.listenemitted after playback ends whenlisten: trueis set on the speak messagePR
PR #38