← Schema index / Config Reference

speech schema

Canonical generated docsThis section is generated from caco config schema --json. The table below preserves the runtime field path, type, required/default markers, and canonical description for every value in this slice.

Speech provider defaults — TTS, STT, audio I/O routing.

Field pathTypeRequiredDefaultCanonical description
speechsectionoptionalSpeech provider defaults — TTS, STT, audio I/O routing.
└ speech.enabledbooloptionaltrueWhether speech (TTS/STT) is enabled. Set false on headless nodes.
└ speech.mutetrue|false|local|tts-daemon-runningoptionallocalStartup mute policy. true=start muted, false=start unmuted, local=restore last TUI toggle, tts-daemon-running=muted (TTS daemon handles speech).
└ speech.ttsmapoptionalText-to-speech defaults.
└ speech.tts.nu32optional1Maximum simultaneous agent speech slots. Default/effective 1; values <=1 play sequentially, values >1 allow that many concurrent TTS daemon playback slots.
└ speech.tts.overlap_secsu64optionalOptional cap on concurrent TTS daemon playback overlap. Omitted allows full-slot overlap; 0 disables intentional overlap; positive values cap overlap to that many seconds.
└ speech.tts.chimemapoptionalDeterministic per-agent chime prepended before TTS playback (generalized note count/length/gap config). Omit to disable; present defaults to a 3-note C minor chime with no transposition.
└ speech.tts.chime.enabledbooloptionaltrueEnable or disable this chime object.
└ speech.tts.chime.root_notestringoptionalCScale root note such as C, C#, Db, F sharp, or Bb.
└ speech.tts.chime.scalestringoptionalminorScale type for note slots: major or minor.
└ speech.tts.chime.transpose_semitonesi32optional0Semitone transposition applied after root/scale resolution. Aliases: transpose, transposition.
└ speech.tts.chime.num_notesu32optional3Number of notes derived from the agent id (1..=16). Defaults to 3, the historical fixed chime.
└ speech.tts.chime.note_length_msu32 or listoptional130Per-note duration in ms: a single uniform value or a per-note list (short lists pad with the 130ms default).
└ speech.tts.chime.gap_length_msu32 or listoptional35Gap between notes in ms: a single uniform value or a per-gap list of length num_notes-1 (short lists pad with the 35ms default).
└ speech.tts.modelstringoptionalTTS model identifier (provider-dependent).
└ speech.tts.command_templatestringoptionalShell command template for ad-hoc TTS adapters. Uses env vars such as $BODY and optional $OUTPUT_FILE.
└ speech.tts.voicestringoptionalDefault voice name.
└ speech.tts.voiceslist[string]optionalAdditional voice names merged into the capabilities voice list.
└ speech.tts.voice_rotationbooloptionaltrueAuto-assign distinct voices per agent sender.
└ speech.tts.speedf32optionalPlayback speed multiplier (0.25–4.0). 1.0 = normal.
└ speech.tts.speed_queue_modifierf32optional0.0Queue-length-aware speed modifier. Effective speed = min(base + speed_queue_modifier * shared_pending_queue_depth, max_speed). 0.0 (default) preserves base speed.
└ speech.tts.max_speedf32optional3.0Upper bound for queue-aware effective playback speed. Default 3.0.
└ speech.tts.agent_dmsmapoptionalOptional direct agent-message readout overlay. Inherits normal TTS settings unless fields here override them.
└ speech.tts.agent_dms.read_aloudbooloptionalfalseRead direct agent-message feed events aloud. Default false.
└ speech.tts.agent_dms.speedf32optionalOptional speed override for direct-message readout.
└ speech.tts.agent_dms.speed_queue_modifierf32optional0.0Queue-aware speed modifier for agent-DM readout (see speech.tts.speed_queue_modifier). 0.0 default preserves base.
└ speech.tts.agent_dms.max_speedf32optional3.0Upper bound for queue-aware agent-DM speed. Default 3.0.
└ speech.tts.langlist[string]optionalOrdered preferred TTS language codes. First non-blank entry is the default synthesis language; later entries are alternates/fallbacks. Empty or omitted resolves to en-US. The resolved default persists in TTS daemon runtime state across restarts.
└ speech.tts.voice_filtermapoptionalSox-based voice filter applied post-TTS. Preset, custom sox chain, or rotation pool.
└ speech.tts.voice_filter.presetstringoptionalNamed filter preset: telephone, hall, lofi, underwater, radio, whisper, cave, megaphone, robot, vintage.
└ speech.tts.voice_filter.customstringoptionalRaw sox effect chain string (e.g. "reverb 50 highpass 300").
└ speech.tts.voice_filter.rotationmapoptionalRotation pool for per-agent filter assignment.
└ speech.tts.voice_filter.rotation.presetslist[string]optionalPool of preset names to rotate through.
└ speech.tts.voice_filter.rotation.combine_with_voicebooloptionaltrueCombine filter rotation with voice rotation for unique agent identities.
└ speech.tts.disable_voice_filtersbooloptionalfalseDisable voice filters even if configured. Debugging kill switch.
└ speech.tts.daemon_syncbooloptionalProxy TUI speech controls to TTS daemon instead of local playback.
└ speech.tts.profilesmapoptionalNamed runtime-selectable TTS profile/effect bundles keyed by logical profile name. Each value uses the speech.tts shape; command-template profiles advertise their model label as profile.model or the map key.
└ speech.tts.profiles.<profile>.modelstringoptionalRuntime model label for this profile; defaults to the profile key when command_template is set.
└ speech.tts.profiles.<profile>.command_templatestringoptionalShell command/effect wrapper for this profile.
└ speech.tts.profiles.<profile>.voicestringoptionalDefault voice for this profile.
└ speech.tts.profiles.<profile>.voiceslist[string]optionalAdditional voices exposed while this profile registry is configured.
└ speech.tts.profiles.<profile>.speedf32optionalDefault playback speed for this profile.
└ speech.tts.personasmapoptionalDeclarative TTS persona/category mappings keyed by persona name. Each persona may provide profile/model/voice/speed/filter/director-note defaults while explicit per-event overrides still win.
└ speech.tts.personas.<persona>.profilestringoptionalNamed TTS profile/effect bundle for this persona.
└ speech.tts.personas.<persona>.modelstringoptionalTTS model override for this persona.
└ speech.tts.personas.<persona>.voicestringoptionalTTS voice override for this persona.
└ speech.tts.personas.<persona>.speedf32optionalPlayback speed override for this persona.
└ speech.tts.personas.<persona>.director_notestringoptionalOptional director note for downstream TTS resolvers.
└ speech.tts.hrtfmapoptionalOptional disabled-by-default HRTF processing seam for decoded TTS audio. Requires operator-provided dataset path and license/provenance metadata before processing is considered available.
└ speech.tts.hrtf.enabledbooloptionalfalseEnable HRTF processing. Default false/no-op.
└ speech.tts.hrtf.dataset_pathstringoptionalPath or documented built-in token for impulse-response data.
└ speech.tts.hrtf.dataset_licensestringoptionalLicense/provenance note for the selected dataset.
└ speech.tts.hrtf.backendstringoptionalProcessing backend identifier such as identity_stereo for deterministic tests.
└ speech.sttmapoptionalSpeech-to-text defaults.
└ speech.stt.modelstringoptionalSTT model identifier.
└ speech.stt.languagestringoptionalDefault STT language hint (ISO 639-1, e.g. en).
└ speech.stt.command_templatestringoptionalShell command template for ad-hoc STT adapters. Uses env vars such as $AUDIO_FILE and optional $TRANSCRIPT_FILE.
└ speech.stt.inputstringoptionalNamed input source for STT capture (references speech.io.inputs key).
└ speech.stt.vadmapoptionalTop-level VAD config for generic STT chunking. Applied before any STT backend.
└ speech.stt.vad.enabledbooloptionaltrueWhether VAD pre-processing is enabled.
└ speech.stt.vad.enginestringoptionalsileroVAD engine identifier (silero, webrtc, etc.).
└ speech.stt.vad.thresholdf32optional0.5Speech probability threshold (0.0–1.0).
└ speech.stt.vad.min_speech_duration_msu32optional250Minimum speech duration in ms; shorter segments are discarded.
└ speech.stt.vad.min_silence_duration_msu32optional300Minimum silence duration in ms before a segment ends.
└ speech.stt.vad.speech_pad_msu32optional100Padding in ms added before/after each speech segment.
└ speech.stt.vad.modelstringoptionalsilero-v6.2.0VAD model name (e.g. silero-v6.2.0).
└ speech.stt.dictationmapoptionalRolling-capture window config for scratchpad dictation.
└ speech.stt.dictation.chunk_secsu32optional10Rolling capture window in seconds.
└ speech.stt.dictation.overlap_secsu32optional1Overlap between consecutive chunks in seconds.
└ speech.stt.smart_appendmapoptionalPer-chunk smart-append cleanup config.
└ speech.stt.smart_append.enabledbooloptionaltrueWhether smart-append is enabled.
└ speech.stt.smart_append.modelstringoptionalfastText model to use for incremental cleanup.
└ speech.stt.rewritemapoptionalFinal whole-note rewrite config.
└ speech.stt.rewrite.enabledbooloptionaltrueWhether final rewrite is enabled.
└ speech.stt.rewrite.modelstringoptionalfastText model to use for the final cleanup pass.
└ speech.stt.rewrite.modestringoptionalfullRewrite mode: full or append.
└ speech.stt.scribblemapoptionalLocal scribble-based Whisper transcription config.
└ speech.stt.scribble.modelstringoptionallarge-v3-turbo-q8_0Whisper model name.
└ speech.stt.scribble.accelerationstringoptionaldefaultGPU acceleration backend: default, metal, vulkan, cuda, coreml, or cpu.
└ speech.stt.scribble.languagestringoptionalOptional language hint.
└ speech.stt.scribble.vadmapoptionalVoice activity detection config for scribble.
└ speech.stt.scribble.vad.enabledbooloptionaltrueWhether VAD is enabled.
└ speech.stt.scribble.vad.modelstringoptionalsilero-v6.2.0Silero VAD model name.
└ speech.stt.agentmapoptionalPer-target STT config for agent panes.
└ speech.stt.agent.rewritingbooloptionalfalseWhether smart rewriting is enabled for this target.
└ speech.stt.agent.smart_appendbooloptionalfalseWhether smart append (per-chunk cleanup) is enabled.
└ speech.stt.agent.enter_after_completedbooloptionalfalseSend Enter keypress after transcription completes.
└ speech.stt.terminalmapoptionalPer-target STT config for terminal/shell panes.
└ speech.stt.terminal.rewritingbooloptionalfalseWhether smart rewriting is enabled for this target.
└ speech.stt.terminal.smart_appendbooloptionalfalseWhether smart append (per-chunk cleanup) is enabled.
└ speech.stt.terminal.enter_after_completedbooloptionalfalseSend Enter keypress after transcription completes.
└ speech.stt.scratchpadmapoptionalPer-target STT config for scratchpad notes.
└ speech.stt.scratchpad.rewritingbooloptionalfalseWhether smart rewriting is enabled for this target.
└ speech.stt.scratchpad.smart_appendbooloptionalfalseWhether smart append (per-chunk cleanup) is enabled.
└ speech.stt.scratchpad.enter_after_completedbooloptionalfalseSend Enter keypress after transcription completes.
└ speech.stt.text_fieldmapoptionalPer-target STT config for text fields / chat compose.
└ speech.stt.text_field.rewritingbooloptionalfalseWhether smart rewriting is enabled for this target.
└ speech.stt.text_field.smart_appendbooloptionalfalseWhether smart append (per-chunk cleanup) is enabled.
└ speech.stt.text_field.enter_after_completedbooloptionalfalseSend Enter keypress after transcription completes.
└ speech.stt.beadmapoptionalPer-target STT config for bead create form fields.
└ speech.stt.bead.rewritingbooloptionalfalseWhether smart rewriting is enabled for this target.
└ speech.stt.bead.smart_appendbooloptionalfalseWhether smart append (per-chunk cleanup) is enabled.
└ speech.stt.bead.enter_after_completedbooloptionalfalseSend Enter keypress after transcription completes.
└ speech.iomapoptionalAudio I/O routing.
└ speech.io.outputmapoptionalOutput audio routing.
└ speech.io.output.modestringoptionalRouting mode: local-default, local-device, pulse-default, or a named pulse output.
└ speech.io.output.devicestringoptionalExplicit device identifier (only for local-device mode).
└ speech.io.inputmapoptionalInput audio routing.
└ speech.io.input.modestringoptionalRouting mode: local-default, local-device, pulse-default, or a named pulse output.
└ speech.io.input.devicestringoptionalExplicit device identifier (only for local-device mode).
└ speech.io.outputslist[map]optionalNamed PulseAudio output endpoints for TUI cycle rotation.
└ speech.io.outputs.serverstringrequiredPulseAudio server address (host:port).
└ speech.io.outputs.namestringrequiredHuman-readable name used in TUI cycle and io.output.mode.
└ speech.io.outputs.devicestringoptionalOptional PulseAudio sink name; uses the server default when omitted.
└ speech.io.inputsmap[string, map]optionalNamed audio input sources.
└ speech.io.inputs.typestringrequiredInput source type: alsa, pulse, ssh_pulse, or device_mic.
└ speech.io.inputs.devicestringoptionaldefaultAudio input device/source name.
└ speech.io.inputs.serverstringoptionalPulseAudio server address for pulse inputs.
└ speech.io.inputs.nodestringoptionalTarget node name for ssh_pulse inputs.
└ speech.io.inputs.schemestringoptionalDevice URI scheme for device_mic inputs: android, iphone, or watchos.
└ speech.io.inputs.hoststringoptionalDevice host/IP reachable from the daemon for device_mic inputs.
└ speech.io.inputs.portu16optionalDevice in-app HTTP server port serving /mic for device_mic inputs.
└ speech.io.inputs.tokenstringoptionalBearer token for the device_mic /mic endpoint. May be supplied here or resolved from a daemon-known device token at capture time.
└ speech.read_messages_aloudbooloptionalfalseAuto read-aloud incoming messages on startup.
└ speech.agent_audiomap[agent_id, agent_audio_override]optionalPer-agent audio overrides (mute, voice, voice_filter, speed). Independent from daemon-side mute. See.
└ speech.audiomapoptionalCluster-wide and dimension-scoped audio mute policy: global_mute, default_agent_mute, and by_project/by_node/by_surface/by_profile/by_agent_role/by_agent_name. See and.