feat: add Groq STT support and fix voice mode keybinding

- Add multi-provider STT support (OpenAI > Groq fallback) in transcription_tools
- Auto-correct model selection when provider doesn't support the configured model
- Change voice record key from Ctrl+Space to Ctrl+R (macOS compatibility)
- Fix duplicate transcript echo in voice pipeline
- Add GROQ_API_KEY to .env.example
This commit is contained in:
0xbyt4 2026-03-03 17:17:40 +03:00
parent 1a6fbef8a9
commit ec32e9a540
5 changed files with 173 additions and 225 deletions

View file

@ -283,7 +283,9 @@ def check_voice_requirements() -> Dict[str, Any]:
Dict with ``available``, ``audio_available``, ``stt_key_set``,
``missing_packages``, and ``details``.
"""
stt_key_set = bool(os.getenv("VOICE_TOOLS_OPENAI_KEY"))
openai_key = bool(os.getenv("VOICE_TOOLS_OPENAI_KEY"))
groq_key = bool(os.getenv("GROQ_API_KEY"))
stt_key_set = openai_key or groq_key
missing: List[str] = []
if not _HAS_AUDIO:
@ -297,10 +299,12 @@ def check_voice_requirements() -> Dict[str, Any]:
else:
details_parts.append("Audio capture: MISSING (pip install sounddevice numpy)")
if stt_key_set:
details_parts.append("STT API key: OK")
if openai_key:
details_parts.append("STT API key: OK (OpenAI)")
elif groq_key:
details_parts.append("STT API key: OK (Groq)")
else:
details_parts.append("STT API key: MISSING (set VOICE_TOOLS_OPENAI_KEY)")
details_parts.append("STT API key: MISSING (set GROQ_API_KEY or VOICE_TOOLS_OPENAI_KEY)")
return {
"available": available,