Model APIs
Whisper-1
Envoyez un fichier audio à transcrire ou traduire en anglais, consultez sa tâche et téléchargez du texte, du JSON ou des sous-titres.
Whisper-1 convertit la parole enregistrée en texte. Utilisez /v1/audio/transcriptions pour conserver la langue parlée ou /v1/audio/translations pour produire de l’anglais. Les deux acceptent multipart/form-data avec un fichier envoyé. SeedRouter renvoie d’abord un ID de tâche ; téléchargez le résultat choisi une fois la tâche terminée. Ce fonctionnement diffère d’une réponse synchrone du SDK OpenAI.
Playground et tarifs en vigueur · Premier tutoriel de transcription · OpenAPI · Markdown
Envoyer un enregistrement
Conservez votre clé API sur le serveur. Laissez votre client HTTP générer la délimitation multipart ; ne définissez pas manuellement un simple en-tête Content-Type: multipart/form-data.
curl https://api.seedrouter.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-F model=whisper-1 \
-F [email protected] \
-F language=en \
-F response_format=verbose_json \
-F 'timestamp_granularities[]=word' \
-F 'timestamp_granularities[]=segment'La réponse confirme une tâche, pas une transcription terminée :
{
"id": "task_example",
"model": "whisper-1",
"status": "processing",
"created_at": 1792376116
}Enregistrez l’id réellement renvoyé. Envoyez une seule fois. Une perte de connexion ne permet pas de savoir si la requête a été acceptée ; consultez l’historique des tâches avant de créer une nouvelle requête.
Lire le résultat
curl "https://api.seedrouter.ai/v1/tasks/$TASK_ID" \
-H "Authorization: Bearer $SEEDROUTER_API_KEY"Interrogez la tâche tant que status vaut processing. Une tâche terminée contient output.url et output.format ; une tâche échouée contient error.code et error.message. Un délai d’attente dépassé lors de l’interrogation n’est pas un état final. Seul le propriétaire de la tâche peut la lire. Les exemples suivants illustrent la structure de réponse :
{
"id": "task_example",
"model": "whisper-1",
"status": "completed",
"output": {
"format": "verbose_json",
"url": "https://static.seedrouter.ai/media/tasks/task_example/0.json"
}
}Téléchargez output.url avec une requête GET distincte. Lisez un résultat JSON en tant que JSON et les autres formats en tant que texte. Les réponses publiques des tâches n’incluent ni prix ni informations de compte.
Paramètres de transcription
file et model sont obligatoires. Les neuf champs ci-dessous constituent l’interface de requête partagée, y compris file, model et stream, explicitement ignoré. chunking_strategy reste une lacune de compatibilité, comme décrit ci-dessous.
| Champ | Type | Valeur par défaut | Contrat |
|---|---|---|---|
file | Envoi binaire | Obligatoire | Un fichier audio non vide, pas une URL ou un nom de fichier sous forme de chaîne. Voir les limites de fichiers. |
model | Chaîne | Obligatoire | Exactement whisper-1. |
language | Chaîne | Détection automatique | Indication de langue d’entrée, par exemple en. Aucune liste locale de langues autorisées n’est imposée. Omettez pour la détection. |
prompt | Chaîne | Omis | Contexte, orthographe ou continuation dans la langue de l’audio. Aucune limite de caractères n’est inventée ; Whisper prend en compte les 224 derniers tokens de son propre tokenizer. Ce n’est pas un prompt d’instructions générales. |
response_format | Chaîne | json | json, text, srt, verbose_json ou vtt. |
temperature | Nombre | 0 | Intervalle inclusif 0–1. Zéro autorise l’ajustement automatique de température du modèle ; il ne garantit pas un texte déterministe. |
timestamp_granularities[] | Chaîne répétée | Horodatage par segments si applicable | word, segment, ou les deux. Nécessite response_format=verbose_json. Le nom de champ répété sans crochets timestamp_granularities est aussi accepté. |
chunking_strategy | auto, objet VAD ou null | Omis | Champ du schéma audio partagé dont l’applicabilité à Whisper reste indéterminée. Omettez-le pour le parcours vérifié. auto explicite a échoué à la vérification réelle de compatibilité. |
stream | Booléen ou null | false | Ignoré pour Whisper-1. Aucun SSE ni transcription partielle n’est produit. |
L’objet VAD contient type: "server_vad" obligatoire, l’entier facultatif prefix_padding_ms (valeur documentée par défaut : 300), l’entier facultatif silence_duration_ms (valeur documentée par défaut : 200) et le nombre facultatif threshold de 0 à 1 (valeur documentée par défaut : 0,5). Aucun intervalle d’entiers non documenté n’est imposé. Une stratégie omise reste omise ; ces valeurs d’objet par défaut ne font pas d’auto la valeur par défaut de la requête.
Pour la compatibilité SDK, l’objet VAD peut être encodé dans une partie multipart JSON ou sous les formes chunking_strategy[type], chunking_strategy[prefix_padding_ms], chunking_strategy[silence_duration_ms] et chunking_strategy[threshold]. Ne mélangez pas les deux encodages. L’acceptation de ces formes de champs ne prouve pas que la VAD fonctionne avec ce modèle.
Les champs texte facultatifs doivent être omis, plutôt que transmis sous la chaîne multipart littérale null. Les champs inconnus ou non applicables au modèle sont écartés. En particulier, diarized_json, les contrôles de références de locuteurs, logprobs et les événements temps réel ne sont pas des fonctionnalités de Whisper-1. Les champs scalaires en double sont invalides.
Limites de fichiers
Les formats audio documentés sont FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV et WebM. Le plafond d’envoi actuel est de 26 214 400 octets (25 MiB). La FAQ de l’API Audio d’OpenAI précise une taille maximale de requête de 25 MiB pour les envois Whisper-1 historiques ; gardez les fichiers sous ce plafond pour laisser de la place aux champs multipart. Les fichiers doivent contenir un audio lisible et une durée positive mesurable. Une extension seule ne prouve pas la validité de l’audio.
Il n’existe aucune limite locale supplémentaire d’une heure, aucune fréquence d’échantillonnage fixe exigée ni restriction au mono. La taille du fichier peut néanmoins imposer de découper les longs enregistrements. Vérifiez les jonctions entre les parties pour éviter d’omettre ou de répéter de la parole.
Traduction vers l’anglais
curl https://api.seedrouter.ai/v1/audio/translations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-F model=whisper-1 \
-F [email protected] \
-F response_format=text \
-F temperature=0La traduction possède cinq champs : file, model, prompt, response_format et temperature, avec les mêmes types et limites que ci-dessus. Son prompt facultatif doit être en anglais. La langue cible n’est pas sélectionnable. language, les contrôles d’horodatage, de découpage et les autres champs propres à la transcription sont écartés sur cet endpoint. Une vérification de traduction réussie sur une entrée anglaise ne démontre pas la précision pour chaque langue source.
Champs du résultat téléchargé
| Format | Contenu |
|---|---|
json | Objet avec text. La transcription peut aussi inclure usage: {type: "duration", seconds: number}. |
text | Texte brut de la transcription. |
srt | Blocs de sous-titres numérotés avec codes temporels SRT. |
vtt | Sous-titres WebVTT. |
verbose_json | text, language et duration en secondes ; segments facultatif et, pour la transcription, words ainsi que usage fondé sur la durée. |
Chaque mot possède word, start et end. Chaque segment possède id, seek, start, end, text, tokens, temperature, avg_logprob, compression_ratio et no_speech_prob. start et end sont en secondes. Les segments n’identifient pas les locuteurs. La constante propre à la transcription task: "transcribe" peut être présente. Les résultats de traduction omettent words et usage, propres à la transcription. Les mesures audio et le texte transcrit ne sont pas réécrits pour imiter une réponse attendue.
Facturation
Les deux opérations utilisent la durée d’entrée mesurée. Pour chaque enregistrement, les unités de mesure audio valent round(ceil(seconds) × 1000 / 60). Multipliez ces unités par le tarif unitaire en vigueur ; ces unités ne comptent pas le texte transcrit. Par exemple, 15 secondes donnent 250 unités, tandis que 15,1 secondes donnent 267 unités. La page et le Playground lisent le même tarif en vigueur. Les requêtes échouées ne sont pas facturées.
État de vérification
Vérifié le 19 octobre 2026. Les tests locaux de bout en bout ont terminé les cinq formats de sortie de transcription et une traduction verbose_json, y compris les téléchargements de résultats appartenant au compte et les débits exacts. Une transcription a demandé avec succès l’horodatage des mots et des segments. Les envois FLAC, OGG, M4A, MP4 et WAV d’une durée inférieure à une seconde ou fractionnaire ont passé des vérifications réelles de compatibilité distinctes.
chunking_strategy=auto explicite a été refusé. Trois cas soumis impliquant WebM, MPEG avec VAD et MPGA avec stream=true n’ont pas abouti. Ces échecs ne permettent pas d’établir lequel des réglages combinés a causé le refus. Ces formats et options restent non vérifiés ; le service ne remplace pas silencieusement une stratégie explicitement demandée. Le test de traduction utilisait une entrée anglaise, la qualité de traduction entre langues reste donc non mesurée. Ne considérez pas le schéma accepté comme la preuve que chaque combinaison a passé un test réel.
Erreurs et reprise
Les combinaisons invalides de fichiers et paramètres sont refusées avant la création d’une tâche. Les erreurs API contiennent un code numérique et un message lisible ; voir les codes d’erreur. Après acceptation, vérifiez l’état final de la tâche. Pour un envoi incertain, retrouvez sa tâche existante avant d’envoyer à nouveau. Une tâche échouée n’est pas facturée.
Sources du contrat
- Référence de transcription OpenAI
- Référence de traduction OpenAI
- Guide OpenAI de conversion parole en texte
- Guide OpenAI des prompts Whisper
OpenAI a annoncé l’arrêt de Whisper dans sa propre API pour le 26 février 2027. Cette annonce ne fixe pas de date d’arrêt pour ce service. Consultez l’avis de dépréciation OpenAI.
