
Bild vom Autor
# Einführung
Das Transkribieren von Audio in Textual content ist für Entwickler ein häufiger Bedarf, unabhängig davon, ob Sie eine Voice-to-Textual content-App erstellen, Besprechungsaufzeichnungen analysieren oder Untertitel zu Movies hinzufügen. Wenn Sie dies lokal (auf Ihrem eigenen Laptop) tun, schützen Sie die Privatsphäre und vermeiden wiederkehrende Cloud-Kosten.
In diesem Artikel erfahren Sie, wie Sie mit ein schnelles, lokales Transkriptionssystem einrichten Flüstern und seine optimierte Model namens Schneller-Flüstern. Wir werden die Audiovorverarbeitung wie die Konvertierung von MP3 in WAV behandeln, ein Python-Skript schreiben und die Ausführung auf CPUs und GPUs besprechen.
# Was ist Flüstern? Und warum eine lokale Variante verwenden?
OpenAIs Whisper ist ein automatisches Spracherkennungsmodell (ASR). Es ist auf eine große Menge an mehrsprachigem Audiomaterial trainiert und funktioniert auch bei Hintergrundgeräuschen oder unterschiedlichen Akzenten intestine.
Allerdings kann das ursprüngliche Whisper auf der CPU langsam sein und viel Speicher beanspruchen. Hier helfen optimierte Varianten.
- whisper.cpp ist in C++ ohne große Abhängigkeiten geschrieben. Es ist sehr schnell auf der CPU, erfordert jedoch eine Kompilierung und ist weniger Python-freundlich.
- Schneller-Flüstern ist eine Neuimplementierung mit CTranslate2. Es läuft bis zu viermal schneller als das ursprüngliche Whisper, benötigt weniger RAM und arbeitet nahtlos mit Python zusammen. In diesem Tutorial verwenden wir Quicker-Whisper.
Beide Varianten laufen zu 100 % lokal; Keine Daten verlassen Ihren Laptop.
# Einrichten Ihrer Umgebung (plattformübergreifend)
Dieses Setup funktioniert unter Home windows, macOS und Linux mit Python 3.8 oder höher. Erstellen und aktivieren Sie eine virtuelle Umgebung (non-obligatory, aber empfohlen):
python -m venv whisper_env
Aktivieren Sie die virtuelle Umgebung auf macOS und Linux:
supply whisper_env/bin/activate
Unter Home windows:
whisper_envScriptsactivate
Installieren Sie Quicker-Whisper:
pip set up faster-whisper
// Installieren von Audio-Vorverarbeitungstools
Whisper erwartet Audio im 16-kHz-Mono-WAV-Format. Um gängige Formate (MP3, M4A, OGG usw.) zu konvertieren, benötigen wir FFmpeg und die Python-Bibliothek pydub.
FFmpeg installieren:
- Laden Sie unter Home windows von FFmpeg.org herunter und fügen Sie es zu PATH hinzu oder verwenden Sie es
winget set up ffmpeg. - macOS:
brew set up ffmpeg - Linux (Ubuntu/Debian):
sudo apt set up ffmpeg
Dann installieren Sie pydub:
// Optionale GPU-Unterstützung
Wenn Sie über eine NVIDIA-GPU verfügen und eine schnellere Transkription wünschen, installieren Sie cuBLAS und cuDNN gemäß den Anweisungen Anleitung zur Quicker-Whisper-GPU. Ohne dies fällt der Code automatisch auf die CPU zurück.
# Audiovorverarbeitung: Konvertieren von Nicht-WAV-Dateien
Die meisten Audiodateien, auf die Sie stoßen, sind keine rohen WAV-Dateien. Sie verwenden Komprimierungs- (MP3) oder Containerformate (M4A). Sie müssen sie in 16 kHz, Mono, PCM WAV konvertieren, bevor Sie sie an Whisper weiterleiten.
Unten finden Sie eine Python-Funktion, die Pydub (das FFmpeg im Hintergrund aufruft) verwendet, um diese Konvertierung durchzuführen.
from pydub import AudioSegment
import os
def convert_to_wav(input_path, output_path=None):
"""
Convert any audio file (MP3, M4A, OGG, and so on.) to WAV (16 kHz, mono).
If output_path is None, replaces extension with .wav in the identical folder.
"""
if output_path is None:
base, _ = os.path.splitext(input_path)
output_path = base + ".wav"
# Load audio (pydub makes use of ffmpeg)
audio = AudioSegment.from_file(input_path)
# Convert to mono and set pattern fee to 16000 Hz
audio = audio.set_channels(1).set_frame_rate(16000)
# Export as WAV
audio.export(output_path, format="wav")
return output_path
Anwendungsbeispiel:
wav_file = convert_to_wav("assembly.mp3")
print(f"Transformed to: {wav_file}")
# Grundlegendes Transkriptionsskript mit Quicker-Whisper
Schreiben wir nun ein vollständiges Python-Skript, das ein Whisper-Modell lädt, eine WAV-Datei transkribiert und das Ergebnis druckt.
from faster_whisper import WhisperModel
def transcribe_audio(wav_path, model_size="base", machine="cpu"):
"""
Transcribe a WAV file (16 kHz mono) utilizing Quicker-Whisper.
model_size: "tiny", "base", "small", "medium", "large-v2", "large-v3"
machine: "cpu" or "cuda" (if GPU is accessible)
"""
# Initialize mannequin (downloads routinely on first use)
mannequin = WhisperModel(model_size, machine=machine, compute_type="int8")
# Run transcription
segments, information = mannequin.transcribe(wav_path, beam_size=5, language="en")
print(f"Detected language: {information.language} (chance: {information.language_probability:.2f})")
print("nTranscription:")
for phase in segments:
print(f"({phase.begin:.2f}s -> {phase.finish:.2f}s) {phase.textual content}")
# Return full textual content if wanted
full_text = " ".be part of((seg.textual content for seg in segments))
return full_text
# Instance utilization
if __name__ == "__main__":
textual content = transcribe_audio("my_recording.wav", model_size="small", machine="cpu")
Was passiert im obigen Code?
WhisperModellädt das ausgewählte Modell herunter (zsmall) Zu~/.cache/huggingface/hubbeim ersten Lauf.beam_size=5bringt Genauigkeit und Geschwindigkeit in Einklang. Höhere Werte (z. B. 10) sind langsamer, aber genauer.compute_type="int8"verwendet 8-Bit-Integer-Mathematik für schnellere Schlussfolgerungen. Für die GPU können Sie es versuchen"float16".
| Gerät | Geschwindigkeit | Komplexität des Setups | Empfohlen für |
|---|---|---|---|
| CPU | Langsamer (aber intestine für Dateien unter 10 Minuten) | Keine (einfach installieren) | Anfänger, Laptops, kleine Projekte |
| GPU (CUDA) | 3–5× schneller | Erfordert NVIDIA-Treiber, cuBLAS, cuDNN | Lange Dateien, Batch-Transkription |
Um eine GPU zu verwenden, ändern Sie machine="cuda" im Code. Quicker-Whisper erkennt CUDA automatisch, wenn es korrekt installiert ist.
Tipp: Selbst auf der CPU ist Quicker-Whisper viel schneller als das ursprüngliche Whisper. Für eine 10-minütige MP3 benötigt das Basismodell auf einer modernen CPU etwa 2 Minuten.
# Konvertieren von MP3 in Transkript: Ein vollständiges Beispiel
Hier ist ein vollständiges Skript, das jede Audiodatei in WAV konvertiert und dann transkribiert.
import os
from pydub import AudioSegment
from faster_whisper import WhisperModel
def convert_to_wav(input_path):
"""Convert any audio to 16kHz mono WAV."""
audio = AudioSegment.from_file(input_path)
audio = audio.set_channels(1).set_frame_rate(16000)
wav_path = os.path.splitext(input_path)(0) + ".wav"
audio.export(wav_path, format="wav")
return wav_path
def transcribe_file(audio_path, model_size="base", machine="cpu"):
# Step 1: Convert if not already WAV
if not audio_path.decrease().endswith(".wav"):
print(f"Changing {audio_path} to WAV...")
audio_path = convert_to_wav(audio_path)
# Step 2: Transcribe
print(f"Loading mannequin '{model_size}' on {machine.higher()}...")
mannequin = WhisperModel(model_size, machine=machine, compute_type="int8")
segments, information = mannequin.transcribe(audio_path, beam_size=5)
print(f"nLanguage: {information.language} (prob: {information.language_probability:.2f})")
print("nTranscript:")
for seg in segments:
print(seg.textual content, finish=" ", flush=True)
print() # ultimate newline
if __name__ == "__main__":
# Instance: transcribe an MP3 file
transcribe_file("interview.mp3", model_size="small", machine="cpu")
Speichern Sie dies unter transcribe.py und führe aus:
Das Skript lädt das Modell einmal herunter, konvertiert die Datei und gibt das Transkript aus.
# Abschluss
Sie verfügen jetzt über ein lokales, schnelles und datenschutzfreundliches Audio-Transkriptionssystem. Einige wichtige Erkenntnisse:
- Quicker-Whisper ermöglicht Ihnen eine Transkription nahezu in Echtzeit auf einer CPU und eine hervorragende Geschwindigkeit auf einer GPU.
- Verarbeiten Sie Audio immer mit pydub und FFmpeg auf 16-kHz-Mono-WAV vor.
- Der
model_sizeParameter tauscht Genauigkeit gegen Geschwindigkeit – beginnen Sie mit"base"oder"small". - Die lokale Ausführung bedeutet keine API-Schlüssel, keine gemeinsame Nutzung von Daten und keine monatlichen Gebühren.
Versuchen Sie es anders Whisper-Modellgrößen für eine bessere Genauigkeit. Fügen Sie mithilfe von Bibliotheken wie „Sprechertagebücher“ hinzu (identifizieren, wer wann gesprochen hat). pyannote.audio. Erstellen Sie eine einfache Weboberfläche mit Gradio oder Streamlit.
Shittu Olumide ist ein Software program-Ingenieur und technischer Autor, der sich leidenschaftlich dafür einsetzt, modernste Technologien zu nutzen, um fesselnde Erzählungen zu erschaffen, mit einem scharfen Blick fürs Element und einem Gespür für die Vereinfachung komplexer Konzepte. Sie können Shittu auch auf finden Twitter.
