Audio-Dateien in Text umwandeln – besonders fuer Telegram Sprachnachrichten. Wenn dir jemand eine Voice-Message schickt, kannst du sie mit diesem Skill automatisch transkribieren und darauf antworten.

Warum faster-whisper?

  • ⚡ 4x schneller als Standard-Whisper
  • 🔒 100% Lokal
  • 🌍 99 Sprachen
  • 📱 Telegram-Ready

Voraussetzungen

System-Pakete (WICHTIG!)

FFmpeg muss installiert sein! faster-whisper nutzt FFmpeg zur Audio-Verarbeitung. Ohne FFmpeg funktioniert die Transkription nicht.

# FFmpeg installieren (System-Voraussetzung!)
apt-get update
apt-get install ffmpeg
# Test
ffmpeg -version

Python-Pakete

# Virtual Environment erstellen
python3 -m venv /home/node/.openclaw/venv
# faster-whisper installieren
source /home/node/.openclaw/venv/bin/activate
pip install faster-whisper
# Test
/home/node/.openclaw/venv/bin/whisper-ctranslate2 --version

Installation

Script erstellen

#!/usr/bin/env python3
"""
Transkription-Script fuer Sprachnachrichten via faster-whisper
Nutzt das venv in /home/node/.openclaw/venv
"""
import argparse
import sys
import subprocess
from pathlib import Path
VENV_PATH = Path("/home/node/.openclaw/venv")
WHISPER_BIN = VENV_PATH / "bin" / "whisper-ctranslate2"
def transcribe_file(audio_path, language="auto", model="base"):
    """Transkribiert eine Audiodatei mit faster-whisper"""
    
    audio_file = Path(audio_path)
    if not audio_file.exists():
        raise FileNotFoundError(f"Audio-Datei nicht gefunden: {audio_path}")
    
    cmd = [
        str(WHISPER_BIN),
        str(audio_file),
        "--model", model,
        "--output_format", "txt",
        "--output_dir", "/tmp",
    ]
    
    if language != "auto":
        cmd.extend(["--language", language])
    
    print(f"Transkribiere: {audio_file.name}")
    
    result = subprocess.run(cmd, capture_output=True, text=True, cwd="/tmp")
    
    if result.returncode != 0:
        print(f"Fehler: {result.stderr}", file=sys.stderr)
        sys.exit(1)
    
    output_file = Path(f"/tmp/{audio_file.stem}.txt")
    if output_file.exists():
        text = output_file.read_text(encoding="utf-8").strip()
        output_file.unlink()
        return text
    else:
        return result.stdout.strip()
def main():
    parser = argparse.ArgumentParser(description="Audio-Transkription")
    parser.add_argument("audio_file", help="Pfad zur Audio-Datei (mp3, ogg, wav)")
    parser.add_argument("--language", "-l", default="auto")
    parser.add_argument("--model", "-m", default="small", 
                       choices=["tiny", "base", "small", "medium", "large-v3"])
    
    args = parser.parse_args()
    
    try:
        result_text = transcribe_file(args.audio_file, args.language, args.model)
        print("\nTranskription:")
        print("-" * 40)
        print(result_text)
        print("-" * 40)
    except Exception as e:
        print(f"Fehler: {e}", file=sys.stderr)
        sys.exit(1)
if __name__ == "__main__":
    main()

Verwendung

# Auto-Erkennung
python3 scripts/transcribe.py audio.mp3
# Deutsch explizit
python3 scripts/transcribe.py audio.mp3 --language de
# Beste Qualitaet
python3 scripts/transcribe.py audio.mp3 --model large-v3

Fertig!

Jetzt kannst du lokal und privat Audio-Dateien transkribieren. 🎙️📝