Ein Team, das Kundengespräche, interne Meetings und Podcast-Folgen über mehrere Projekte hinweg transkribiert, zahlt bei einer Cloud-API schnell für Hunderte Stunden Audio im Monat. Die Whisper-API von OpenAI kostet aktuell 0,006 US-Dollar pro Minute, macht aus 500 Stunden Audio im Monat also 180 US-Dollar Rechnung, jeden Monat neu, unabhängig davon, ob dieselbe Kundenstimme zum zehnten Mal transkribiert wird. Wer stattdessen das zugrunde liegende Modell selbst betreibt, zahlt für Hardware statt für jede Minute Audio.
Whisper ist ein von OpenAI veröffentlichtes und quelloffenes Spracherkennungsmodell, das Audiodateien in Text umwandelt und dabei über 90 Sprachen abdeckt. Der Quellcode und die trainierten Modellgewichte stehen öffentlich zum Download bereit, sodass jeder Server mit ausreichend Rechenleistung das Modell lokal ausführen kann, ohne eine Anfrage an einen fremden Server zu schicken. Für den produktiven Einsatz hat sich daneben faster-whisper etabliert, eine Neuimplementierung derselben Modelle auf Basis von CTranslate2, einer Inferenz-Engine, die Transformer-Modelle für schnellere Ausführung auf CPU und GPU umbaut.
- Ein Unternehmen verarbeitet dieselben Aufnahmen über mehrere interne Tools hinweg und will nicht für jede Anwendung erneut API-Gebühren zahlen.
- Aufnahmen enthalten Kundendaten oder Gesundheitsdaten, die aus Datenschutzgründen keinen fremden Server erreichen dürfen.
- Das monatliche Volumen liegt im Bereich mehrerer hundert Stunden Audio, sodass sich eine eigene GPU rechnerisch lohnt.
- Ein Team betreibt bereits eine GPU für andere KI-Aufgaben und kann die Transkription mitlaufen lassen.
Wo keiner dieser Punkte zutrifft, bleibt die Cloud-API die einfachere Wahl: Sie kostet ohne Grundgebühr, braucht keine Wartung und skaliert von einer einzelnen Datei bis zu großen Mengen ohne eigenes Zutun.
Systemvoraussetzungen
Ein selbstgehosteter Whisper-Dienst läuft sowohl auf einer Grafikkarte, kurz GPU, als auch rein auf dem Prozessor, nur mit sehr unterschiedlicher Geschwindigkeit. Die folgende Tabelle nennt die konkreten Versionen und Hardware-Werte für den in diesem Artikel verwendeten Aufbau mit dem Docker-Server speaches, der faster-whisper intern nutzt.
| Komponente | Anforderung |
|---|---|
| Docker | Version 24 oder neuer, mit Docker Compose V2 |
| GPU für schnellen Betrieb | NVIDIA-Grafikkarte mit mindestens 10 GB VRAM für das große Modell large-v3, CUDA 12 und cuDNN 9 |
| Kleinere Modelle auf GPU | ab 2 GB VRAM für das small-Modell, ab 5 GB VRAM für das medium-Modell |
| Betrieb ohne GPU | mindestens 8 physische CPU-Kerne für einen brauchbaren Durchsatz mit dem small- oder medium-Modell |
| Arbeitsspeicher | mindestens 8 GB RAM, 16 GB empfohlen bei CPU-Betrieb mit dem medium- oder large-Modell |
| Container-Image | ghcr.io/speaches-ai/speaches, GPU-Variante mit dem Tag latest-cuda-12.6.3 |
| Python-Bibliothek als Alternative ohne Docker | faster-whisper, Python 3.9 oder neuer |
| Eingangsformat der Audiodatei | WAV, MP3, M4A oder FLAC; der Dienst wandelt intern auf 16-kHz-Mono um |
VRAM steht für Video-RAM, den eigenen Arbeitsspeicher der Grafikkarte, in dem das Modell während der Berechnung liegt. CUDA ist die Programmierschnittstelle von Nvidia, über die Software auf die Rechenkerne der GPU zugreift, und cuDNN ist die darauf aufbauende Bibliothek für neuronale Netze, die faster-whisper für schnelle Matrixoperationen braucht. Ohne beide in der passenden Version bricht der Dienst beim Start mit einer Fehlermeldung ab.
Systemarchitektur
flowchart TD A[Anwendung sendet Audiodatei per POST] --> B[Speaches Server nimmt die Datei entgegen] B --> C[Audio wird auf 16 kHz Mono resampled] C --> D[Sprachaktivitaetserkennung VAD entfernt stille Abschnitte] D --> E[Gewaehltes faster-whisper Modell liegt im Cache oder wird geladen] E --> F[CTranslate2 Inferenz laeuft auf GPU oder CPU] F --> G[Beam Search Decoding erzeugt Text und Zeitstempel] G --> H[Modell erkennt die gesprochene Sprache automatisch] H --> I[Server liefert JSON Antwort mit dem Transkript] I --> J[Anwendung speichert das Transkript in der eigenen Datenbank]
Die Anfrage beginnt, sobald eine Anwendung eine Audiodatei per POST-Aufruf an den Server schickt, einen HTTP-Befehl, der Daten zum Server überträgt statt sie nur abzurufen. Der Server wandelt die Datei zunächst auf eine einheitliche Abtastrate von 16 Kilohertz in Mono um, weil Whisper ausschließlich mit diesem Format trainiert wurde und jede andere Abtastrate zuerst umgerechnet werden müsste. Eine Sprachaktivitätserkennung, im Englischen Voice Activity Detection oder VAD, entfernt anschließend stille oder rein geräuschhafte Abschnitte aus dem Signal, bevor sie überhaupt beim Spracherkennungsmodell ankommen. Das gewählte faster-whisper-Modell liegt danach entweder schon im Arbeitsspeicher, weil es aus einem vorherigen Aufruf gecacht wurde, oder es wird einmalig von Hugging Face heruntergeladen und in den lokalen Cache geschrieben. Das kostet beim ersten Aufruf ein paar Sekunden Wartezeit, bei jedem weiteren nicht mehr. Die eigentliche Berechnung übernimmt CTranslate2, eine Inferenz-Engine, die das Transformer-Modell von Whisper in ein für die jeweilige Hardware optimiertes Format überträgt und dabei je nach Einstellung mit reduzierter Zahlengenauigkeit rechnet, einer Technik namens Quantisierung. Ein Beam-Search-Decoder wandelt die Modellausgabe in lesbaren Text um und hält dabei mehrere mögliche Wortfolgen gleichzeitig offen, bevor er sich für die wahrscheinlichste entscheidet. Im selben Durchgang bestimmt das Modell automatisch die gesprochene Sprache, sofern sie nicht vorher fest vorgegeben wurde. Am Ende liefert der Server eine JSON-Antwort mit dem Transkript zurück, die die aufrufende Anwendung in der eigenen Datenbank ablegt.
Schritt-für-Schritt-Umsetzung
Docker Compose für den Speaches-Server einrichten
Speaches ist ein quelloffener Server, der faster-whisper intern nutzt und dieselbe Schnittstelle wie die Cloud-API von OpenAI anbietet, sodass sich bestehender Anwendungscode ohne größere Änderungen umstellen lässt. Die folgende Compose-Datei startet die GPU-Variante des Servers, bindet einen Modell-Cache als eigenes Docker-Volume ein und reserviert die komplette Grafikkarte für den Container.
services:
speaches:
image: ghcr.io/speaches-ai/speaches:latest-cuda-12.6.3
container_name: speaches
restart: unless-stopped
ports:
- "8000:8000"
volumes:
- hf-hub-cache:/home/ubuntu/.cache/huggingface/hub
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
volumes:
hf-hub-cache:
Ohne eigene GPU entfällt der Abschnitt deploy, und für den reinen CPU-Betrieb steht eine eigene Compose-Konfiguration ohne CUDA-Image bereit. Das Volume hf-hub-cache ist der wichtigste Teil der Konfiguration: Fehlt es, lädt der Container bei jedem Neustart alle Modelldateien erneut von Hugging Face herunter, weil der Cache sonst nur im flüchtigen Dateisystem des Containers liegt.
- Docker und Docker Compose V2 auf dem Zielserver installieren.
- Die Compose-Datei als compose.yaml im Arbeitsverzeichnis speichern.
- Den Befehl docker compose up -d ausführen, um den Container im Hintergrund zu starten.
- Beim ersten Transkriptionsaufruf ein Modell auswählen; der Server lädt es automatisch von Hugging Face herunter und hält es danach im Cache-Volume vor.
- Über einen Aufruf des Endpunkts /health prüfen, ob der Server erreichbar ist, bevor die eigene Anwendung angebunden wird.
Transkription per API-Aufruf anstoßen
Der Server nimmt Anfragen über den Endpunkt /v1/audio/transcriptions per POST-Aufruf entgegen, denselben Pfad, den auch die Cloud-API von OpenAI verwendet. Eine Audiodatei und der Name des gewünschten Modells werden dabei als Formulardaten mitgeschickt.
curl -s "http://localhost:8000/v1/audio/transcriptions" \
-F "file=@meeting-2026-08-20.wav" \
-F "model=Systran/faster-whisper-large-v3" \
-F "response_format=json"
Aus einer TypeScript-Anwendung heraus sieht derselbe Aufruf mit der eingebauten fetch-Funktion von Node.js so aus:
const formData = new FormData();
formData.append("file", audioBlob, "meeting-2026-08-20.wav");
formData.append("model", "Systran/faster-whisper-large-v3");
formData.append("response_format", "verbose_json");
const response = await fetch("http://transkription.intern:8000/v1/audio/transcriptions", {
method: "POST",
body: formData,
});
if (!response.ok) {
throw new Error("Transkriptionsdienst antwortete mit Status " + response.status);
}
const ergebnis = await response.json();
const text = ergebnis.text;
const segmente = ergebnis.segments;
Bei response_format=json enthält die Antwort nur ein Feld text mit dem vollständigen Transkript. Die ausführlichere Variante verbose_json liefert zusätzlich die erkannte Sprache, die Gesamtdauer der Audiodatei und ein Array segments mit den einzelnen Sprachabschnitten samt Zeitstempel, genau in dem Format, das auch die Cloud-API von OpenAI zurückgibt.
Modellgröße nach Genauigkeit und Rechenleistung wählen
Whisper existiert in fünf Größenstufen, die sich in Parametern, benötigtem Grafikspeicher und Verarbeitungsgeschwindigkeit deutlich unterscheiden. OpenAI stellt außerdem die Version turbo bereit, ein auf Geschwindigkeit optimiertes Modell, das für die Übersetzung fremder Sprachen ins Englische allerdings nicht trainiert ist.
| Modell | Parameter | Benötigter Grafikspeicher | Geschwindigkeit relativ zu large-v3 |
|---|---|---|---|
| tiny | 39 Millionen | ca. 1 GB | ca. 10x |
| base | 74 Millionen | ca. 1 GB | ca. 7x |
| small | 244 Millionen | ca. 2 GB | ca. 4x |
| medium | 769 Millionen | ca. 5 GB | ca. 2x |
| large-v3 | 1.550 Millionen | ca. 10 GB | 1x, Referenzwert |
| turbo | 809 Millionen | ca. 6 GB | ca. 8x |
Die Größenstufe entscheidet direkt über die Fehlerquote: OpenAI nennt in der Ankündigung von large-v3 eine Reduktion der Wortfehlerrate, kurz WER, um 10 bis 20 Prozent gegenüber dem Vorgänger large-v2, in den Sprachen, in denen beide Modelle ohnehin unter 60 Prozent Fehlerrate liegen. Die Wortfehlerrate misst den Anteil falsch erkannter, ausgelassener oder zusätzlich eingefügter Wörter gegenüber einer von Menschen erstellten Referenztranskription. Unabhängige Nachtests auf einzelnen Sprachen weichen von diesen offiziellen Werten teils deutlich ab, was zeigt, dass die tatsächliche Fehlerrate stark vom jeweiligen Sprachmaterial abhängt und sich nicht blind auf den eigenen Anwendungsfall übertragen lässt. Für deutschsprachige Meetings mit klarer Aufnahmequalität liefert schon das medium-Modell in der Praxis brauchbare Ergebnisse bei rund der Hälfte der Rechenzeit von large-v3; bei Fachvokabular, Dialekt oder mehreren gleichzeitig sprechenden Personen zahlt sich der Sprung auf large-v3 dagegen aus.
Häufige Fehlerquellen
- Container startet nicht wegen fehlender cuDNN-Version: faster-whisper verlangt cuDNN 9 in Kombination mit CUDA 12; ein älterer Treiber oder ein älteres Basis-Image bricht beim Laden der Bibliothek mit einer Fehlermeldung zur fehlenden Programmbibliothek ab. Abhilfe schafft ein Container-Image mit passender CUDA- und cuDNN-Version, etwa der Tag latest-cuda-12.6.3, oder eine manuelle Installation der passenden Nvidia-Pakete für CUDA 12 und cuDNN 9.
- Modell wird bei jedem Neustart neu heruntergeladen: Fehlt das Docker-Volume für den Hugging-Face-Cache, verliert der Container beim Neustart sämtliche bereits geladenen Modelldateien und lädt sie erneut, was je nach Modellgröße mehrere Minuten dauert. Die Lösung ist ein dauerhaftes Volume für den Cache-Ordner, das die Dateien außerhalb des Containers speichert und einen Neustart übersteht.
- Speicherüberlauf bei hohem Batch-Wert auf der GPU: Ein höherer batch_size-Wert verarbeitet mehrere Audiosegmente gleichzeitig und beschleunigt dadurch die Transkription, braucht dafür aber deutlich mehr Grafikspeicher; auf einer GPU mit wenig VRAM führt das zu einem Abbruch mit einer Speicherüberlauf-Fehlermeldung. Ein niedrigerer batch_size-Wert oder int8-Quantisierung, eine Rechenweise mit reduzierter Zahlengenauigkeit, senkt den Speicherbedarf spürbar.
- Erfundene Sätze bei stillen oder leisen Audiopassagen: Whisper wurde auch auf Audiomaterial mit Musik oder Hintergrundgeräuschen trainiert und ordnet solchen Abschnitten gelegentlich plausibel klingenden, aber frei erfundenen Text zu, ein von OpenAI selbst dokumentiertes Verhalten. Die in faster-whisper eingebaute Sprachaktivitätserkennung auf Basis des Modells Silero VAD filtert stille Abschnitte vor der eigentlichen Erkennung heraus und reduziert dieses Verhalten deutlich.
- Falsche Modellgröße für den verfügbaren Durchsatz gewählt: Wer large-v3 auf einem reinen CPU-Server für nahezu Echtzeit-Transkription einsetzt, wartet ein Vielfaches der Audiolänge auf das Ergebnis, weil large-v3 laut Herstellerangabe die langsamste Größenstufe ist. Für zeitkritische Anwendungen auf CPU-Hardware liefert das kleinere small- oder medium-Modell einen praktikableren Kompromiss aus Geschwindigkeit und Genauigkeit.
Häufig gestellte Fragen
Ab welchem monatlichen Transkriptionsvolumen lohnt sich ein selbstgehostetes Whisper gegenüber der Cloud-API?
Ein selbstgehostetes Whisper lohnt sich gegenüber der Cloud-API rechnerisch ab einem Volumen von grob 880 Stunden Audio pro Monat, wenn dafür eine durchgehend laufende GPU gemietet wird. Die Whisper-API von OpenAI kostet 0,006 US-Dollar pro Minute; eine Grafikkarte vom Typ Nvidia A40 mit 48 GB Grafikspeicher kostet beim Cloud-Anbieter RunPod in der isolierten Secure Cloud, die sich für vertrauliche Aufnahmen eher eignet als die günstigere, geteilte Community Cloud, 0,44 US-Dollar pro Stunde, macht bei durchgehendem Betrieb rund 317 US-Dollar im Monat. Bei 880 Stunden Audio, umgerechnet 52.800 Minuten, kostet dieselbe Menge über die Cloud-API ebenfalls rund 317 US-Dollar, sodass die eigene GPU ab diesem Volumen günstiger wird und bei weiterem Wachstum immer günstiger bleibt, weil ihr Preis fix ist. Läuft die GPU dagegen nur bei tatsächlichem Bedarf statt rund um die Uhr, verschiebt sich die Rechnung deutlich: Die veröffentlichten Benchmark-Werte von faster-whisper zeigen auf einer kleineren Consumer-Grafikkarte für die schnellste GPU-Konfiguration eine reine Rechenzeit von 16 Sekunden für eine 13-minütige Aufnahme, knapp 49-mal schneller als die Audiolänge selbst, sodass 500 Stunden Audio im Monat nur rund 10 Stunden tatsächliche Rechenzeit benötigen und selbst mit großzügigem Aufschlag für Warteschlangen und Verwaltung im niedrigen zweistelligen Dollarbereich bleiben, deutlich unter den 180 US-Dollar, die dieselbe Menge über die Cloud-API kosten würde.
Wie viel schneller ist faster-whisper als die Referenzimplementierung von OpenAI?
faster-whisper ist nach Angaben des Projekts bis zu viermal schneller als die Referenzimplementierung von OpenAI, bei gleicher Genauigkeit und geringerem Speicherbedarf. In einem vom Projekt selbst veröffentlichten Test auf einer Nvidia RTX 3070 Ti transkribierte die Referenzimplementierung eine 13-minütige Audiodatei mit dem large-v2-Modell in 2 Minuten und 23 Sekunden, faster-whisper mit derselben Genauigkeit in 1 Minute und 3 Sekunden und mit zusätzlicher int8-Quantisierung sowie gebündelter Verarbeitung mehrerer Segmente in nur 16 Sekunden. Der Geschwindigkeitsgewinn kommt vor allem von CTranslate2, der Inferenz-Engine hinter faster-whisper, die das Modell für die jeweilige Hardware neu kompiliert, statt es wie die Referenzimplementierung generisch auszuführen.
Warum erfindet Whisper manchmal Sätze, die im Audio gar nicht vorkommen?
Whisper erfindet manchmal Sätze, die im Audio gar nicht vorkommen, weil das Modell neben der reinen Spracherkennung auch eine Sprachvorhersage gelernt hat und diese bei fehlendem oder schwachem Sprachsignal die Oberhand gewinnt. OpenAI benennt dieses als Halluzination bezeichnete Verhalten im eigenen Model Card ausdrücklich als bekannte Einschränkung: Weil das Training auch stille oder musikalische Passagen mit Text aus dem Trainingsmaterial verknüpft hat, kann das Modell bei ähnlichen Passagen plausibel klingenden, aber komplett erfundenen Text ausgeben. In der Praxis tritt das am häufigsten am Anfang und Ende einer Aufnahme sowie bei langen Pausen auf, und eine vorgeschaltete Sprachaktivitätserkennung reduziert das Risiko deutlich, indem sie solche Abschnitte erst gar nicht an das Erkennungsmodell weiterreicht.
Welche Whisper-Modellgröße eignet sich für die Transkription von Meetings auf einer normalen Büro-GPU?
Für die Transkription von Meetings auf einer normalen Büro-GPU mit 6 bis 8 GB Grafikspeicher eignet sich das medium-Modell oder die auf Geschwindigkeit optimierte turbo-Version am besten. Beide benötigen deutlich weniger Grafikspeicher als large-v3 mit seinen rund 10 GB und verarbeiten Audio nach Herstellerangabe zwei- bis achtmal schneller, während sie für sauber aufgenommene Geschäftssprache in der Praxis kaum spürbar hinter der Genauigkeit von large-v3 zurückbleiben. Bei mehreren gleichzeitig sprechenden Personen, starkem Akzent oder schlechter Aufnahmequalität lohnt sich trotzdem der Wechsel auf large-v3, weil die höhere Parameterzahl genau in diesen schwierigen Fällen den größten Genauigkeitsgewinn bringt.