Configuration¶
Dictare uses a TOML configuration file at:
~/.config/dictare/config.toml
Edit it directly, use the web dashboard at http://localhost:8770/ui, or use the CLI:
dictare config edit # Open config file in your editor
dictare config list # Show all options and current values
Audio¶
[audio]
input_device = "" # Audio input device (empty = system default)
output_device = "" # Audio output device (empty = system default)
max_duration = 60 # Max recording duration in seconds
audio_feedback = true # Enable/disable audio cues
silence_ms = 850 # Silence threshold to stop recording (ms)
headphones_mode = false # TTS won't pause listening when true
[audio.advanced]
sample_rate = 16000 # Sample rate in Hz (Whisper requires 16000)
channels = 1 # Number of audio channels
device = "" # Audio device name (empty = system default)
pre_buffer_ms = 640 # Audio buffered before speech detection (ms)
min_speech_ms = 150 # Minimum speech duration to process (ms)
transcribing_sound_min_ms = 8000
Per-Event Sound Configuration¶
[audio.sounds.start]
enabled = true
path = "" # Custom sound file (empty = built-in)
volume = 0.3 # 0.0–1.0
focus_gated = false # Silent when terminal is focused
[audio.sounds.stop]
enabled = true
volume = 0.3
[audio.sounds.agent_announce]
enabled = true
volume = 0.3 # TTS announces agent name on switch
Speech-to-Text (STT)¶
[stt]
model = "large-v3-turbo" # Model name (see Speech Engines page)
language = "auto" # Language hint or "auto" for detection
translate = false # Translate speech to English
hw_accel = true # Hardware acceleration (CUDA/MLX)
[stt.advanced]
device = "auto" # auto, cpu, cuda, mlx
compute_type = "int8" # int8 (fastest), float16, float32 (most accurate)
beam_size = 5 # Higher = slower but more accurate
hotwords = "" # Comma-separated hotwords for better recognition
max_repetitions = 5 # Anti-hallucination: max consecutive repeats
Available models: large-v3-turbo (default, recommended), large-v3, parakeet-v3.
Text-to-Speech (TTS)¶
[tts]
engine = "say" # espeak, say (macOS), piper, kokoro, outetts
language = "en" # Voice accent
speed = 175 # Words per minute
voice = "" # Engine-specific speaker name
Hotkey¶
[hotkey]
key = "KEY_RIGHTMETA" # macOS: Right Cmd. Linux: KEY_SCROLLLOCK
device = "" # Keyboard device (empty = auto-detect)
mode_switch_modifier = "KEY_RIGHTALT" # Hold + hotkey to switch mode
Output¶
[output]
mode = "agents" # agents or keyboard
typing_delay_ms = 2 # Delay between keystrokes (keyboard mode)
auto_submit = false # Automatically submit after transcription
submit_keys = "enter" # Keyboard mode submit shortcut
newline_keys = "shift+enter" # Keyboard mode newline shortcut
Client¶
[client]
url = "http://127.0.0.1:8770/openvip"
clear_on_start = true # Clear terminal before launching the child process
claim_key = "ctrl+\\" # Key to claim this session as the active voice target
info_key = "ctrl+]" # Key to show agent info notification (empty = disabled)
Pipeline¶
[pipeline]
enabled = true
[pipeline.mute_filter]
enabled = true
confidence_threshold = 0.85
max_scan_words = 10
decay_rate = 0.95
[pipeline.mute_filter.mute_triggers]
"*" = [["ok|okay|mate|buddy", "mute|stop"]]
[pipeline.mute_filter.listen_triggers]
"*" = [["ok|okay|mate|buddy", "listen"]]
[pipeline.submit_filter]
enabled = true
confidence_threshold = 0.85
max_scan_words = 15
decay_rate = 0.95
[pipeline.submit_filter.triggers]
"*" = [["ok|okay", "send|submit"]]
[pipeline.agent_filter]
enabled = true
triggers = ["agent"]
match_threshold = 0.5
Agent Profiles¶
Define custom agent presets:
[agent_profiles]
default = "claude"
live_dangerously = false
[agent_profiles.claude]
command = ["claude", "--max-turns", "1000"]
continue_args = ["-c"]
live_dangerously_args = ["--dangerously-skip-permissions"]
description = "Claude"
[agent_profiles.codex]
command = ["codex"]
continue_args = ["resume", "--last"]
live_dangerously_args = ["--dangerously-bypass-approvals-and-sandbox"]
description = "OpenAI Codex CLI"
[agent_profiles.aider]
command = ["aider"]
description = "Aider"
Optional Pi profile:
[agent_profiles.pi]
command = ["pi"]
continue_args = ["-c"]
description = "Pi"
See Agents for more on custom agent configuration.
Redaction¶
Replace sensitive terms in terminal output (useful for demos):
redact = [
["my-secret-project", "my-project"],
["[email protected]", "[email protected]"],
]
Stats¶
[stats]
typing_wpm = 40 # WPM baseline for time-saved calculations
Applying Changes¶
Most config changes take effect after restarting the service:
dictare service restart
The web dashboard applies changes and restarts automatically.