Commit Graph

2 Commits

Author SHA1 Message Date
Hitonabi 8881d65c8d Fix: audio_output Hang + Stimme auf Seraphina
- speak() hing weil pygame.time.wait() die asyncio Event-Loop blockierte.
  Fix: time.sleep(0.05) statt pygame.time.wait() im Playback-Loop.
- asyncio.new_event_loop() statt asyncio.run() — thread-sicher, kein
  "event loop already running" in Worker-Threads.
- _speak_lock verhindert parallele TTS-Aufrufe.
- Stimme: de-DE-SeraphinaMultilingualNeural als Default (modern, weiblich,
  multilingual neural). Dropdown in Settings mit allen DE/EN Optionen.
- speak()-Signatur: voice + rate als Parameter (statt config-Import).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 22:25:53 +02:00
Hitonabi 037c4b11df Feat: Hermes Voice Client — CustomTkinter GUI + Push-to-Talk + .exe Build
- main.py: CustomTkinter GUI (400x520) mit Status-Indikator, Conversation-Log,
  Screenshot-Toggle und Settings-Dialog. Thread-sicherer UI-Queue für Hotkey-Callbacks.
- hotkey_listener.py: pynput globaler Hotkey (press/release) + KeyCapturer für
  interaktive Hotkey-Konfiguration im Settings-Dialog.
- config_manager.py: JSON-Settings in ~/.hermes-voice/settings.json mit DEFAULTS,
  load() merged gespeicherte mit Default-Werten.
- audio_input.py: Vereinfacht auf start_recording/stop_recording/transcribe (kein
  Wake-Word-Loop mehr, direkt hotkey-gesteuert).
- ai_client.py: Settings-dict statt config.py-Imports, MC2-URL/Modelle konfigurierbar.
- requirements.txt: customtkinter>=5.2.0 + pynput>=1.7.6 hinzugefügt, pystray entfernt.
- build.bat: PyInstaller --onefile --windowed → dist/HermesVoice.exe.
- setup.bat: Veraltete Wake-Word-Hinweise entfernt, GUI-Check angepasst.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 22:23:36 +02:00