Files
BSN-Chatsystem/projektplan-artikel-audio.md

3.6 KiB
Raw Permalink Blame History

Projektplan: Artikel-Vorlese-Funktion (Pre-Generation)

Stand: 11. Juni 2026
Prinzip: Audio wird EINMAL bei Artikel-Erstellung generiert, nicht bei jeder Anfrage.


Übersicht

Jeder Artikel auf brettspiel-news.de bekommt automatisch:

  • Deutsche Audioversion (Thorsten-Stimme, Piper TTS)
  • Englische Audioversion (Joe-Stimme, Piper TTS, optional)
  • Play-Button unter dem Artikel
  • Download-Link für Offline-Hören

Der Chatbot nutzt dieselben Dateien — null Zusatzaufwand.


Phase 1: TTS-Pipeline (Hermes-Seite)

1.1 Pipeline-Skript

  • Input: Artikel-URL oder Artikel-ID
  • Fetch: Artikeltext via Content-API
  • Clean: HTML → Fließtext (parsbar für TTS)
  • Generate DE: Piper Thorsten (de_DE-thorsten-medium)
  • Generate EN: Piper Joe (en_US-joe-medium) — optional
  • Output: MP3-Datei → Media-Ordner

1.2 Performance

  • 2.000 Zeichen → ~3 min Audio → ~30s Generierung (0,15x Echtzeit)
  • 5.000 Zeichen → ~8 min Audio → ~75s Generierung
  • 10.000 Zeichen → ~15 min Audio → ~150s Generierung

1.3 API-Endpoint

  • POST /tts/generate — nimmt Artikel-ID/URL, gibt Audio-Pfad zurück
  • Status-Endpoint für Fortschritt (bei langen Artikeln)

Phase 2: Joomla-Integration

2.1 Trigger

  • Joomla-Plugin: onContentAfterSave → Webhook an Hermes
  • Alternativ: Cron-Job, der alle X Minuten auf neue Artikel prüft
  • Priorität: Webhook (sofort), Cron (Fallback)

2.2 Audio-Speicherung

  • MP3-Dateien auf brettspiel-news.de Server
  • Pfad-Schema: /media/audio/articles/{article-id}-de.mp3
  • Auch als Download in Artikel-Metadaten hinterlegt

2.3 Artikel-Template

  • Play-Button: <audio>-Element oder JavaScript-Player
  • Text: "🔊 Artikel anhören (DE) | (EN)"
  • Barrierefrei: ARIA-Labels, Keyboard-Navigation

Phase 3: Chatbot-Integration

3.1 Vorlese-Befehl

  • User: „Lies Artikel X vor"
  • Chatbot: Holt article_id → sucht Audio-Datei → gibt Player zurück
  • Keine Generation — Datei existiert bereits

3.2 Knowledge-Datenbank

  • Tabelle article_audio: article_id, title, de_audio_path, en_audio_path, generated_at
  • Schneller Lookup für Chatbot

Phase 4: Batch-Verarbeitung (bestehende Artikel)

4.1 Bestandsaufnahme

  • Alle Artikel-IDs via Content-API abrufen
  • Prüfen, welche schon Audio haben

4.2 Batch-Lauf

  • Parallele Verarbeitung (4 Worker = 4 parallele TTS-Generierungen)
  • ~1.200 Artikel × 30s = ~10 Stunden Gesamtlaufzeit
  • Priorisierung: Neueste zuerst, dann älteste

4.3 Fehlerbehandlung

  • Retry bei Timeout
  • Skip bei leeren Artikeln
  • Logging pro Artikel

Phase 5: Weitere Sprachen (Zukunft)

Sprache Piper-Stimme Verfügbar
Deutsch Thorsten (medium)
Englisch Joe (medium)
Französisch fr_FR (medium) Piper
Spanisch es_ES (medium) Piper
Niederländisch nl (medium) Piper
  • Pro Sprache: ~30s Generierung extra
  • Speicher: ~1 MB MP3 pro Artikel pro Sprache
  • 1.200 Artikel × 5 Sprachen × 1 MB = ~6 GB (vernachlässigbar)

Infrastruktur (gemeinsam mit Chatbot)

Komponente Status
Piper TTS (Thorsten DE) Läuft
Piper TTS (Joe EN) Läuft
Content-API (Joomla) Nach Migration
Joomla-Plugin (Trigger) 🔜 Phase 2
Artikel-Template Daniel
Speicherplatz Ausreichend (50+ GB frei)

Nächste Schritte

  1. Pipeline-Skript bauen (jetzt)
  2. API-Endpoint für TTS-Generierung (jetzt)
  3. Joomla-Plugin nach Migration (Daniel)
  4. Template-Play-Button (Daniel)
  5. Batch-Lauf für Archiv (nach Phase 1+2)