Deutsche Text-to-Speech Sprachausgabe. Piper TTS wandelt Text in natürlich klingende Sprache um – lokal auf deinem Server, ohne Cloud-Dienste. Ideal für Telegram Sprachnachrichten, Ansagen und automatische Benachrichtigungen.
Warum Piper TTS?
- 🔒 100% Lokal – Keine Daten in die Cloud, volle Privatsphäre
- 🇩🇪 Deutsche Stimme – Thorsten (männlich, natürlich klingend)
- ⚡ Schnell – Keine Netzwerk-Latenz, sofortige Ausgabe
- 📱 Telegram-Ready – WAV-Dateien für Voice-Messages
- 💰 Kostenlos – Open Source, keine API-Kosten
🎧 Hört mal – Demo
So klingt Piper TTS mit der Thorsten-Stimme:
„Hallo, ich bin die Stimme von Piper TTS für OpenClaw. Wenn ihr mich so haben wollt, dann gebt eurem OpenClaw den Link dieses Artikels.“
Voraussetzungen
Piper TTS muss systemweit installiert sein (nicht nur in Python-Environment):
# Piper TTS installieren pip install piper-tts # Deutsche Stimme herunterladen mkdir -p /usr/local/share/piper-voices/ cd /usr/local/share/piper-voices/ # Thorsten (männlich, medium) wget https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/medium/de_DE-thorsten-medium.onnx wget https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/de/de_DE/thorsten/medium/de_DE-thorsten-medium.onnx.json # Optional: Aplay für Audio-Ausgabe apt-get install alsa-utils
Installation
Schritt 1: Verzeichnis anlegen
mkdir -p ~/.openclaw/workspace/scripts mkdir -p ~/.openclaw/workspace/skills/piper-tts
Schritt 2: piper_tts.py erstellen
Erstelle die Datei ~/.openclaw/workspace/scripts/piper_tts.py:
#!/usr/bin/env python3
"""
Piper TTS - Lokale Text-to-Speech Sprachausgabe
Erzeugt deutsche Sprachnachrichten für Telegram und andere Anwendungen.
"""
import argparse
import subprocess
import tempfile
import os
from pathlib import Path
# Standard-Pfade (angepasst an dein System)
PIPER_BIN = "/usr/local/bin/piper"
VOICE_MODEL = "/usr/local/share/piper-voices/de_DE-thorsten-medium.onnx"
VOICE_CONFIG = "/usr/local/share/piper-voices/de_DE-thorsten-medium.onnx.json"
def generate_speech(text, output_path=None):
"""
Generiert Sprachausgabe aus Text.
Args:
text: Der vorzulesende Text (Deutsch)
output_path: Zielpfad für WAV-Datei (optional)
Returns:
Pfad zur generierten WAV-Datei
"""
if not output_path:
# Temporäre Datei erstellen
output_path = f"/tmp/openclaw/tts/piper_{hash(text) % 10000}.wav"
# Verzeichnis sicherstellen
Path(output_path).parent.mkdir(parents=True, exist_ok=True)
# Piper aufrufen
cmd = [
PIPER_BIN,
"--model", VOICE_MODEL,
"--output_file", output_path
]
try:
# Text an piper übergeben
process = subprocess.Popen(
cmd,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
stdout, stderr = process.communicate(input=text.encode('utf-8'))
if process.returncode == 0:
return output_path
else:
print(f"Piper Fehler: {stderr.decode()}")
return None
except Exception as e:
print(f"Fehler bei Sprachgenerierung: {e}")
return None
def play_audio(file_path):
"""Spielt die Audio-Datei ab (optional)."""
try:
subprocess.run(["aplay", file_path], check=True, capture_output=True)
return True
except:
return False
def main():
parser = argparse.ArgumentParser(description='Piper TTS - Deutsche Sprachausgabe')
parser.add_argument('text', help='Der vorzulesende Text (Deutsch)')
parser.add_argument('--output', '-o', help='Ausgabepfad (optional)')
parser.add_argument('--play', '-p', action='store_true', help='Sofort abspielen')
args = parser.parse_args()
print(f"Generiere Sprache für: {args.text[:50]}...")
# Sprache generieren
output_file = generate_speech(args.text, args.output)
if output_file:
print(f"✅ Audio erstellt: {output_file}")
# Für Telegram als Voice Message senden:
print(f"📱 Telegram Nutzung: file_path = '{output_file}'")
# Optional: Abspielen
if args.play:
print("🔊 Spiele ab...")
play_audio(output_file)
else:
print("❌ Fehler bei der Generierung")
return 1
return 0
if __name__ == '__main__':
exit(main())
Schritt 3: SKILL.md erstellen
Erstelle unter ~/.openclaw/workspace/skills/piper-tts/SKILL.md:
--- name: piper-tts description: Lokale Text-to-Speech Sprachausgabe (Deutsch) --- # Piper TTS Lokale deutsche Sprachausgabe für OpenClaw. ## Features - 100% lokal (keine Cloud) - Deutsche Stimme (Thorsten) - Telegram Voice-Message kompatibel - Schnell und kostenlos ## Installation Piper TTS systemweit installieren + deutsche Stimme ## Nutzung ```bash # Text zu Sprache python3 scripts/piper_tts.py "Hallo Welt" # Mit Ausgabe python3 scripts/piper_tts.py "Guten Morgen" --play # Für Telegram python3 scripts/piper_tts.py "Nachricht" --output /tmp/voice.wav ``` ## Stimme - Modell: de_DE-thorsten-medium - Geschlecht: männlich - Qualität: medium (gut für Server)
Verwendung
Kommandozeile
# Text zu Sprache konvertieren
python3 ~/.openclaw/workspace/scripts/piper_tts.py "Hallo, ich bin dein OpenClaw Assistant"
# Mit sofortiger Wiedergabe
python3 ~/.openclaw/workspace/scripts/piper_tts.py "Benachrichtigung" --play
# Eigene Ausgabedatei
python3 ~/.openclaw/workspace/scripts/piper_tts.py "Guten Morgen" \
--output /home/node/morgengruss.wav
Für Telegram Voice-Messages
import subprocess
# Sprache generieren
result = subprocess.run(
['python3', 'scripts/piper_tts.py', 'Hier ist deine Nachricht'],
capture_output=True, text=True
)
# Pfad aus Output extrahieren
for line in result.stdout.split('\n'):
if 'Audio erstellt:' in line:
wav_path = line.split(': ')[1].strip()
# In Telegram als Voice senden
# message(action='send', asVoice=True, filePath=wav_path, ...)
Weitere verfügbare Stimmen
Mehr Stimmen: huggingface.co/rhasspy/piper-voices
Fehlerbehandlung
„Piper nicht gefunden“
- Piper TTS installiert?
which piper - Stimmen-Dateien vorhanden?
ls /usr/local/share/piper-voices/ - Pfade in piper_tts.py anpassen falls nötig
Kein Audio-Ausgabe
- alsa-utils installiert?
- Lautstärke prüfen:
alsamixer - WAV-Datei existiert?
ls /tmp/openclaw/tts/
Jetzt kannst du lokale, private Sprachausgabe in deinem OpenClaw-System nutzen. Perfekt für Telegram Voice-Messages, automatische Ansagen und alles, was eine persönliche Note braucht – ohne Daten in die Cloud zu schicken. 🎙️🔒