Serveur API Whisper : Options d'installation et étape de traitement du texte
Un serveur API Whisper est un service HTTP qui accepte de l'audio et retourne une transcription. Il ne gère que la parole ; toute opération ultérieure sur le texte nécessite un modèle de traitement du texte distinct.
Mis à jour le

Points clés
- Whisper est un modèle de reconnaissance vocale ; un serveur l'enveloppe derrière un endpoint HTTP.
- Vous pouvez louer un endpoint hébergé, auto-héberger un wrapper ou exécuter un binaire local.
- Cette API est uniquement textuelle : elle traite l'étape suivant la transcription, et non l'étape audio.
- Les deux étapes sont connectées par quelques lignes de Python en utilisant le SDK OpenAI deux fois.
La réponse courte
Whisper est un modèle de reconnaissance vocale open-source publié par OpenAI. En soi, il s'agit d'un fichier modèle et d'un code d'inférence. Un serveur place une interface HTTP devant celui-ci, permettant à votre application d'envoyer un fichier audio et de recevoir du texte au lieu d'appeler directement des fonctions Python.
La plupart des serveurs reproduisent la forme de l'endpoint de transcription OpenAI, POST /v1/audio/transcriptions, qui accepte un téléchargement multipart avec le fichier audio et un nom de modèle. Cette forme est la raison pour laquelle la même bibliothèque cliente peut communiquer avec un service hébergé, un conteneur sur votre machine ou un petit wrapper écrit par quelqu'un d'autre.
- Entrée : un fichier audio, généralement mp3, wav, m4a ou similaire.
- Sortie : du texte brut, ou du JSON avec des segments et des horodatages, selon le serveur.
- Non inclus : résumés, traduction en prose soignée, extraction des points d'action. Ceux-ci nécessitent un modèle de langage.
Trois façons d'obtenir un serveur Whisper
1. Un endpoint hébergé
OpenAI propose un endpoint de transcription hébergé, et d'autres fournisseurs vendent également des services de transcription basés sur Whisper. Vous payez à l'usage, vous ne gérez pas le matériel et vous envoyez votre audio à l'infrastructure de quelqu'un d'autre. Les modèles de facturation varient entre les fournisseurs, et les services de parole facturent généralement à la durée audio ; vérifiez leur tarification actuelle avant de vous engager sur un volume.
2. Un wrapper auto-hébergé
Plusieurs projets open-source enveloppent Whisper ou des réimplémentations de celui-ci dans un serveur web qui imite la forme de transcription OpenAI. Vous l'exécutez dans Docker sur une machine avec un GPU, ou sur CPU si vous acceptez un traitement plus lent. Cela vous donne le contrôle sur la destination de l'audio. Cela vous rend également responsable des téléchargements de modèles, des mises à jour, de la file d'attente et des redémarrages.
3. Un binaire local
Le projet whisper.cpp est un portage en C et C++ du modèle, et son dépôt inclut un exemple de serveur HTTP. Il fonctionne sur des ordinateurs portables standards et de petits serveurs, ce qui en fait un bon choix pour un prototype ou pour un utilisateur unique qui transcrit quelques enregistrements par jour. Pour des lots de centaines d'heures, un service avec GPU est généralement plus pratique.
Choisissez en fonction de trois questions : où peut voyager l'audio, combien d'heures traitez-vous par mois et qui maintiendra le service en fonctionnement. L'étape de texte décrite ci-dessous fonctionne de la même manière avec l'une des trois options.
Où s'insère une API LLM textuelle après la transcription
Une transcription brute Whisper est un mur de texte. Elle comporte peu de sauts de paragraphe, les noms des locuteurs manquent sauf si vous ajoutez une diarisation séparément, et les mots de remplissage restent présents. Whisper commet également des erreurs sur les noms de produits, le jargon et les noms propres. La plupart des projets réels ajoutent une deuxième étape qui travaille sur le texte.
Tâches typiques de la deuxième étape :
- Corriger la ponctuation, diviser en paragraphes, supprimer les faux départs.
- Résumer un appel ou une conférence en quelques points clés.
- Extraire des données structurées telles que les décisions, les noms et les dates en JSON.
- Réécrire le contenu oral sous forme d'article, de script ou de notes de spectacle.
- Traduire ou localiser le texte nettoyé.
C'est ici que ce service s'insère. Il s'agit d'une API texte compatible OpenAI avec un seul modèle, uncensored, une fenêtre de contexte de 100 000 tokens et le streaming. Une transcription d'entretien de deux heures tient souvent dans une seule requête, vous pouvez ainsi éviter la logique de découpage imposée par des fenêtres de contexte plus petites. Pour les contenus plus longs, consultez la documentation de démarrage rapide pour les détails de la requête.
Le modèle est optimisé pour répondre sans refus de contenu pour un usage adulte légal. Cela est important pour les pipelines de transcription car l'audio source est imprévisible : entretiens, podcasts, lectures de fiction et appels de support contiennent des propos forts et des sujets difficiles. Un modèle qui refuse de nettoyer une transcription parce que l'interlocuteur a juré gaspille une transcription payée. La seule limite stricte est que rien impliquant du contenu sexuel avec des mineurs n'est accepté.
Un pipeline fonctionnel en deux étapes
Le SDK Python OpenAI permet de créer deux clients avec des URLs de base différentes. L'un pointe vers votre serveur Whisper, l'autre vers cette API. Définissez les variables d'environnement pour votre propre service de transcription ; le deuxième client utilise l'URL de base de ce 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)Deux détails sont faciles à mal configurer. Premièrement, le nom du modèle de transcription est celui que votre serveur attend, c'est pourquoi il provient d'une variable d'environnement ici. Deuxièmement, la clé de l'API texte est distincte de toute clé que vous détenez pour le service de parole ; chacune authentifie uniquement son propre hôte.
Si vous préférez un shell, l'étape texte est une requête simple de complétion de chat :
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: ..."}
]
}'L'authentification utilise une clé Bearer dans l'en-tête Authorization, et les endpoints sont POST /v1/chat/completions et GET /v1/models. Vous pouvez obtenir une clé sur la page clé API ; les nouveaux comptes peuvent y obtenir un crédit d'essai gratuit de 0,50 $ en un clic, valable 7 jours et sans carte bancaire.
Points de rupture courants
Fichiers audio volumineux
De nombreux serveurs Whisper limitent la taille des téléchargements, et les enregistrements longs peuvent subir un time out au milieu d'une requête. Divisez l'audio en morceaux de dix à trente minutes avec un outil comme ffmpeg, transcrivez chaque morceau, puis assemblez le texte. Comme l'API texte accepte jusqu'à 100 000 tokens, vous pouvez concaténer les morceaux et les envoyer en tant que prompt unique. La limite du corps de la requête sur cette API est de 8 Mo, ce qui est largement suffisant pour n'importe quelle transcription.
Limites de débit et de concurrence
Une clé complète permet 8 requêtes simultanées et 300 requêtes par minute ; la clé d'essai permet 2 et 60. Si vous gérez une file d'attente avec de nombreux workers, limitez-la à la concurrence de votre clé. Au-delà, le serveur renvoie un HTTP 429, avec le code rate_limited pour les requêtes par minute ou concurrency pour trop de requêtes à la fois. Une requête en streaming conserve son slot jusqu'à la fin du flux, donc un client en attente peut occuper un slot plus longtemps que prévu. Réduisez le débit et réessayez ; si la réponse contient l'en-tête Retry-After: 5, attendez ce délai.
Erreurs de transcription invisibles au LLM
Si Whisper a entendu le mauvais mot, le modèle de texte ne voit que le mauvais mot. Il peut même lisser l'erreur et la faire paraître intentionnelle. Ajoutez un glossaire de noms et de termes dans le prompt système, et demandez au modèle de marquer les passages incertains au lieu de deviner. Pour les éléments critiques, gardez la transcription originale à côté de la version nettoyée.
Mots de remplissage hallucinés
Whisper génère parfois du texte inventé pendant les silences ou la musique. Supprimez les silences avant l'envoi, et demandez à la deuxième étape de signaler les phrases qui semblent hors contexte. Une temperature faible, comme 0,2, maintient le nettoyage proche de la source.
Ce que cette API ne fait pas
Il ne transcrit pas l'audio. Il n'y a pas d'entrée audio, pas de sortie vocale, pas de génération d'images ou de vidéos, pas d'embeddings et pas de fine-tuning. C'est un modèle texte hébergé derrière un endpoint de chat completions, géré par un fournisseur indépendant, et ce n'est pas l'API officielle d'OpenAI ou d'un autre fournisseur de modèles. Si votre projet a besoin des deux moitiés, vous avez besoin d'un serveur vocal pour la première et de ce service pour la seconde.
Les prompts ne sont pas utilisés pour l'entraînement. Cela est distinct de ce que votre fournisseur de parole fait avec l'audio ; lisez les conditions d'utilisation de ce fournisseur séparément.
Pour la planification des coûts, le côté texte est facturé par token à 0,15 $ par million de tokens d'entrée et 0,50 $ par million de tokens de sortie, prélevés sur le crédit prépayé qui n'expire jamais. La page de tarification liste les montants de rechargement et les bonus. Les requêtes échouées ou refusées ne sont pas facturées, ce qui évite que les boucles de réessai ne vous coûtent de l'argent.
Une façon sensée de commencer
- Lancez un serveur compatible Whisper, hébergé ou local, et confirmez qu'il retourne du texte pour un fichier d'une minute.
- Créez un compte, réclamez le crédit d'essai et exécutez la commande curl ci-dessus avec une courte transcription.
- Connectez les deux clients avec le script Python, en utilisant votre propre prompt système pour le style de nettoyage souhaité.
- Ajoutez une file d'attente uniquement après que le flux de fichier unique fonctionne, et dimensionnez-la à la limite de concurrence de votre clé.
La majeure partie de l'effort va dans le prompt et la gestion audio, pas dans le code de liaison. Commencez par un enregistrement que vous connaissez bien, comparez la sortie avec ce que vous avez entendu, et ajustez les instructions avant de passer à l'échelle.
Plus de guides
Questions et réponses
Un serveur API Whisper est-il identique à l'API OpenAI ?
Non. Whisper est un modèle, et un serveur est tout programme qui l'expose via HTTP. OpenAI propose une version hébergée, et de nombreux utilisateurs en déploient d'autres avec des outils open-source qui reproduisent la même méthode de transcription.
Cette API peut-elle transcrire des fichiers audio ?
Non. Elle n'accepte que du texte. Utilisez un service de parole ou votre propre serveur Whisper pour l'étape audio, puis envoyez la transcription ici.
Quel nom de modèle utiliser pour l'étape de texte ?
Utilisez uncensored comme ID de modèle, avec l'URL de base https://api.whisperapis.com/v1 et votre clé comme jeton Bearer.
Quelle est la longueur maximale d'une transcription que je peux envoyer ?
La fenêtre de contexte est de 100 000 tokens, couvrant le prompt et la completion ensemble. Cela suffit pour de nombreux enregistrements de plusieurs heures en une seule requête.
Ai-je besoin d'une carte pour l'essayer ?
Non. Les nouveaux utilisateurs peuvent obtenir un crédit d'essai de 0,50 $ en un clic sur la page clé API après l'inscription, sans carte.
Il ne vous reste qu'un formulaire pour obtenir votre clé
Créez un compte, copiez la clé, modifiez l'URL de base. C'est toute la configuration.