Whisper API-server: Installatieopties en de tekststap
Een Whisper API-server is een HTTP-service die audio accepteert en een transcriptie teruggeeft. Hij behandelt alleen spraak, dus alles wat je met de woorden daarna wilt doen, vereist een apart tekstmodel.
Bijgewerkt

Belangrijkste punten
- Whisper is een speech-to-text model; een server verpakt dit achter een HTTP-endpoint.
- Je kunt een gehost endpoint huren, een wrapper zelf hosten, of een lokale binary draaien.
- Deze API is alleen voor tekst: het doet de stap na de transcriptie, niet de audiotap.
- De twee fasen verbind je met een paar regels Python door de OpenAI SDK twee keer te gebruiken.
Het korte antwoord
Whisper is een open-source spraakherkenningsmodel dat OpenAI heeft gepubliceerd. Op zichzelf is het een modelbestand en wat inferentiecode. Een server plaatst een HTTP-interface ervoor, zodat je app een audiobestand kan sturen en tekst terugkrijgt in plaats van direct Python-functies aan te roepen.
De meeste servers kopiëren de structuur van het OpenAI transcriptie-endpoint, POST /v1/audio/transcriptions, dat een multipart-upload accepteert met het audiobestand en een modelnaam. Die structuur is waarom dezelfde clientbibliotheek kan communiceren met een gehoste dienst, een container op je eigen machine, of een kleine wrapper die iemand anders heeft geschreven.
- Invoer: een audiobestand, meestal mp3, wav, m4a of vergelijkbaar.
- Uitvoer: platte tekst, of JSON met segmenten en tijdstempels, afhankelijk van de server.
- Niet inbegrepen: samenvattingen, vertaling naar vloeiend proza, extractie van actiepunten. Daarvoor heb je een taalmodel nodig.
Drie manieren om een Whisper-server te krijgen
1. Een gehost endpoint
OpenAI biedt een gehoste transcriptie-endpoint, en andere aanbieders verkopen ook op Whisper gebaseerde transcriptie. Je betaalt per gebruik, beheert geen hardware, en stuurt je audio naar de infrastructuur van een ander. Factureringsmodellen verschillen tussen aanbieders, en spraakservices rekenen vaak op basis van audioduur, dus controleer hun huidige prijzen voordat je je vastbindt aan een volume.
2. Een zelfgehoste wrapper
Verschillende open-source projecten wrappen Whisper of reimplementaties ervan in een webserver die de OpenAI-transcriptieroute nabootst. Je draait het in Docker op een machine met een GPU, of op CPU als je langzamere verwerking accepteert. Dit geeft je controle over waar de audio naartoe gaat. Het maakt je ook verantwoordelijk voor modeldownloads, updates, wachtrijen en herstarten.
3. Een lokale binary
Het whisper.cpp-project is een C- en C++-port van het model, en het repository bevat een voorbeeld HTTP-server. Het draait op gewone laptops en kleine servers, wat het een goede keuze maakt voor een prototype of voor een enkele gebruiker die een paar opnames per dag transcribeert. Voor batchtaken van honderden uren is een GPU-ondersteunde dienst meestal praktischer.
Kies op basis van drie vragen: waar mag de audio naartoe, hoeveel uren verwerk je per maand, en wie houdt de dienst draaiende? De tekststap hieronder werkt op dezelfde manier met elk van de drie.
Waar een tekst LLM API past na transcriptie
Een ruwe Whisper-transcriptie is een muur van tekst. Er zijn weinig alinea's, sprekersnamen ontbreken tenzij je diarizatie apart toevoegt, en vulwoorden blijven staan. Whisper maakt ook fouten met productnamen, jargon en eigennamen. Bijna elk echt project voegt een tweede fase toe die op de tekst werkt.
Typische taken in de tweede fase:
- Leestekens corrigeren, splitsen in alinea's, valse starts verwijderen.
- Vat een gesprek of lezing samen in een paar opsommingpunten.
- Gestructureerde data zoals beslissingen, namen en data als JSON extraheren.
- Gesproken materiaal herschrijven naar een artikel, script of shownotities.
- Vertaal of lokaliseer de opgeschoonde tekst.
Daar past deze dienst bij. Het is een OpenAI-compatibele tekst-API met één model, uncensored, een contextvenster van 100.000 tokens en streaming. Een transcriptie van een interview van twee uur past vaak in één verzoek, dus je kunt de chunking-logica overslaan die kleinere contextvensters je opleggen. Zie voor langer materiaal de quickstart-documentatie voor verzoekdetails.
Het model is afgestemd op antwoorden zonder inhoudelijke weigeringen voor wettelijk volwassen gebruik. Dat is belangrijk voor transcriptiepijplijnen omdat bronaudio onvoorspelbaar is: interviews, podcasts, fictielezingen en supportgesprekken bevatten sterke taal en moeilijke onderwerpen. Een model dat weigert een transcriptie op te schonen omdat de spreker vloekte, verspillt een betaalde transcriptierun. De enige harde limiet is dat niets met seksuele inhoud met minderjarigen wordt geaccepteerd.
Een werkende tweefasenpijplijn
De OpenAI Python SDK stelt je in staat twee clients te maken met verschillende base URLs. De ene wijst naar je Whisper-server, de andere naar deze API. Stel de omgevingsvariabelen in voor je eigen transcriptiedienst; de tweede client gebruikt de base URL voor deze site.
import os
from openai import OpenAI
# Stage 1: any Whisper-compatible transcription server you run or rent.
stt = OpenAI(base_url=os.environ["STT_BASE_URL"], api_key=os.environ["STT_KEY"])
# Stage 2: the text model.
llm = OpenAI(base_url="https://api.whisperapis.com/v1", api_key=os.environ["LLM_KEY"])
with open("call.mp3", "rb") as f:
transcript = stt.audio.transcriptions.create(
model=os.environ["STT_MODEL"], # the model name your server expects
file=f,
)
resp = llm.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": "Clean up this transcript: fix punctuation, keep every statement, no commentary."},
{"role": "user", "content": transcript.text},
],
temperature=0.2,
)
print(resp.choices[0].message.content)Twee details zijn makkelijk fout te krijgen. Ten eerste is de transcriptiemodelnaam wat je server verwacht, vandaar dat deze hier uit een omgevingsvariabele komt. Ten tweede is de sleutel voor de tekst-API gescheiden van elke sleutel die je hebt voor de spraakdienst; elk verifieert alleen zijn eigen host.
Als je de voorkeur geeft aan een shell, is de tekstfase een gewone chat completion request:
curl https://api.whisperapis.com/v1/chat/completions \
-H "Authorization: Bearer $LLM_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "user", "content": "Summarize this transcript in five bullet points: ..."}
]
}'Authenticatie is een Bearer-sleutel in de Authorization header, en de endpoints zijn POST /v1/chat/completions en GET /v1/models. Je kunt een sleutel krijgen van de API key page; nieuwe accounts kunnen daar een one-click $0,50 proeftegoed claimen, geldig voor 7 dagen en zonder creditcard.
Dingen die in de praktijk kapotgaan
Grote audiobestanden
Veel Whisper-serveren capen de uploadgrootte, en lange opnames kunnen time-out midden in een verzoek. Splits audio in stukken van tien tot dertig minuten met een tool zoals ffmpeg, transcribeer elk stuk, en voeg de tekst daarna samen. Omdat de tekst-API tot 100.000 tokens accepteert, kun je de stukken concatenaten en als één prompt versturen. De request body limiet op deze API is 8 MB, wat veel meer is dan elke transcriptie nodig heeft.
Rate- en concurrency-limits
Een volledige sleutel staat 8 gelijktijdige verzoeken en 300 verzoeken per minuut toe; de proefsleutel staat 2 en 60 toe. Als je een wachtrij draait met veel workers, cap het dan aan de concurrency van je sleutel. Te veel retourneert HTTP 429, met de code rate_limited voor verzoeken per minuut of concurrency voor te veel tegelijk. Een gestreamd verzoek houdt zijn slot vast tot de stream klaar is, dus een vastgelopen client kan een slot langer blokkeren dan je verwacht. Back off en probeer opnieuw; als de response een Retry-After: 5 header draagt, wacht dan zo lang.
Transcriptiefouten die de LLM niet ziet
Als Whisper het verkeerde woord hoorde, ziet het tekstmodel alleen het verkeerde woord. Het kan de fout zelfs gladstrijken en het er als opzettelijk uit laten zien. Zet een glossary van namen en termen in de system prompt, en vertel het model om onzekere passages te markeren in plaats van te raden. Voor kritiek materiaal houd je de originele transcriptie naast de opgeschoonde versie.
Geïmagineerde vulwoorden
Whisper produceert soms verzonnen tekst tijdens stilte of muziek. Knip stilte weg voordat je verstuurt, en vraag de tweede fase om zinnen te markeren die eruit springen. Een lage temperature, zoals 0,2, houdt de opschoning dicht bij de bron.
Wat deze API niet doet
Het transcribeert geen audio. Er is geen audio-invoer, geen spraakuitvoer, geen image- of video-generatie, geen embeddings en geen fine-tuning. Het is een gehost tekstmodel achter een chat completions endpoint, gedraaid door een onafhankelijke provider, en het is niet de officiële API van OpenAI of een andere modelvendor. Als je project beide helften nodig heeft, heb je een speech server voor de eerste en deze dienst voor de tweede nodig.
Prompts worden niet gebruikt voor training. Dat is gescheiden van wat je speech provider met de audio doet, dus lees de terms van die provider apart.
Voor kostenplanning wordt de tekstzijde gefactureerd per token tegen $0,15 per miljoen input tokens en $0,50 per miljoen output tokens, van prepaid credit dat nooit verloopt. De pricing page lijst top-up maten en bonuses op. Mislukte of geweigerde verzoeken worden niet in rekening gebracht, wat voorkomt dat retry loops je geld kosten.
Een verstandige manier om te beginnen
- Zet een Whisper-compatibele server draaiend, gehost of lokaal, en bevestig dat hij tekst retourneert voor een bestand van één minuut.
- Maak een account aan, claim het proeftegoed, en voer de curl-opdracht hierboven uit met een korte transcriptie.
- Verbind de twee clients met het Python-script, gebruik je eigen system prompt voor de opschoningsstijl die je wilt.
- Voeg een queue pas toe nadat de single-file flow werkt, en dimensioneer hem aan de concurrency van je sleutel.
Het meeste werk gaat naar de prompt en de audio-handling, niet naar de glue code. Begin met één opname die je goed kent, vergelijk de output met wat je hoorde, en pas de instructies aan voordat je schaleert.
Meer handleidingen
Vragen en antwoorden
Is een Whisper API-server hetzelfde als de OpenAI API?
Nee. Whisper is een model, en een server is elk programma dat het via HTTP blootlegt. OpenAI draait één gehoste versie, en veel mensen draaien hun eigen versie met open-source tools die dezelfde transcriptieroute kopiëren.
Kan deze API audiobestanden transcriberen?
Nee. Het accepteert alleen tekst. Gebruik een spraakservice of je eigen Whisper-server voor de audiostream, en stuur het transcript hierheen.
Welke modelnaam gebruik ik voor de tekststap?
Gebruik uncensored als model-ID, met de base URL https://api.whisperapis.com/v1 en je sleutel als Bearer-token.
Hoe lang kan een transcript zijn dat ik verstuur?
Het contextvenster is 100.000 tokens, inclusief prompt en antwoord samen. Dat is genoeg voor veel meerdaagse opnames in één verzoek.
Heb ik een creditcard nodig om het te proberen?
Nee. Nieuwe gebruikers kunnen met één klik een proeftegoed van $0,50 claimen op de API-sleutelpagina na het inloggen, zonder creditcard.
Je sleutel is nog maar één formulier verwijderd
Maak een account aan, kopieer de sleutel, pas de base URL aan. Dat is de hele setup.