Endpoints
Transcription (reconnaissance vocale)
POST /audio/transcriptions : transformez de l'audio en texte avec Whisper, GPT-4o Transcribe, Deepgram, Voxtral et d'autres modèles de transcription.
Essayer dans le playgroundTransformez la parole en texte (reconnaissance vocale, STT) avec Whisper, GPT-4o Transcribe, Deepgram, Voxtral et d'autres modèles de transcription. L'endpoint suit le POST /audio/transcriptions d'OpenAI, donc client.audio.transcriptions.create(...) fonctionne sans modification.
POST https://api14.com/api/v1/audio/transcriptions
Requête
Envoyez du multipart/form-data avec le fichier audio (ce que font les SDK OpenAI), ou un corps JSON.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
file | file | oui | Fichier audio : mp3, mp4, m4a, wav, webm, ogg, flac. |
model | string | oui | Un identifiant de modèle de transcription, par ex. openai/whisper-1. |
language | string | non | Code ISO-639-1 (en, de), améliore la précision et la vitesse. |
prompt | string | non | Indices de vocabulaire ou texte du segment précédent. |
response_format | string | non | json (par défaut), text, srt, vtt, verbose_json quand c'est pris en charge. |
temperature | number | non | Température d'échantillonnage, 0–1. |
La limite de taille du corps de requête est de 25 Mo par défaut. Les fichiers plus gros renvoient 413 payload_too_large : découpez les longs enregistrements en morceaux.
Multipart avec cURL
curl https://api14.com/api/v1/audio/transcriptions \
-H "Authorization: Bearer sk-api14-..." \
-F model=openai/whisper-1 \
-F file=@meeting.mp3 \
-F language=en
Corps JSON
Le JSON est accepté aussi, avec l'audio en base64 pour les modèles qui le permettent :
{
"model": "openai/whisper-1",
"input_audio": { "data": "<base64>", "format": "mp3" },
"language": "en"
}
Exemple
import fs from "node:fs";
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.audio.transcriptions.create({
model: "openai/whisper-1",
file: fs.createReadStream("audio.mp3"),
});
console.log(result.text);
Réponse
{
"text": "Thanks everyone for joining. Let's start with the roadmap.",
"usage": { "type": "duration", "seconds": 42, "cost": 0.0042 }
}
Avec response_format: "text", srt ou vtt, le corps est du texte brut au lieu de JSON.
Tarifs
La transcription est facturée au prix indiqué du modèle, affiché en « $ / minute » (ou par token pour les modèles facturés au token). Le montant est renvoyé dans usage.cost et débité de votre solde en USD.
Erreurs
| Statut | Code | Quand |
|---|---|---|
| 400 | invalid_body | Le corps multipart n'a pas pu être analysé. |
| 400 | model_required | Le champ model est manquant. |
| 402 | insufficient_balance | Votre solde en USD est à 0 $. |
| 404 | model_not_found | Identifiant de modèle inconnu ou désactivé. |
| 413 | payload_too_large | Le fichier dépasse la limite de taille du corps. |
Voir Erreurs.