Allgemeine Einführung
BetterWhisperX ist eine optimierte Version des WhisperX-Projekts, das sich auf die Bereitstellung effizienter und genauer automatischer Spracherkennungsdienste (ASR) konzentriert. Als verbesserter Ableger von WhisperX wird das Projekt von Federico Torrielli betreut, der sich dafür einsetzt, das Projekt kontinuierlich zu aktualisieren und seine Leistung zu verbessern. BetterWhisperX integriert eine Reihe fortschrittlicher Technologien, darunter erzwungenes Alignment auf Phonemebene, Stapelverarbeitung auf der Grundlage der Sprachaktivität und Sprechertrennung. Das Tool unterstützt nicht nur die Hochgeschwindigkeitstranskription (bis zu 70-fache Echtzeitgeschwindigkeit bei Verwendung des Large-V2-Modells), sondern bietet auch genaue Zeitstempel auf Wortebene und die Erkennung mehrerer Sprecher. Das System verwendet faster-whisper als Backend, das weniger GPU-Speicher benötigt, um selbst große Modelle zu verarbeiten, was ein sehr hohes Leistungs-/Effizienzverhältnis bietet.
Funktionsliste
- Schnelle Sprachausgabe in TextVerwendung des großen Modells large-v2, das die 70-fache Transkription in Echtzeit unterstützt.
- Zeitstempel auf Wortebenewav2vec2: Liefert genaue Zeitstempel auf Wortebene durch wav2vec2-Abgleich.
- Multi-Sprecher-ErkennungSprecher-Trennung und -Beschriftung mit pyannote-audio.
- Erkennung von SprachaktivitätReduzierung von Fehlerkennungen und Stapelverarbeitung ohne signifikante Erhöhung der Fehlerquote.
- Batch-InferenzUnterstützung der Stapelverarbeitung zur Verbesserung der Verarbeitungseffizienz.
- KompatibilitätUnterstützung für PyTorch 2.0 und Python 3.10 für eine breite Palette von Umgebungen.
Hilfe verwenden
Detaillierte Vorgehensweise
- Vorbereiten von AudiodateienVergewissern Sie sich, dass die Audiodatei im WAV- oder MP3-Format vorliegt und die Tonqualität gut ist.
- Modelle ladenWählen Sie das passende Modell (z.B. large-v2) entsprechend den Anforderungen und laden Sie es in den Speicher.
- Transkription durchführenTranskription: Rufen Sie die Transkriptionsfunktion auf, um die Sprache-zu-Text-Verarbeitung durchzuführen und vorläufige Transkriptionsergebnisse zu erhalten.
- angepasster ZeitstempelZeitstempelabgleich der Transkriptionsergebnisse auf Wortebene mit der Funktion align, um genaue Zeitstempel zu gewährleisten.
- LautsprechertrennungAufruf der Funktion diarize für die Erkennung von mehreren Sprechern, um das Label und das entsprechende Sprachfragment für jeden Sprecher zu erhalten.
- Ergebnis AusgabeSpeichern Sie das Endergebnis als Textdatei oder im JSON-Format zur weiteren Verarbeitung und Analyse.
1. die Vorbereitung der Umwelt
- Systemanforderungen:
- Python 3.10 Umgebung (mamba oder conda wird empfohlen, um eine virtuelle Umgebung zu erstellen)
- CUDA- und cuDNN-Unterstützung (erforderlich für GPU-Beschleunigung)
- FFmpeg-Werkzeugsatz
- Installationsschritte:
# Erstellen einer Python-Umgebung
mamba erstellen -n whisperx python=3.10
mamba aktiviert whisperx
# CUDA und cuDNN installieren
mamba install cuda cudnn
# BetterWhisperX installieren
pip install git+https://github.com/federicotorrielli/BetterWhisperX.git
2. grundlegende Verwendung
- Verwendung der Befehlszeile:
# Basic Transcription (Englisch)
whisperx audio.wav
# Mit großen Modellen und höherer Genauigkeit
whisperx audio.wav --model large-v2 --align_model WAV2VEC2_ASR_LARGE_LV60K_960H --batch_size 4
# Aktivieren der Lautsprechertrennung
whisperx audio.wav --model large-v2 --diarise --highlight_words True
# CPU-Modus (für Mac OS X)
whisperx audio.wav --compute_type int8
- Python-Code-Aufrufe:
importieren Sie whisperx
gc importieren
gerät = "cuda"
audio_file = "audio.mp3"
batch_size = 16 # GPU kann reduziert werden, wenn der Speicher knapp ist
compute_type = "float16" # Bei Speicherknappheit "int8" verwenden.
# 1. Modell laden und transkribieren
model = whisperx.load_model("large-v2", device, compute_type=compute_type)
audio = whisperx.load_audio(audio_file)
Ergebnis = model.transcribe(audio, batch_size=batch_size)
# 2. Phonemausrichtung
model_a, metadata = whisperx.load_align_model(language_code=result["language"], device=device)
result = whisperx.align(result["segments"], model_a, metadata, audio, device)
# 3. Sprechertrennung (erfordert Hugging Face Token)
diarize_model = whisperx.DiarisationPipeline(use_auth_token=YOUR_HF_TOKEN, device=device)
diarize_segments = diarize_model(audio)
result = whisperx.assign_word_speakers(diarize_segments, result)
3 Empfehlungen zur Leistungsoptimierung
- GPU-Speicheroptimierung:
- Chargengröße verkleinern (batch_size)
- Verwendung kleinerer Modelle (z. B. Sockel anstelle von großen)
- Leichtgewichtige Berechnungsart auswählen (int8)
- Mehrsprachige Unterstützung:
- Standardmäßig unterstützte Sprachen: Englisch, Französisch, Deutsch, Spanisch, Italienisch, Japanisch, Chinesisch, Niederländisch, Ukrainisch, Portugiesisch
- Geben Sie die zu verwendende Sprache an:
-Sprache de
(Beispiel auf Deutsch)
4. vorsichtsmaßnahmen
- Zeitstempel sind möglicherweise nicht genau genug für Sonderzeichen (z. B. Zahlen, Währungssymbole)
- Die Erkennung von Szenen, in denen mehrere Personen gleichzeitig sprechen, ist möglicherweise nicht effektiv.
- Die Lautsprechertrennung wird noch optimiert
- Für die Nutzung der Lautsprechertrennungsfunktion sind Umarmungsgesichts-Zugriffstoken erforderlich
- Sicherstellung der Kompatibilität von GPU-Treiber und CUDA-Version