AssemblyAI's Universal series embodies cutting-edge speech-to-text (STT) technology designed to convert spoken language into highly accurate and readable text. The models are trained on over 12.5 million hours of multilingual audio data, excelling in complex real-world conversational scenarios by effectively handling multiple speakers, accents, and background noise with high fidelity.
Universal leverages a Conformer encoder combined with a recurrent neural network transducer (RNN-T) model to achieve fast and accurate speech recognition. Its encoder features convolutional layers for 4x subsampling, positional encoding, and 24 Conformer layers with approximately 600 million parameters. The model uses chunk-wise attention over 8-second audio segments to improve processing speed and handle varying audio lengths effectively. The decoder consists of a two-layer LSTM predictor and joiner, employing a WordPiece tokenizer trained on multilingual text corpora. This architecture supports highly parallelized computation and precise word-level timestamping, making it ideal for low-latency, large-scale inference.
vs GPT-5: GPT-5 features an extremely large 400,000-token context window and advanced hierarchical reasoning capabilities. It excels at handling complex, multi-step tasks that go beyond speech transcription, making it more suitable for large-scale language understanding and generation, rather than real-time STT processing.
vs GPT-4.1: GPT-4.1 specializes in coding-related tasks and structured code manipulation, with a smaller context window compared to GPT-5. While it offers less extensive multimodal support, it is optimized for developer-focused scenarios rather than broad speech recognition or multimodal integration.
vs OpenAI o3: OpenAI o3 primarily serves legacy agent tasks and provides basic image understanding capabilities. It has higher latency compared to Universal AssemblyAI and delivers less accurate multimodal reasoning, making it less suited for modern real-time transcription and multimodal applications.
Measured on the AI/ML API gateway across live traffic. Figures are medians unless stated. Last updated 2026-10-12.
import requests, time headers = {"Authorization": "Bearer " + AIMLAPI_KEY} job = requests.post( "https://api.aimlapi.com/v1/stt/create", headers=headers, json={ "model": "aai/universal", "url": "https://example.com/audio.mp3" }, ).json() gid = job["generation_id"] while True: res = requests.get(f"https://api.aimlapi.com/v1/stt/{gid}", headers=headers).json() if res.get("status") in ("completed", "error", "failed"): break time.sleep(3) print(res)
const headers = { Authorization: `Bearer ${process.env.AIMLAPI_KEY}`, "Content-Type": "application/json", }; const job = await (await fetch("https://api.aimlapi.com/v1/stt/create", { method: "POST", headers, body: JSON.stringify({ "model": "aai/universal", "url": "https://example.com/audio.mp3" }), })).json(); let res; do { await new Promise((r) => setTimeout(r, 3000)); res = await (await fetch(`https://api.aimlapi.com/v1/stt/${job.generation_id}`, { headers })).json(); } while (!["completed", "error", "failed"].includes(res.status)); console.log(res);
# submit the job — the response contains "generation_id" curl -X POST https://api.aimlapi.com/v1/stt/create \ -H "Authorization: Bearer $AIMLAPI_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"aai/universal","url":"https://example.com/audio.mp3"}' # then poll for the result until it is ready curl "https://api.aimlapi.com/v1/stt/{generation_id}" -H "Authorization: Bearer $AIMLAPI_KEY"
OpenAI-compatible — swap the base URL and it works with your existing SDK.
| Type | Price |
|---|---|
| Output | |
| Model | Input | Output | Context | Best for |
|---|---|---|---|---|
Universal This page | Transcription | |||
| Speech synthesis | ||||
| Speech synthesis | ||||
| Speech synthesis | ||||
| Speech synthesis |
Universal takes audio as input and returns text.
Universal is priced at output $0.0000975 / sec.
Universal was built by Assembly AI.
Send a request to v1/stt/create with aai/universal as the model id.
Yes. Universal is served through AI/ML API, so the same key and endpoint format used for other models applies.