- Ein System, mit dem sich über das Browser-Mikrofon in Echtzeit natürliche Sprachgespräche mit einer AI führen lassen
- Über den Ablauf STT → LLM → TTS wird die Sprache des Nutzers in Text umgewandelt, die AI-Antwort anschließend wieder in Sprache konvertiert und abgespielt
- Zu den Kernkomponenten gehören ein FastAPI-Server, WebSocket-Streaming, Pod-basierte Sprachverarbeitungsmodule sowie verschiedene LLM-Backends
- Es wird eine Docker-basierte Deployment-Umgebung bereitgestellt; mit GPU sind noch geringere Latenzen und bessere Leistung zu erwarten
- Eine stark anpassbare Umgebung mit fortgeschrittenen Konfigurationsmöglichkeiten wie Erkennung von Nutzerunterbrechungen, Modellwechsel und Stimmauswahl
Echtzeit-AI-Sprachchat
- Dieses Projekt ist als Client-Server-Architektur für bidirektionale Sprachgespräche in Echtzeit konzipiert
- Nutzer sprechen im Browser, und die AI gibt die Antwort als Sprache zurück
- Unterbrechungsverarbeitung, Anzeige teilweiser Textantworten und die Auswahl verschiedener TTS-Stimmen werden unterstützt
Wichtiger Ablauf
- Spracheingabe: Erfassung der Sprache des Nutzers im Browser
- Streaming-Übertragung: Versand von Audio-Chunks per WebSocket an das Python-Backend
- Spracherkennung:
RealtimeSTT wandelt Sprache in Text um
- LLM-Verarbeitung: Übergabe des Textes an das LLM zur Antwortgenerierung
- Sprachsynthese:
RealtimeTTS wandelt den Antworttext in Sprache um
- Wiedergabe der Antwort: Das erzeugte Audio wird zurück an den Browser gestreamt
- Unterbrechungserkennung: Dazwischenreden des Nutzers wird automatisch erkannt und verarbeitet
Hauptfunktionen
- Sprachgespräche in Echtzeit und Vorschau auf Teiltranskripte/Teilantworten
- Audio-Chunk-basiertes Streaming für geringe Latenz
- Unterstützung für statische/dynamische Stille-Erkennung (turn detection)
- Verschiedene LLM-Backends: standardmäßig Ollama, optional OpenAI
- Unterstützung mehrerer TTS-Engines: Kokoro, Coqui, Orpheus
- Web-Interface: Vanilla-JS-UI auf Basis der Web Audio API
- Deployment auf Basis von Docker Compose
Technologie-Stack
- Backend: Python 3.x, FastAPI
- Frontend: HTML, CSS, JavaScript (Web Audio API)
- Kommunikation: WebSockets
- Containerisierung: Docker, Docker Compose
- AI/ML-Bibliotheken:
RealtimeSTT, RealtimeTTS, transformers, torch, torchaudio
ollama, openai
- Audioverarbeitung:
numpy, scipy
Systemanforderungen und Empfehlungen
- Betriebssystem: Docker unter Linux empfohlen (vorteilhaft für GPU-Integration)
- Python 3.9+, NVIDIA-GPU mit CUDA 12.1 oder höher empfohlen
- Bei Verwendung von Docker ist das NVIDIA Container Toolkit erforderlich
- Ollama oder ein OpenAI API Key müssen bei Bedarf konfiguriert werden
Installation
Option A: Installation mit Docker (empfohlen)
- Repository klonen und
docker compose build ausführen
- Mit
docker compose up -d App und Ollama starten
- Ollama-Modell separat herunterladen (z. B.
docker compose exec ollama ollama pull ...)
- Dienste beenden:
docker compose down
- Neustart:
docker compose up -d
Option B: Manuelle Installation
- Python-venv einrichten und Abhängigkeiten installieren
- Passende PyTorch-Version für die CUDA-Version manuell installieren
server.py ausführen, um den FastAPI-Server zu starten
Ausführung
- Im Browser
http://localhost:8000 aufrufen
- Mikrofonberechtigung erlauben und danach auf "Start" klicken
- Mit "Stop" beenden, mit "Reset" die Unterhaltung zurücksetzen
Hinweise zur Konfigurationsänderung
- TTS-Engine/Stimme ändern: in
server.py und audio_module.py anpassen
- LLM-Modell/Backend ändern: in
server.py und llm_module.py konfigurieren
- STT-Modell/Stille-Schwellenwert ändern:
transcribe.py, turndetect.py
- SSL-Konfiguration möglich: In
server.py HTTPS-Nutzung und Zertifikate festlegen
Lizenz
- Veröffentlicht unter der MIT-Lizenz
- Für externe Engines wie Coqui gelten separate Lizenzen
2 Kommentare
Das Demo-Video des Originals ist beeindruckend.
Hacker-News-Kommentare
Der Grund für die Entwicklung von RealtimeVoiceChat war, dass die Latenz bei den meisten Sprach-KI-Interaktionen unbefriedigend war. Dieses System ist ein Open-Source-System für Echtzeit-Sprachdialoge lokal auf dem Gerät
Als Nutzer solcher Tools: Es ist zwar schnell, erlaubt aber keine Pausen, wie sie beim natürlichen Sprechen vorkommen
Sehr cool! Die Unterbrechungsfunktion war ein "Wow"-Moment (nichts Neues, aber es so gut in Open Source umgesetzt zu sehen, ist beeindruckend)
Ich habe vor etwa einem Jahr zu diesem Thema recherchiert. Dabei habe ich einige interessante Dinge gelernt
Großartig. Beim Blick in den Source-Code fand ich interessant, dass der Autor statt Silero VAD eine benutzerdefinierte Strategie zur Turn-Erkennung implementiert hat. Ich würde gern wissen, warum das so gemacht wurde und welche Vorteile beobachtet wurden
Ich habe zunehmend das Gefühl, dass LLMs auf kürzere Antworten abgestimmt werden sollten. Man gibt einen kurzen Satz ein und bekommt einen langen Absatz Text zurück
Ich bin überrascht, dass das noch niemand erwähnt hat. Es interagiert menschenähnlich und unterbricht mich in vielen Situationen, wenn genug Kontext vorhanden ist. Die Latenz ist sehr niedrig
Ziemlich gut. Es wäre deutlich besser, wenn es wie SOTA-Sprache klingen würde
Beeindruckend! Ich denke, das ist die beste Sprachsynthesequalität unter den derzeit verfügbaren Open-Source-Lösungen
Ich habe an etwas Ähnlichem gearbeitet und das hier entdeckt. Tolle Arbeit. Die Demo gefällt mir