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. 🎙️🔒