OpenAI · ASR
Whisper Large V3
Multilingual speech recognition for accurate transcription, translation and timestamps.
whisper-large-v3-1Current model-specific price from our catalog. Requests require your project API key and sufficient balance. Availability is checked at execution time.
Input and capabilities
Upload a short audio or video file using multipart/form-data: at most 30 seconds and 20 MiB. Use WAV for the examples below. Container compatibility depends on the model.
- transcription
- word timestamps
- segment timestamps
Automatic language detection: supported.
Supported language codes: en, zh, de, es, ru, ko, fr, ja, pt, tr, pl, ca, nl, ar, sv, it, id, hi, fi, vi, he, uk, el, ms, cs, ro, da, hu, ta, no, th, ur, hr, bg, lt, la, mi, ml, cy, sk, te, fa, lv, bn, sr, az, sl, kn, et, mk, br, eu, is, hy, ne, mn, bs, kk, sq, sw, gl, mr, pa, si, km, sn, yo, so, af, oc, ka, be, tg, sd, gu, am, yi, lo, uz, fo, ht, ps, tk, nn, mt, sa, lb, my, bo, tl, mg, as, tt, haw, ln, ha, ba, jv, su, yue.
API endpoint
POST https://api.speechinfra.com/v1/inference/whisper-large-v3-1
Authenticate with your Speechinfra project key. Read the quickstart and billing guide.
cURL
curl --fail-with-body "https://api.speechinfra.com/v1/inference/whisper-large-v3-1" \
-H "Authorization: Bearer $SPEECH_API_KEY" \
-F "file=@clip.wav" \
--form-string "language=auto" \
--form-string "task=transcribe" \
--form-string "temperature=0" \
--form-string "timestamps=none"Python
# pip install httpx
import os
import httpx
headers = {"Authorization": "Bearer " + os.environ["SPEECH_API_KEY"]}
with open("clip.wav", "rb") as audio:
response = httpx.post(
"https://api.speechinfra.com/v1/inference/whisper-large-v3-1",
headers=headers, files={"file": ("clip.wav", audio, "audio/wav")},
data={
"language": "auto",
"task": "transcribe",
"temperature": "0",
"timestamps": "none"
}, timeout=90,
)
response.raise_for_status()
print(response.json())Node.js / fetch
// Node.js 22+, no SDK required.
import { readFile } from 'node:fs/promises';
const form = new FormData();
form.set('file', new Blob([await readFile('clip.wav')]), 'clip.wav');
for (const [key, value] of Object.entries({
"language": "auto",
"task": "transcribe",
"temperature": "0",
"timestamps": "none"
})) form.set(key, value);
const response = await fetch("https://api.speechinfra.com/v1/inference/whisper-large-v3-1", {
method: 'POST', body: form, signal: AbortSignal.timeout(90000),
headers: { Authorization: 'Bearer ' + process.env.SPEECH_API_KEY },
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());Request parameters
Generated from the API schema for this deployment. Conditional parameters apply only when their controlling setting is enabled.
| Parameter | Type | Details |
|---|---|---|
fileRequired | string | Short audio or video file. Direct API limit: 30 seconds, 20 MiB. |
language | string | Spoken language. Auto-detect when omitted. enum: auto, en, zh, de, es, ru, ko, fr, ja, pt, tr, pl … · default: "auto" All accepted values[ "auto", "en", "zh", "de", "es", "ru", "ko", "fr", "ja", "pt", "tr", "pl", "ca", "nl", "ar", "sv", "it", "id", "hi", "fi", "vi", "he", "uk", "el", "ms", "cs", "ro", "da", "hu", "ta", "no", "th", "ur", "hr", "bg", "lt", "la", "mi", "ml", "cy", "sk", "te", "fa", "lv", "bn", "sr", "az", "sl", "kn", "et", "mk", "br", "eu", "is", "hy", "ne", "mn", "bs", "kk", "sq", "sw", "gl", "mr", "pa", "si", "km", "sn", "yo", "so", "af", "oc", "ka", "be", "tg", "sd", "gu", "am", "yi", "lo", "uz", "fo", "ht", "ps", "tk", "nn", "mt", "sa", "lb", "my", "bo", "tl", "mg", "as", "tt", "haw", "ln", "ha", "ba", "jv", "su", "yue", "zh-CN", "zh-TW" ] |
task | string | transcribe keeps the original language; translate renders English output. enum: transcribe, translate · default: "transcribe" All accepted values[ "transcribe", "translate" ] |
prompt | string | Context or preferred spelling; upstream limit is 224 tokens. max 2000 chars |
temperature | number | default: 0 · min: 0 · max: 1 |
timestamps | string | enum: none, segment, word, both · default: "none" All accepted values[ "none", "segment", "word", "both" ] |
Complete request schema
{
"type": "object",
"additionalProperties": false,
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"format": "binary",
"description": "Short audio or video file. Direct API limit: 30 seconds, 20 MiB."
},
"language": {
"type": "string",
"default": "auto",
"description": "Spoken language. Auto-detect when omitted.",
"enum": [
"auto",
"en",
"zh",
"de",
"es",
"ru",
"ko",
"fr",
"ja",
"pt",
"tr",
"pl",
"ca",
"nl",
"ar",
"sv",
"it",
"id",
"hi",
"fi",
"vi",
"he",
"uk",
"el",
"ms",
"cs",
"ro",
"da",
"hu",
"ta",
"no",
"th",
"ur",
"hr",
"bg",
"lt",
"la",
"mi",
"ml",
"cy",
"sk",
"te",
"fa",
"lv",
"bn",
"sr",
"az",
"sl",
"kn",
"et",
"mk",
"br",
"eu",
"is",
"hy",
"ne",
"mn",
"bs",
"kk",
"sq",
"sw",
"gl",
"mr",
"pa",
"si",
"km",
"sn",
"yo",
"so",
"af",
"oc",
"ka",
"be",
"tg",
"sd",
"gu",
"am",
"yi",
"lo",
"uz",
"fo",
"ht",
"ps",
"tk",
"nn",
"mt",
"sa",
"lb",
"my",
"bo",
"tl",
"mg",
"as",
"tt",
"haw",
"ln",
"ha",
"ba",
"jv",
"su",
"yue",
"zh-CN",
"zh-TW"
]
},
"task": {
"type": "string",
"enum": [
"transcribe",
"translate"
],
"default": "transcribe",
"description": "transcribe keeps the original language; translate renders English output."
},
"prompt": {
"type": "string",
"maxLength": 2000,
"description": "Context or preferred spelling; upstream limit is 224 tokens."
},
"temperature": {
"type": "number",
"minimum": 0,
"maximum": 1,
"default": 0
},
"timestamps": {
"type": "string",
"enum": [
"none",
"segment",
"word",
"both"
],
"default": "none"
}
}
}Response schema
The schema below describes the response; optional fields depend on model settings.
View complete response schema
{
"$defs": {
"Segment": {
"properties": {
"id": {
"title": "Id",
"type": "string"
},
"start": {
"title": "Start",
"type": "number"
},
"end": {
"title": "End",
"type": "number"
},
"text": {
"title": "Text",
"type": "string"
},
"speaker": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Speaker"
},
"language": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Language"
},
"words": {
"items": {
"$ref": "#/$defs/Word"
},
"title": "Words",
"type": "array"
}
},
"required": [
"id",
"start",
"end",
"text"
],
"title": "Segment",
"type": "object"
},
"Word": {
"properties": {
"word": {
"title": "Word",
"type": "string"
},
"start": {
"title": "Start",
"type": "number"
},
"end": {
"title": "End",
"type": "number"
},
"confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Confidence"
},
"speaker": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Speaker"
}
},
"required": [
"word",
"start",
"end"
],
"title": "Word",
"type": "object"
}
},
"properties": {
"text": {
"title": "Text",
"type": "string"
},
"language": {
"default": "und",
"title": "Language",
"type": "string"
},
"language_confidence": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Language Confidence"
},
"duration": {
"default": 0,
"title": "Duration",
"type": "number"
},
"segments": {
"items": {
"$ref": "#/$defs/Segment"
},
"title": "Segments",
"type": "array"
},
"words": {
"items": {
"$ref": "#/$defs/Word"
},
"title": "Words",
"type": "array"
}
},
"required": [
"text"
],
"title": "PublicTranscriptionResult",
"type": "object"
}