WhisperX ist eine von Max Bain und der Community gepflegte Open-Source-Pipeline für lange Audioaufnahmen. Sie verbindet Sprachaktivitätserkennung, Batch-Transkription über faster-whisper/CTranslate2, sprachspezifische erzwungene Ausrichtung und optionale Sprecherdiarisierung mit pyannote. Das Ergebnis ist nicht nur „Whisper schneller“, sondern Text mit feineren Wortzeiten und anonymen Sprecherlabels. Jede Stufe verwendet ein eigenes Modell und besitzt eine eigene Fehlerklasse.
WhisperX ersetzt den zugrunde liegenden Spracherkenner nicht durch ein neues universelles ASR-Modell. Es segmentiert anders, transkribiert gebündelt, richtet den erkannten Text mit einem Phonemmodell am Audio aus und kann die Wortzeiten mit Sprecherintervallen zusammenführen. Falscher Text wird durch präziser aussehende Zeitstempel nicht wahr. Fehlt ein Zeichen, eine Zahl oder ein Schriftsystem im Alignermodell, ist die Zeit eventuell interpoliert. Bei gleichzeitigem Sprechen kann ein sauber wirkendes SPEAKER_00-Label trotzdem falsch sein.
Was WhisperX zu Whisper hinzufügt
| Stufe | Implementierung | Nutzen | Fehlergrenze |
|---|---|---|---|
| Sprachsegmente | pyannote- oder Silero-VAD, Cut & Merge | Sprachzentrierte Chunks für Batch | Leise Sprache kann fehlen; Turns können verschmelzen |
| Transkription | faster-whisper/CTranslate2 | Batch und Quantisierungsoptionen | Anderes Decoding als Upstream Whisper |
| Forced Alignment | Sprachspezifisches wav2vec2/Phonem-ASR | Ordnet erkannte Wörter feineren Zeiten zu | Zeichen, Zahlen, Symbole, Sprache können scheitern |
| Diarisierung | pyannote Community-1 | Anonyme Sprecherlabels für Wörter/Segmente | Überlappung, kurze Turns, ähnliche Stimmen; keine Namen |
| Ausgabe | SRT, VTT, TSV, TXT, JSON | Untertitel und Weiterverarbeitung | Lesetempo, Umbruch und Inhalt benötigen Review |
Das ursprüngliche Paper behandelt drei Langformprobleme: Whisper mit Puffer-/Fensterverarbeitung kann driften, wiederholen oder halluzinieren; sequenzielles Decoding erschwert einfaches Batching; Äußerungszeiten sind für Wortediting zu grob. VAD Cut & Merge ermöglicht Batch-Inferenz, das Phonem-Alignment ergänzt Wortzeiten nach der Erkennung. Die gemeldeten Geschwindigkeiten und Fehlermaße gehören zu den dokumentierten Modellen, Daten und GPUs. Wir machen daraus keine universelle Geschwindigkeits- oder WER-Zusage für heutige Releases.
Aktueller Projekt- und Abhängigkeitsstand
WhisperX wird weiter gepflegt. Bei der Prüfung war v3.8.6 der neueste stabile GitHub-Release; die Metadaten auf main nannten bereits 3.8.7rc1. Neuere Releases reparierten Wortzeiten für nicht alignierbare Zeichen, ergänzten Fortschritts-Callbacks und passten Torch/TorchCodec-Kompatibilität an. Das belegt Aktivität, zeigt aber auch, warum Produktion einen geprüften Release pinnen sollte, statt bei jedem Build main zu installieren.
| Abhängigkeitsgrenze | Aktuelle Anforderung | Betriebliche Folge |
|---|---|---|
| Python | 3.10 bis unter 3.14 | Isolierte Umgebung; Systemupgrade kann brechen |
| ASR-Laufzeit | faster-whisper≥1.2, CTranslate2≥4.5 | CUDA, Modelle und Decoding regressionsprüfen |
| PyTorch-Familie | Torch/Torchaudio um 2.8 | Wheel, Treiber und CUDA müssen passen |
| Diarisierung | pyannote.audio≥4 | TorchCodec, Modellgating und zweiter Modelllebenszyklus |
| Lizenzen | WhisperX BSD-2; Modelle/Abhängigkeiten separat | Notices und Modellbedingungen einzeln verwalten |
Installation und kontrollierter Erstlauf
python -m venv .venv
source .venv/bin/activate
pip install whisperx
whisperx meeting.wav --model large-v2 --batch_size 4 --output_format json
whisperx meeting.wav --diarize --hf_token "$HF_TOKEN"Das README empfiehlt PyPI für normale Nutzung und warnt vor experimentellen Änderungen der Entwicklungsversion. Die GPU-Anleitung nennt aktuell CUDA 12.8. CPU-Betrieb ist mit --device cpu --compute_type int8 möglich, doch Tempo und Qualität müssen gemessen werden. Bei GPU-Speichermangel zuerst Batchgröße reduzieren, dann ein kleineres ASR-Modell oder int8 prüfen; beide letzteren können die Erkennung ändern. Der Hugging-Face-Token dient nur dem Download gegateter Modelle und gehört weder in Shell-Historie noch Quellcode oder Metadaten.
Produktionsablauf für lange Aufnahmen
- Einwilligung einholen.Zweck, Quelle, Aufbewahrung und Zugriffsberechtigte der Aufnahme dokumentieren.
- Original bewahren.Arbeitskopie konsistent decodieren und Kanalinformation vor Mono-Konvertierung erhalten.
- Privates Testset bauen.Stille, Lärm, Musik, Überlappung, Unterbrechungen, Namen, Zahlen, Sprachwechsel und Maximallänge aufnehmen.
- Gesamten Stack pinnen.WhisperX, faster-whisper, ASR-Checkpoint, Alignermodell, VAD, pyannote, Torch/CUDA und Compute-Type notieren.
- VAD und Batch kalibrieren.Abgeschnittene Sprache, falsche Sprachsegmente, GPU-Speicher und Echtzeitfaktor gemeinsam messen.
- Rohtranskript erhalten.Segmente vor Alignment speichern, damit eine Alignmentstörung die ASR-Hypothese nicht verdeckt.
- Ausnahmen markieren.Echt alignierte, interpolierte und nicht alignierte Wörter unterscheiden und Zeitdrift über die gesamte Datei testen.
- Nur bei Bedarf diarisierren.Token geheim halten, bekannte Sprecherzahl begrenzen und Überlappung/kurze Turns inspizieren.
- Freigabegates anwenden.Namen, Zahlen, Negation, Halluzination, Wortzeit, Sprecherwechsel und Untertitellesbarkeit prüfen.
- Mit Manifest exportieren.JSON und SRT/VTT, Modellkonfiguration, Reviewstatus und Löschdatum zusammen speichern.
Alignment-Sprachen und transparente Fehler
Forced Alignment ist sprachspezifisch. Das README nennt Standard-Torchaudio-Pipelines für Englisch, Französisch, Deutsch, Spanisch und Italienisch sowie weitere Mappings in DEFAULT_ALIGN_MODELS_HF. Fehlt die erkannte Sprache, ist ein geeignetes Phonem-ASR über --align_model zu liefern und an repräsentativer Sprache zu testen. Dass Whisper eine Sprache transkribiert, beweist nicht, dass WhisperX jedes Wort ausrichten kann.
Zahlen, Währungen, Symbole, gemischte Schriften, Code-Switching und ungewöhnliche Schreibweisen können außerhalb des Zeichensatzes liegen. Neuere Releases verbesserten die Zeitbehandlung, doch nearest/linear-Interpolation ist nur eine nützliche Schätzung, kein akustischer Nachweis. ignore lässt die Lücke sichtbar. Downstream-Daten sollten aligned/interpolated erhalten und nicht alle Zeiten gleich sicher darstellen.
| Fall | Risiko | Kontrolle |
|---|---|---|
| Zahlen/Währung | Schreibform fehlt im Wörterbuch | Jahre, Preise, Daten, Einheiten separat |
| Sprachwechsel | Ein Modell deckt beide Schriften nicht ab | Sprachregionen teilen oder validierten Aligner nutzen |
| Eigennamen | ASR-Schreibung passt nicht zum Phonemlexikon | Text und Zeit gegen Menschenreferenz |
| Musik/Stille | VAD und ASR widersprechen sich | Falsche Sprache und Halluzination labeln |
| Überlappung | Alle drei Stufen werden schlechter | Überlappungsset und unsichere Sprecher erlauben |
| Kurze Turns | Zu wenig Überdeckung von Wort und Sprecherintervall | Unterbrechungsgrenzen prüfen |
pyannote: Zugriff, Lizenz und Bedeutung
Die aktuelle CLI verwendet standardmäßig pyannote/speaker-diarization-community-1. Nutzer müssen die gegateten Bedingungen akzeptieren und einen Hugging-Face-Access-Token erstellen. Die Model Card bezeichnet Community-1 als CC-BY-4.0 und beschreibt lokalen Offline-Betrieb nach dem Download. Diese Modellbedingungen sind getrennt von WhisperX BSD-2 und den Bedingungen der Whisper/faster-whisper-Modelle.
Diarisierung beantwortet, welcher anonyme Cluster wann spricht; sie identifiziert keine Person. SPEAKER_00 kann zwischen Dateien wechseln, einen Menschen teilen oder ähnliche Stimmen zusammenführen. min/max_speakers begrenzt das Problem, garantiert aber keine richtige Zuordnung. Überlappende Sprache ist eine ausdrücklich genannte Einschränkung. Für Recht, Forschung, Callcenter oder Klinik bleibt das Audio erhalten, und Sprecherzuordnung wird als prüfbare Metadaten behandelt.
Vergleich mit angrenzenden Optionen
| Option | Wählen wenn | Haupt-Trade-off |
|---|---|---|
| WhisperX | Lange Dateien brauchen Batch, Wortzeiten und lokale anonyme Sprecher | Mehrere Modelle und zusammengesetzte Fehler |
| OpenAI Whisper | Upstream-Python und einfacheres Modellverhalten | Gröbere Zeiten, keine native Diarisierung/Langform-Batchpipeline |
| faster-whisper | CTranslate2-Durchsatz ohne Alignment genügt | Alignment/Diarisierung und QA selbst ergänzen |
| whisper.cpp | C/C++, CPU, Apple Silicon, Mobil/Edge/Offline | Anderes Deployment; Pipeline nicht enthalten |
| Managed API | Betrieb, Skalierung und aktuelle Hosted-Modelle delegieren | Daten verlassen Grenze, Kosten und Funktionsunterschiede |
Unabhängiges Urteil:WhisperX ist eine Produktionspipeline nach dem ASR, kein Schalter, der Text automatisch genauer macht. Es lohnt sich, wenn Wortzeiten und anonyme Sprecher erheblich Redaktionszeit sparen. Reicht einfacher Text, fehlt ein validierter Aligner, dominiert überlappende Sprache oder kann das Team die Python/Torch/CUDA/Modellmatrix nicht pflegen, sind faster-whisper, Upstream Whisper, whisper.cpp oder ein verwalteter Dienst betrieblich oft verlässlicher.
Häufige Fragen
Ist WhisperX ein neues ASR-Modell?
Nicht im üblichen Sinn. Es nutzt Whisper-Familien über faster-whisper und ergänzt VAD, Forced Alignment und optional pyannote.
Garantiert es wortgenaue Zeiten?
Nein. Nicht unterstützte Zeichen, Zahlen, Symbole, gemischte Schrift oder falsches Sprachmodell können scheitern; Interpolation ist eine Schätzung.
Erkennt es Menschen beim Namen?
Nein. Die Ausgabe sind anonyme Cluster wie SPEAKER_00. Eine reale Identität benötigt separate Belege.
Brauche ich einen HF-Token?
Für Kerntranskription nein. Der Standardweg zur pyannote-Diarisierung verlangt Zustimmung und Token für den Modelldownload.
Läuft es offline?
Nach lokalem Download aller ASR-, Alignment- und Sprecherressourcen ja. Anwendungsegress, Logs, Cache und Speicherung sind trotzdem zu prüfen.
Warum ist der GPU-Speicher voll?
Batch, ASR-Modell, Compute-Type, Alignment und Diarisierung verbrauchen Ressourcen. Zuerst Batch reduzieren, Qualitätsänderungen messen.
Ist es bei überlappenden Sprechern zuverlässig?
Nicht als Ground Truth. Projekt und Model Card weisen auf Überlappung und unvollkommene Diarisierung hin.
Welche Sprachen lassen sich alignieren?
Es gibt Torchaudio-Defaults und HF-Mappings in alignment.py. Fehlt eine Sprache, einen geprüften Phonem-Aliner liefern oder transparent überspringen.
Geprüfte Quellen
- Offizielles WhisperX-Repository
- Offizielles README und Grenzen
- WhisperX-Paper
- Offizielle Releases
- Abhängigkeitsmetadaten
- Alignment-Code und Sprachmappings
- Aktuelle CLI-Defaults
- Sprecherzuordnungscode
- pyannote Community-1 Model Card
- faster-whisper
- OpenAI Hosted-Transkriptionsdoku
- WhisperX BSD-2-Lizenz
Unabhängige technische Prüfung: 2026-08-20. Versionen, Abhängigkeiten, Modellzugriff und Sprachmappings ändern sich. Primärquellen pinnen und privat evaluieren.



