Is your feature request related to a problem?
Speech-to-text only exists inside a realtime Live session: the provider config turns on
input transcription as part of a full-duplex LiveAgent run. There is no transcription
capability independent of it. So dictating a message into the composer requires standing
up a whole realtime voice session on whichever provider the Active Live model uses, the
transcriber cannot be chosen separately from the voice, and an audio file the user
attaches cannot be transcribed at all.
Describe the solution you'd like
Make STT its own configurable model kind alongside Text and Live — provider plus model,
stored in the shared install-wide store with the same Active/per-profile override
semantics — used for dictation into the composer and for transcribing audio, whether or
not a Live model is configured or Active. Providers register the way voice providers
already do, so adding one is a registration rather than a branch.
Additional context
src/assistant/voice_providers.py — the provider registry to extend; input transcription today
src/assistant/voice.py, src/assistant/live_configs.py, src/assistant/llm_configs.py
web/src/components/settings/VoiceSection.svelte, web/src/components/VoicePicker.svelte
- ADR 0004 (shared LLM config store) for the Active / per-profile override semantics
Is your feature request related to a problem?
Speech-to-text only exists inside a realtime Live session: the provider config turns on
input transcription as part of a full-duplex
LiveAgentrun. There is no transcriptioncapability independent of it. So dictating a message into the composer requires standing
up a whole realtime voice session on whichever provider the Active Live model uses, the
transcriber cannot be chosen separately from the voice, and an audio file the user
attaches cannot be transcribed at all.
Describe the solution you'd like
Make STT its own configurable model kind alongside Text and Live — provider plus model,
stored in the shared install-wide store with the same Active/per-profile override
semantics — used for dictation into the composer and for transcribing audio, whether or
not a Live model is configured or Active. Providers register the way voice providers
already do, so adding one is a registration rather than a branch.
Additional context
src/assistant/voice_providers.py— the provider registry to extend; input transcription todaysrc/assistant/voice.py,src/assistant/live_configs.py,src/assistant/llm_configs.pyweb/src/components/settings/VoiceSection.svelte,web/src/components/VoicePicker.svelte