| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- [audio]
- backend = "parec"
- device = "VirtualMicSink.monitor"
- sample_rate = 16000
- channels = 1
- frame_ms = 30
- gain = 1.0
- [vad]
- aggressiveness = 2
- pre_roll_ms = 400
- speech_start_ms = 90
- silence_ms = 700
- min_utterance_ms = 300
- max_utterance_s = 30.0
- chunk_pause_ms = 350
- soft_max_s = 10.0
- rms_floor = 0.008
- trailing_trim_ms = 200
- [whisper]
- backend = "faster-whisper"
- model = "small"
- device = "cpu"
- compute_type = "int8"
- language = "auto"
- beam_size = 1
- vad_filter = false
- cpu_threads = 0
- no_speech_prob_max = 0.6
- avg_logprob_min = -1.0
- language_strategy = "static"
- sticky_redetect_logprob = -0.8
- [sink]
- sink_name = "VirtualMicSink"
- remap_source_name = "VirtualMic"
- loopback_latency_msec = 1
- monitor_output = false
- [output]
- stdout = true
- jsonl = false
- session_dir = "transcripts"
- save_audio = false
- session_gap_min = 5.0
- [daemon]
- queue_size = 50
- backlog_warn_at = 5
- [events]
- socket = ""
- heartbeat_ms = 1000
- ring_size = 200
- [assistant]
- control_socket = ""
- stall_timeout_ms = 3000
- worker_stall_ms = 15000
- command_arm_timeout_s = 10.0
- chat_idle_timeout_s = 300.0
- turn_gap_s = 1.5
- require_viewer = true
- chat_exit_phrases = ["end conversation", "that's all", "stop listening"]
- [audit]
- enabled = true
- dir = "troubleshoot/audit"
- [llm]
- enabled = true
- endpoint = "http://localhost:9931/v1/chat/completions"
- temperature = 0.7
- max_tokens = 1024
- timeout_s = 120.0
- cache_prompt = true
- chat_slot_id = ""
- command_slot_id = ""
- max_context_tokens = 131072
- compaction_safety_margin = 256
- compaction_enabled = true
- compaction_trigger_ratio = 0.8
- compaction_keep_turns = 6
- compaction_max_tokens = 512
- compaction_timeout_s = 30.0
- compaction_input_tokens = 8192
- compaction_system_prompt = "You compress a conversation. Preserve names, numbers, decisions, user preferences, and unresolved questions. Omit pleasantries. Output only the summary."
- brief_compaction_system_prompt = "You compress a triage briefing conversation. Preserve every opportunity, blocker, owner, responsibility, decision, deadline, and open question; drop pleasantries. Output only the summary."
- inference_queue_size = 8
- trim_block_turns = 4
- max_tool_iterations = 3
- system_prompt_chat = "You are a concise voice assistant. Reply in 1-3 sentences."
- system_prompt_command = "You translate a spoken request into a single tool call when one applies."
- triage_system_prompt = "You maintain a living brief of a business conversation. Given the current brief (your previous reply, if any) and a new transcript segment, return the UPDATED brief as plain text only, with no markdown fences and no JSON. Open with a Summary section: a rolling overview of the conversation so far, one to a few sentences for a short session and growing to a short paragraph or two as the session extends. Preserve prior content unless the new segment contradicts it; merge duplicates; prune stale items; keep owners, responsibilities, and deadlines explicit. Use short sections: Summary, Opportunities, Blockers/Risks, Responsibilities, Decisions, Action Items, Deadlines, Open Questions. Output the brief text directly; never emit tool calls, function-call syntax, or special wrapper tokens."
- [triage]
- enabled = false
- questions_file = "questions.json"
- window = 500
- state_char_budget = 3000
- periodic_s = 30.0
- predict_max_tokens = 1024
- confidence_field = "answer_confidence"
- escalate_threshold = 0.6
- choice_min_confidence = 0.85
- extract_enabled = true
- extract_max_tokens = 3072
- extract_timeout_s = 30.0
- brief_slot_id = ""
- brief_gate_enabled = true
- brief_gate_threshold = 0.5
- brief_max_chars = 4000
- brief_pending_char_budget = 3000
- ledger_max_facts = 200
- fact_max_chars = 240
- device = ""
- preload = ["multilingual"]
- default_checkpoint = "multilingual"
- dump_io = false
- [speaker]
- enabled = false
- model_path = ""
- provider = "cpu"
- threshold_id = 0.60
- threshold_new = 0.45
- min_enroll_s = 2.0
- rms_floor = 0.0
- margin = 0.04
- mint_cooldown_s = 60.0
- confirm_s = 12.0
- max_prototypes = 8
- provisional_ttl_h = 24.0
- store_dir = "speakers"
- join_timeout_s = 2.0
- [brief]
- write = false
- [debug]
- enabled = false
- dir = "troubleshoot/debug"
- heartbeat = true
- max_bytes_per_day = 50000000
|