Files
InterviewAI/config.example.yaml
spiro-alvin-nyasimi 08118cc650 Add context windows, web search, streamed answers, overlay move/resize; overhaul docs
- Context windows (contexts/*.yaml) scope answers to a defined domain
- Optional DuckDuckGo web search behind ai.web_search.enabled (default off)
- Stream partial answers into the overlay at first-token time
- Default Whisper to local base.en (~9x faster); offline model loading
- Priority-ordered loopback detection (BlackHole > Teams device)
- Overlay: drag interior to move, edges to resize
- Stop tracking model binaries (models/ is gitignored)
- README/CLAUDE.md overhaul + tracked config.example.yaml

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 11:22:34 +03:00

66 lines
3.0 KiB
YAML

# 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/<name>.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