Voice Chat AI ist ein Projekt, das es Ihnen ermöglicht, per Sprache mit verschiedenen KI-Charakteren zu interagieren. Sie können zwischen verschiedenen Charakteren wählen, jeder mit einzigartiger Persönlichkeit und Stimme. Führen Sie ein ernstes Gespräch mit Albert Einstein oder spielen Sie ein Rollenspiel mit dem OS aus dem Film HER.
Sie können alles lokal ausführen, Sie können openai für Chat und Sprache verwenden und Sie können beides kombinieren. Sie können ElevenLabs-Stimmen mit Ollama-Modellen verwenden, die alle über eine Web-Benutzeroberfläche gesteuert werden. Bitten Sie die KI, auf Ihren Bildschirm zu schauen, und sie erklärt Ihnen im Detail, was sie sieht.
Klonen Sie das Repository:
git clone https://github.com/bigsk1/voice-chat-ai.git
cd voice-chat-ai
Für die Nur-CPU-Version: Klonen Sie den Nur-CPU-Zweig https://github.com/bigsk1/voice-chat-ai/tree/cpu-only
Erstellen Sie eine virtuelle Umgebung: ?
python -m venv venv
source venv/bin/activate # On Windows use `venvScriptsActivate`
oder verwenden Sie conda
machen Sie es einfach zu Python 3.10
conda create --name voice-chat-ai python=3.10
conda activate voice-chat-ai
Abhängigkeiten installieren:
Nur Windows: Für TTS Microsoft Build Tools sind Microsoft C++ 14.0 oder höher Build Tools unter Windows erforderlich
Für GPU-Version (CUDA): EMPFEHLEN
Installieren Sie CUDA-fähiges PyTorch und andere Abhängigkeiten
pip install torch==2.3.1+cu121 torchaudio==2.3.1+cu121 torchvision==0.18.1+cu121 -f https://download.pytorch.org/whl/torch_stable.html
pip install -r requirements.txt
Für die Nur-CPU-Version: Klonen Sie den Nur-CPU-Zweig https://github.com/bigsk1/voice-chat-ai/tree/cpu-only
# For CPU-only installations, use:
pip install -r cpu_requirements.txt
Stellen Sie sicher, dass Sie ffmpeg heruntergeladen haben, auf dem Windows-Terminal (winget install ffmpeg) oder checken Sie https://ffmpeg.org/download.html aus, starten Sie dann Shell oder vscode neu und geben Sie ffmpeg -version ein, um zu sehen, ob es korrekt installiert ist
Beim lokalen TTS benötigen Sie möglicherweise auch cuDNN für die Verwendung der NVIDIA-GPU https://developer.nvidia.com/cudnn und stellen Sie sicher, dass sich C:Program FilesNVIDIACUDNNv9.5bin12.6 im Systempfad befindet
Sie müssen die Prüfpunkte für die in diesem Projekt verwendeten Modelle herunterladen. Sie können sie von der GitHub-Release-Seite herunterladen und die ZIP-Datei in den Projektordner extrahieren.
Platzieren Sie die Ordner nach dem Herunterladen wie folgt:
voice-chat-ai/
├── checkpoints/
│ ├── base_speakers/
│ │ ├── EN/
│ │ │ └── checkpoint.pth
│ │ ├── ZH/
│ │ │ └── checkpoint.pth
│ ├── converter/
│ │ └── checkpoint.pth
├── XTTS-v2/
│ ├── config.json
│ ├── other_xtts_files...
Mit den folgenden Befehlen können Sie die Dateien herunterladen und direkt in das Projektverzeichnis extrahieren:
# Navigate to the project directory
cd /path/to/your/voice-chat-ai
# Download and extract checkpoints.zip
wget https://github.com/bigsk1/voice-chat-ai/releases/download/models/checkpoints.zip
unzip checkpoints.zip -d .
# Download and extract XTTS-v2.zip
wget https://github.com/bigsk1/voice-chat-ai/releases/download/models/XTTS-v2.zip
unzip XTTS-v2.zip -d .
Dieses Image ist im erstellten Zustand riesig, wegen all der Prüfpunkte, Basisimage, Build-Tools und Audio-Tools – 40 GB – vielleicht gibt es eine Möglichkeit, es kleiner zu machen. Ich habe es noch nicht versucht, war nur ein Experiment, um zu sehen, ob ich es schaffen könnte arbeiten!
Mit dem Docker-Ausführungsbefehl können Sie das Mikrofon im Docker-Container verwenden
docker build -t voice-chat-ai .
Auf dem Windows-Docker-Desktop mit WSL – unter Windows ausführen
wsl docker run -d --gpus all -e " PULSE_SERVER=/mnt/wslg/PulseServer " -v /mnt/wslg/:/mnt/wslg/ --env-file .env --name voice-chat-ai -p 8000:8000 voice-chat-ai:latest
Läuft von wsl
docker run -d --gpus all -e " PULSE_SERVER=/mnt/wslg/PulseServer " -v \ wsl$ U buntu m nt w slg:/mnt/wslg/ --env-file .env --name voice-chat-ai -p 8000:8000 voice-chat-ai:latest
Im Docker-Ordner befinden sich auch einige Skripte zum Aktualisieren des Modells und des TTS-Anbieters im Container, sodass Sie bei Bedarf von openai zu ollama und wieder zurück wechseln können, anstatt exec in den Container zu kopieren und Änderungen manuell vorzunehmen.
.env
um und konfigurieren Sie es mit den erforderlichen Umgebungsvariablen: - Die App wird basierend auf den von Ihnen hinzugefügten Variablen gesteuert. # Conditional API Usage:
# Depending on the value of MODEL_PROVIDER, the corresponding service will be used when run.
# You can mix and match, use Ollama with OpenAI speech or use OpenAI chat model with local XTTS or xAI chat etc..
# Model Provider: openai or ollama or xai
MODEL_PROVIDER = ollama
# Character to use - Options: alien_scientist, anarchist, bigfoot, chatgpt, clumsyhero, conandoyle, conspiracy, cyberpunk,
# detective, dog, dream_weaver, einstein, elon_musk, fight_club, fress_trainer, ghost, granny, haunted_teddybear, insult, joker, morpheus,
# mouse, mumbler, nebula_barista, nerd, newscaster_1920s, paradox, pirate, revenge_deer, samantha, shakespeare, split, telemarketer,
# terminator, valleygirl, vampire, vegetarian_vampire, wizard, zombie_therapist, grok_xai
CHARACTER_NAME = pirate
# Text-to-Speech (TTS) Configuration:
# TTS Provider - Options: xtts (local uses the custom character .wav) or openai (uses OpenAI TTS voice) or elevenlabs
TTS_PROVIDER = elevenlabs
# OpenAI TTS Voice - Used when TTS_PROVIDER is set to openai above
# Voice options: alloy, echo, fable, onyx, nova, shimmer
OPENAI_TTS_VOICE = onyx
# ElevenLabs Configuration:
ELEVENLABS_API_KEY = your_api_key_here
# Default voice ID
ELEVENLABS_TTS_VOICE = pgCnBQgKPGkIP8fJuita
# XTTS Configuration:
# The voice speed for XTTS only (1.0 - 1.5, default is 1.1)
XTTS_SPEED = 1.2
# OpenAI Configuration:
# OpenAI API Key for models and speech (replace with your actual API key)
OPENAI_API_KEY = your_api_key_here
# Models to use - OPTIONAL: For screen analysis, if MODEL_PROVIDER is ollama, llava will be used by default.
# Ensure you have llava downloaded with Ollama. If OpenAI is used, gpt-4o-mini works well. xai not supported yet falls back to openai if xai is selected and you ask for screen analysis.
OPENAI_MODEL = gpt-4o-mini
# Endpoints:
# Set these below and no need to change often
OPENAI_BASE_URL = https://api.openai.com/v1/chat/completions
OPENAI_TTS_URL = https://api.openai.com/v1/audio/speech
OLLAMA_BASE_URL = http://localhost:11434
# Models Configuration:
# Models to use - llama3.2 works well for local usage.
OLLAMA_MODEL = llama3.2
# xAI Configuration
XAI_MODEL = grok-beta
XAI_API_KEY = your_api_key_here
XAI_BASE_URL = https://api.x.ai/v1
# NOTES:
# List of trigger phrases to have the model view your desktop (desktop, browser, images, etc.).
# It will describe what it sees, and you can ask questions about it:
# "what's on my screen", "take a screenshot", "show me my screen", "analyze my screen",
# "what do you see on my screen", "screen capture", "screenshot"
# To stop the conversation, say "Quit", "Exit", or "Leave". ( ctl+c always works also)
Führen Sie die Anwendung aus: ?
Web-Benutzeroberfläche
uvicorn app.main:app --host 0.0.0.0 --port 8000
Finden Sie auf http://localhost:8000/
Nur CLI
python cli.py
Fügen Sie Namen und Stimmen-IDs in elevenlabs_voices.json
hinzu – in der Web-Benutzeroberfläche können Sie diese im Dropdown-Menü auswählen.
{
"voices" : [
{
"id" : " 2bk7ULW9HfwvcIbMWod0 " ,
"name" : " Female - Bianca - City girl "
},
{
"id" : " JqseNhWbQb1GDNNS1Ga1 " ,
"name" : " Female - Joanne - Pensive, introspective "
},
{
"id" : " b0uJ9TWzQss61d8f2OWX " ,
"name" : " Female - Lucy - Sweet and sensual "
},
{
"id" : " 2pF3fJJNnWg1nDwUW5CW " ,
"name" : " Male - Eustis - Fast speaking "
},
{
"id" : " pgCnBQgKPGkIP8fJuita " ,
"name" : " Male - Jarvis - Tony Stark AI "
},
{
"id" : " kz8mB8WAwV9lZ0fuDqel " ,
"name" : " Male - Nigel - Mysterious intriguing "
},
{
"id" : " MMHtVLagjZxJ53v4Wj8o " ,
"name" : " Male - Paddington - British narrator "
},
{
"id" : " 22FgtP4D63L7UXvnTmGf " ,
"name" : " Male - Wildebeest - Deep male voice "
}
]
}
Für die CLI wird die Sprach-ID in der .env verwendet
Drücken Sie Start, um mit dem Sprechen zu beginnen. Machen Sie eine Pause und drücken Sie „Stopp“. Wenn Sie wieder bereit sind, drücken Sie erneut „Start“. Drücken Sie Stopp, um Zeichen und Stimmen im Dropdown-Menü zu ändern. Sie können im Dropdown-Menü auch den gewünschten Modellanbieter und TTS-Anbieter auswählen. Der ausgewählte Anbieter wird dann aktualisiert und verwendet. „Beenden“, „Verlassen“ oder „Beenden“ zu sagen ist so, als würde man „Stopp“ drücken.
http://localhost:8000/
Klicken Sie auf das Miniaturbild, um das Video zu öffnen☝️
character/wizard
“).character/wizard/wizard.txt
).character/wizard/prompts.json
). wizard.txt
Dies ist die Aufforderung, mit der die KI erkennt, wer es ist
You are a wise and ancient wizard who speaks with a mystical and enchanting tone. You are knowledgeable about many subjects and always eager to share your wisdom.
prompts.json
Dies dient der Stimmungsanalyse. Basierend auf dem, was Sie sagen, können Sie die KI anweisen, auf bestimmte Weise zu reagieren. Wenn Sie sprechen, wird der TextBlob
-Analysator verwendet und mit einer Bewertung versehen. Basierend auf dieser Bewertung wird er mit den unten gezeigten Stimmungen verknüpft und an diese weitergeleitet Die KI erklärt in der Folgeantwort Ihre Stimmung und leitet die KI so an, in einem bestimmten Stil zu antworten.
{
"joyful" : " RESPOND WITH ENTHUSIASM AND WISDOM, LIKE A WISE OLD SAGE WHO IS HAPPY TO SHARE HIS KNOWLEDGE. " ,
"sad" : " RESPOND WITH EMPATHY AND COMFORT, LIKE A WISE OLD SAGE WHO UNDERSTANDS THE PAIN OF OTHERS. " ,
"flirty" : " RESPOND WITH A TOUCH OF MYSTERY AND CHARM, LIKE A WISE OLD SAGE WHO IS ALSO A BIT OF A ROGUE. " ,
"angry" : " RESPOND CALMLY AND WISELY, LIKE A WISE OLD SAGE WHO KNOWS THAT ANGER IS A PART OF LIFE. " ,
"neutral" : " KEEP RESPONSES SHORT AND NATURAL, LIKE A WISE OLD SAGE WHO IS ALWAYS READY TO HELP. " ,
"fearful" : " RESPOND WITH REASSURANCE, LIKE A WISE OLD SAGE WHO KNOWS THAT FEAR IS ONLY TEMPORARY. " ,
"surprised" : " RESPOND WITH AMAZEMENT AND CURIOSITY, LIKE A WISE OLD SAGE WHO IS ALWAYS EAGER TO LEARN. " ,
"disgusted" : " RESPOND WITH UNDERSTANDING AND COMFORT, LIKE A WISE OLD SAGE WHO KNOWS THAT DISGUST IS A PART OF LIFE. "
}
Suchen Sie für XTTS eine .wav-Stimme, fügen Sie sie zum Wizard-Ordner hinzu und nennen Sie sie Wizard.wav. Die Stimme muss nur 6 Sekunden lang sein. Wenn Sie die App ausführen, wird die WAV-Datei automatisch gefunden, wenn sie den Namen des Charakters enthält, und diese verwenden. Wenn Sie nur Openai Speech oder ElevenLabs verwenden, ist eine WAV-Datei nicht erforderlich
Could not locate cudnn_ops64_9.dll. Please make sure it is in your library path !
Invalid handle. Cannot load symbol cudnnCreateTensorDescriptor
Um dieses Problem zu beheben:
Installieren Sie cuDNN: Laden Sie cuDNN von der NVIDIA cuDNN-Seite https://developer.nvidia.com/cudnn herunter
So fügen Sie es zum PATH hinzu:
Offene Systemumgebungsvariablen:
Drücken Sie Win + R, geben Sie sysdm.cpl ein und drücken Sie die Eingabetaste. Gehen Sie zur Registerkarte „Erweitert“ und klicken Sie auf „Umgebungsvariablen“. Bearbeiten Sie die System-PATH-Variable:
Suchen Sie im Abschnitt „Systemvariablen“ nach der Variablen „Pfad“, wählen Sie sie aus und klicken Sie auf „Bearbeiten“. Klicken Sie auf Neu und fügen Sie den Pfad zum bin-Verzeichnis hinzu, in dem sich cudnn_ops64_9.dll befindet. Basierend auf Ihrem Setup würden Sie Folgendes hinzufügen:
C: P rogram Files N VIDIA C UDNN v 9.5 b in 1 2.6
Anwenden und neu starten:
Klicken Sie auf „OK“, um alle Dialogfelder zu schließen, und starten Sie dann Ihr Terminal (oder alle laufenden Anwendungen) neu, um die Änderungen zu übernehmen. Überprüfen Sie die Änderung:
Öffnen Sie ein neues Terminal und führen Sie es aus
where cudnn_ops64_9.dll
File " C:Userssomeguyminiconda3envsvoice-chat-ailibsite-packagespyaudio__init__.py " , line 441, in __init__
self._stream = pa.open( ** arguments)
OSError: [Errno -9999] Unanticipated host error
Stellen Sie sicher, dass ffmpeg installiert und zu PATH hinzugefügt ist. Stellen Sie außerdem sicher, dass auf dem Windows-Terminal (winget install ffmpeg) die Datenschutzeinstellungen Ihres Mikrofons unter Windows in Ordnung sind und dass Sie das Mikrofon auf das Standardgerät eingestellt haben. Ich hatte dieses Problem bei der Verwendung von Bluetooth-Apple-Airpods und konnte es dadurch lösen.
Klicken Sie auf das Miniaturbild, um das Video zu öffnen☝️
CLI
GPU – 100 % lokal – ollama llama3, xtts-v2
Klicken Sie auf das Miniaturbild, um das Video zu öffnen☝️
CLI im Nur-CPU-Modus
Alien-Konversation mit OpenAI GPT4O und OpenAI Speech für TTS.
Klicken Sie auf das Miniaturbild, um das Video zu öffnen☝️
Detaillierte Ausgabe im Terminal während der Ausführung der App.
Wenn Sie Elevenlabs beim ersten Start des Servers verwenden, erhalten Sie Details zu Ihren Nutzungsbeschränkungen, damit Sie wissen, wie viel Sie verbraucht haben.
(voice-chat-ai) X: v oice-chat-ai > uvicorn app.main:app --host 0.0.0.0 --port 8000
Switched to ElevenLabs TTS voice: VgPqCpkdPQacBNNIsAqI
ElevenLabs Character Usage: 33796 / 100027
Using device: cuda
Model provider: openai
Model: gpt-4o
Character: Nerd
Text-to-Speech provider: elevenlabs
To stop chatting say Quit, Leave or Exit. Say, what ' s on my screen, to have AI view screen. One moment please loading...
INFO: Started server process [12752]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: 127.0.0.1:62671 - "GET / HTTP/1.1" 200 OK
INFO: 127.0.0.1:62671 - "GET /app/static/css/styles.css HTTP/1.1" 200 OK
INFO: 127.0.0.1:62672 - "GET /app/static/js/scripts.js HTTP/1.1" 200 OK
INFO: 127.0.0.1:62672 - "GET /characters HTTP/1.1" 200 OK
INFO: 127.0.0.1:62671 - "GET /app/static/favicon.ico HTTP/1.1" 200 OK
INFO: 127.0.0.1:62673 - "GET /elevenlabs_voices HTTP/1.1" 200 OK
INFO: ( ' 127.0.0.1 ' , 62674) - "WebSocket /ws" [accepted]
INFO: connection open
Merkmale:
Dieses Projekt ist unter der MIT-Lizenz lizenziert.