

StepAudio 3 Realtime and StepAudio 2.5 Realtime side by side: specs, capabilities, parameters, and live pricing from the EmpirioLabs catalog.
StepAudio 3 Realtime and StepAudio 2.5 Realtime are both StepFun models in the Audio Generation category, available through the EmpirioLabs API.
| Spec | StepAudio 3 Realtime | StepAudio 2.5 Realtime |
|---|---|---|
| Model ID | stepaudio-3-realtime | stepaudio-2-5-realtime |
| Author | StepFun | StepFun |
| Released | Aug 6, 2026 | Jul 16, 2026 |
| Context window | 256K tokens | 256K tokens |
| Max output | 131,072 tokens | 131,072 tokens |
| Input | Audio Text | Audio Text |
| Output | Audio Text | Audio Text |
| Region | International | International |
| Endpoints | WEBSOCKET /v1/realtime | WEBSOCKET /v1/realtime |
| Capabilities |
Live rates from the EmpirioLabs catalog for both models. Each rate card always matches what the API charges.
Request parameters each model lists on EmpirioLabs, with the allowed values or range where one applies. A dash marks a parameter the model does not list.
| Parameter | StepAudio 3 Realtime | StepAudio 2.5 Realtime |
|---|---|---|
| voice | soft-spoken-gentleman, magnetic-voiced-male, vibrant-youth, l... Default: soft-spoken-gentleman | soft-spoken-gentleman, magnetic-voiced-male, vibrant-youth, l... Default: soft-spoken-gentleman |
| instructions | string | string |
| modalities | string Default: ["text","audio"] | string Default: ["text","audio"] |
| volume_ratio | 0.1 to 2 Default: 1 | 0.1 to 2 Default: 1 |
| input_audio_format | pcm16 Default: pcm16 | pcm16 Default: pcm16 |
| output_audio_format | pcm16 Default: pcm16 | pcm16 Default: pcm16 |
| turn_detection | string Default: {"type":"server_vad"} | string Default: {"type":"server_vad"} |
Full-duplex voice over a WebSocket at wss://api.empiriolabs.ai/v1/realtime?model=stepaudio-3-realtime, authenticated with the ordinary Authorization Bearer header. Audio is pcm16 in and out. The model listens while it speaks, so it can be interrupted mid-reply, and server-side voice activity detection decides when to answer. Set voice with session.update before the first audio; it cannot be changed once the model has spoken, and only the seven listed voices are accepted. Conversation is Chinese and English only. A session is billed by its length, from when it opens until it closes, in whole seconds, with a partial second counted as a full second. This model is in preview and its capabilities may change.
Full-duplex voice over a WebSocket at wss://api.empiriolabs.ai/v1/realtime?model=stepaudio-2-5-realtime, authenticated with the ordinary Authorization Bearer header. Audio is pcm16 in and out. The model listens while it speaks, so it can be interrupted mid-reply, and server-side voice activity detection decides when to answer. Set voice with session.update before the first audio; it cannot be changed once the model has spoken, and only the seven listed voices are accepted. Conversation is Chinese and English only. Each completed turn is billed on its own from the usage the model reports.
StepAudio 3 Realtime holds a live conversation over a WebSocket at wss://api.empiriolabs.ai/v1/realtime?model=stepaudio-3-realtime, not over the HTTP endpoints. Connect with the model id stepaudio-3-realtime and send your EmpirioLabs API key as an Authorization: Bearer header on the handshake. Audio travels both ways as base64 16-bit PCM. A browser cannot set headers on a WebSocket, so open this connection from your server and relay audio to the browser over your own socket. Both models are called through the same endpoint. Set model to stepaudio-3-realtime or stepaudio-2-5-realtime. Get an API key from the EmpirioLabs dashboard.
import asyncio, json, os, websockets
async def main():
async with websockets.connect(
"wss://api.empiriolabs.ai/v1/realtime?model=stepaudio-3-realtime",
additional_headers=[
("Authorization", f"Bearer {os.environ['EMPIRIOLABS_API_KEY']}"),
],
max_size=None,
) as ws:
print(json.loads(await ws.recv())["type"]) # session.created
await ws.send(json.dumps({
"type": "conversation.item.create",
"item": {
"type": "message",
"role": "user",
"content": [{"type": "input_text", "text": "Say hello."}],
},
}))
await ws.send(json.dumps({"type": "response.create"}))
async for raw in ws:
event = json.loads(raw)
if event["type"] == "response.audio.delta":
... # base64 audio chunk, append to your playback buffer
elif event["type"] == "response.done":
break
asyncio.run(main())StepAudio 3 Realtime is the newer release (Aug 6, 2026); StepAudio 2.5 Realtime was released on Jul 16, 2026. Both models have a context window of 256K tokens. The specs, rate cards, and parameters on this page come from the live EmpirioLabs catalog.
StepAudio 3 Realtime is the newer release (Aug 6, 2026); StepAudio 2.5 Realtime was released on Jul 16, 2026.
The two models are priced on different units or tiers, so compare the live rate cards on this page. They always match what the API charges.
Yes. Both models use WEBSOCKET /v1/realtime with the same EmpirioLabs API key, so most integrations switch by changing the model value. Check the parameters table on this page first if you rely on a model-specific parameter.
Yes. Open each model in the EmpirioLabs playground and press Start session to try it in your browser.
Check out our pricing or reach out if you want your own model deployed on our stack.