config.example.toml 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. [audio]
  2. backend = "parec"
  3. device = "VirtualMicSink.monitor"
  4. sample_rate = 16000
  5. channels = 1
  6. frame_ms = 30
  7. gain = 1.0
  8. [vad]
  9. aggressiveness = 2
  10. pre_roll_ms = 400
  11. speech_start_ms = 90
  12. silence_ms = 700
  13. min_utterance_ms = 300
  14. max_utterance_s = 30.0
  15. chunk_pause_ms = 350
  16. soft_max_s = 10.0
  17. rms_floor = 0.008
  18. trailing_trim_ms = 200
  19. [whisper]
  20. backend = "faster-whisper"
  21. model = "small"
  22. device = "cpu"
  23. compute_type = "int8"
  24. language = "auto"
  25. beam_size = 1
  26. vad_filter = false
  27. cpu_threads = 0
  28. no_speech_prob_max = 0.6
  29. avg_logprob_min = -1.0
  30. language_strategy = "static"
  31. sticky_redetect_logprob = -0.8
  32. [sink]
  33. sink_name = "VirtualMicSink"
  34. remap_source_name = "VirtualMic"
  35. loopback_latency_msec = 1
  36. monitor_output = false
  37. [output]
  38. stdout = true
  39. jsonl = false
  40. jsonl_dir = "transcripts"
  41. save_audio = false
  42. audio_dir = "audio"
  43. [daemon]
  44. queue_size = 50
  45. backlog_warn_at = 5
  46. [events]
  47. socket = ""
  48. heartbeat_ms = 1000
  49. ring_size = 200
  50. [assistant]
  51. control_socket = ""
  52. stall_timeout_ms = 3000
  53. worker_stall_ms = 15000
  54. command_arm_timeout_s = 10.0
  55. chat_idle_timeout_s = 300.0
  56. turn_gap_s = 1.5
  57. require_viewer = true
  58. chat_exit_phrases = ["end conversation", "that's all", "stop listening"]
  59. [audit]
  60. enabled = true
  61. dir = "audit"
  62. [llm]
  63. enabled = true
  64. endpoint = "http://localhost:9931/v1/chat/completions"
  65. temperature = 0.7
  66. max_tokens = 1024
  67. timeout_s = 120.0
  68. cache_prompt = true
  69. max_context_tokens = 131072
  70. compaction_safety_margin = 256
  71. compaction_enabled = true
  72. compaction_trigger_ratio = 0.8
  73. compaction_keep_turns = 6
  74. compaction_max_tokens = 512
  75. compaction_timeout_s = 30.0
  76. compaction_input_tokens = 8192
  77. compaction_system_prompt = "You compress a conversation. Preserve names, numbers, decisions, user preferences, and unresolved questions. Omit pleasantries. Output only the summary."
  78. inference_queue_size = 8
  79. trim_block_turns = 4
  80. max_tool_iterations = 3
  81. system_prompt_chat = "You are a concise voice assistant. Reply in 1-3 sentences."
  82. system_prompt_command = "You translate a spoken request into a single tool call when one applies."
  83. triage_system_prompt = "You extract structured signals from a spoken conversation. Output only a JSON object with exactly these keys: {\"summary\": str, \"opportunities\": [str], \"doubts\": [str], \"action_items\": [{\"what\": str, \"why\": str}], \"risks\": [str]}. Output no prose and no markdown fences. Use empty lists when a category is empty."
  84. [triage]
  85. enabled = false
  86. questions_file = "questions.json"
  87. window = 500
  88. state_char_budget = 3000
  89. predict_max_tokens = 1024
  90. confidence_field = "answer_confidence"
  91. escalate_threshold = 0.6
  92. choice_min_confidence = 0.85
  93. extract_enabled = true
  94. extract_max_tokens = 512
  95. extract_timeout_s = 30.0
  96. device = ""
  97. preload = ["multilingual"]
  98. default_checkpoint = "multilingual"