2026-09-25 07:03:10 +02:00
2026-09-25 06:47:14 +02:00
2026-09-25 06:47:14 +02:00
2026-09-25 06:47:14 +02:00
2026-09-25 06:47:14 +02:00
2026-09-25 06:47:14 +02:00

Thorsten Voice Assistant

Modularer, lokaler Sprachassistent auf Basis von Piper TTS + llama.cpp.

Architektur

input_helper.py
     │
     │  data/llm_input.json
     ▼
llm_module.py  (Qwen2.5-0.5B via llama-cpp-python)
     │
     │  data/tts_input.json
     ▼
tts_module.py  (Thorsten Emotional Voice via Piper)
     │
     ▼
data/output.wav

JSON-Formate

llm_input.json (Helper → LLM):

{
  "request": "Was ist die Hauptstadt von Frankreich?",
  "type": "query",
  "emotion": "neutral",
  "autoplay": true,
  "history": []
}

tts_input.json (LLM → TTS):

{
  "text": "Die Hauptstadt von Frankreich ist Paris.",
  "emotion": "neutral",
  "speaker_id": 4,
  "output_file": "data/output.wav",
  "autoplay": true
}

Verfügbare Emotionen

Name Speaker ID
amused 0
angry 1
disgusted 2
drunk 3
neutral 4
sleepy 5
surprised 6
whisper 7

Einrichtung

# 1. Virtual Environment aktivieren
source ~/.venv/bin/activate

# 2. Modell herunterladen (einmalig, ~400 MB)
python download_model.py

Verwendung

Interaktiver Modus (Entwicklung)

source ~/.venv/bin/activate
python input_helper.py

Terminalbefehle im interaktiven Modus:

  • :emotion drunk – Emotion wechseln
  • :history – Gesprächsverlauf anzeigen
  • :clear – Verlauf löschen
  • exit – Beenden

Einmaliger Aufruf

python input_helper.py "Was ist das Wetter heute?"
python input_helper.py "Guten Morgen" --emotion amused
python input_helper.py "Leise Nachricht" --emotion whisper --no-play

Module direkt aufrufen

# Nur LLM (mit JSON-Datei)
python llm_module.py data/llm_input.json

# Nur TTS (mit JSON-Datei)
python tts_module.py data/tts_input.json

# TTS mit Pipe
echo '{"text":"Hallo Welt","emotion":"neutral"}' | python tts_module.py

Dateien

Datei Beschreibung
input_helper.py Terminal-Eingabe → JSON → LLM → TTS
llm_module.py LLM-Verarbeitung mit Qwen GGUF
tts_module.py Text-to-Speech mit Thorsten Emotional
download_model.py Lädt Qwen-Modell herunter
thorsten.py (Alt) Ursprüngliches Test-Script
models/ GGUF-Modelle
data/ JSON-Austausch-Dateien & Audio-Output

Erweiterung (zukünftige Module)

Das System ist modular aufgebaut. Weitere Module können einfach eingeklinkt werden:

STT-Modul (Mikrofon → Text)
     │
     ▼
input_helper.py / eigener JSON-Producer
     │
     ▼
Router-Modul (query vs. command)
     ├── llm_module.py  (für Antworten)
     └── command_module.py  (für Smart-Home etc.)
                              │
                              ▼
                         tts_module.py
S
Description
Text to spech mit Thorsten
Readme 68 MiB
Languages
Python 100%