# Meeting Assistant configuration — copy to config.yaml and edit. # (config.yaml is gitignored; it may hold machine-specific/private settings.) audio: sample_rate: 16000 chunk_duration: 2.0 vad_threshold: 0.5 # Transcription model (local dirs load fully offline — no Hugging Face access # at runtime). base.en is ~9x faster than medium.en on CPU (~0.3s vs ~2.9s per # clip) and is the main latency fix. Switch to models/whisper-medium.en for # more robustness to noise/accents (slower). whisper_model: models/whisper-base.en language: en # "push_to_talk" (hold the key, release to answer) or "continuous" (auto-listen). # Toggle at runtime with ctrl+shift+m. capture_mode: push_to_talk ptt_key: alt_r # push-to-talk key (Right Option). e.g. cmd_r, f8, ctrl_r source: both # "microphone", "system", or "both" mic_device: null # null = auto. Or a device index / name substring. system_device: null # null = auto-detect loopback. Or index / name. # Devices to try (in priority order) as the "system" source that hears OTHER # participants. A true loopback (BlackHole/Soundflower/VB-Cable) carries ALL # system audio — works for Google Meet, Zoom, Teams, anything. "teams audio" # is Microsoft Teams' own virtual device: zero-install but Teams-only, and it # may be silent outside screen-share; treat it as an experiment. loopback_keywords: ["blackhole", "soundflower", "vb-cable", "loopback", "teams audio"] # Which speakers trigger an answer (others still add transcript context). answer_sources: ["system", "microphone"] # Incremental transcription while the push-to-talk key is held. Off by default: # faster-whisper pads every call to a fixed 30s window, so on small/fast models # this barely helps and can drop words at chunk seams. Enable only with a # large/slow model where the per-call cost is worth amortizing during the hold. streaming_transcription: false # Bias Whisper toward your meeting's vocabulary (optional): # transcription_prompt: "A software engineering interview about Python and Flask." screen: capture_key: ctrl+shift+space # press, then drag a box over an on-screen question hotkeys: toggle_overlay: ctrl+shift+h meeting_summary: ctrl+shift+s toggle_listening: ctrl+shift+m ai: context_window: 2048 max_history: 10 model: Qwen2.5-VL-7B-Instruct-Q4_K_M.gguf mmproj: mmproj-Qwen2.5-VL-7B-Instruct-f16.gguf # required for screen reading answer_mode: auto_obvious # auto_obvious | auto_all | suggest_only user_name: you # Pin the active context window by file name (contexts/.yaml). If unset, # the first contexts/*.yaml with `active: true` is used. # active_context: python_flask_backend # Optional web search to ground factual answers in current information. # PRIVACY: when enabled, the question text is sent to DuckDuckGo — this # breaks the otherwise fully on-device guarantee. Off by default. web_search: enabled: false max_results: 3 timeout: 6.0 overlay: position: top-right font_size: 14