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:
# 创建 Python 环境
mamba create -n whisperx python=3.10
mamba activate whisperx
# 安装 CUDA 和 cuDNN
mamba install cuda cudnn
# 安装 BetterWhisperX
pip install git+https://github.com/federicotorrielli/BetterWhisperX.git
2. grundlegende Verwendung
- Verwendung der Befehlszeile:
# 基础转录(英语)
whisperx audio.wav
# 使用大模型和更高精度
whisperx audio.wav --model large-v2 --align_model WAV2VEC2_ASR_LARGE_LV60K_960H --batch_size 4
# 启用说话人分离
whisperx audio.wav --model large-v2 --diarize --highlight_words True
# CPU 模式(适用于 Mac OS X)
whisperx audio.wav --compute_type int8
- Python-Code-Aufrufe:
import whisperx
import gc
device = "cuda"
audio_file = "audio.mp3"
batch_size = 16 # GPU 内存不足时可降低
compute_type = "float16" # 内存不足可改用 "int8"
# 1. 加载模型并转录
model = whisperx.load_model("large-v2", device, compute_type=compute_type)
audio = whisperx.load_audio(audio_file)
result = model.transcribe(audio, batch_size=batch_size)
# 2. 音素对齐
model_a, metadata = whisperx.load_align_model(language_code=result["language"], device=device)
result = whisperx.align(result["segments"], model_a, metadata, audio, device)
# 3. 说话人分离(需要 Hugging Face token)
diarize_model = whisperx.DiarizationPipeline(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:
--language 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