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. đŸŽ™ïžđŸ”’