Skip to navigation

StepAudio 2.5 ASR Stream

StepAudio 2.5 ASR Stream
StepFun · Transcription
WEBSOCKET /v1/realtime

Live transcription over a socket, returning partial results as the speaker talks, with voice activity detection marking each sentence.

At a glance

FieldValue
Model idstepaudio-2-5-asr-stream
Model release date2026-07-16
Input modalitiesAudio
Output modalitiesText
Context window-
Weight precision-
RegionInternational
Featurestranscription, speech_to_text, realtime, streaming_asr
Native inferenceNo
NewYes
Supported endpointsWEBSOCKET /v1/realtime
Alternate model idsstepaudio-2.5-asr-stream, stepfun/stepaudio-2-5-asr-stream

Pricing

ChargeSpecRate
Transcriptionper hour of audio$0.18

Example request

import asyncio, json, os, websockets
URL = "wss://api.empiriolabs.ai/v1/realtime?model=stepaudio-2-5-asr-stream"
async def main():
async with websockets.connect(
URL,
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.done":
break
asyncio.run(main())

Parameters

ParameterTypeRequiredDefaultDescription
input_audio_formatenumno"pcm16"Encoding of the audio you append to the input buffer: base64 16-bit PCM. · Allowed: pcm16
languagestringno-Optional language hint. Omit to let the model detect it.

Notes

Live transcription over a WebSocket at wss://api.empiriolabs.ai/v1/realtime?model=stepaudio-2-5-asr-stream, authenticated with the ordinary Authorization Bearer header. Stream 16 kHz pcm16 audio up with input_audio_buffer.append and read partial results back as the speaker is still talking, with server-side voice activity detection marking where each sentence ends. Use this for live captions and voice input; for a finished recording, POST /v1/audio/transcriptions returns the whole transcript in one call. Billing follows the duration of audio you stream, settled when the session closes.


Machine-readable schema: GET https://api.empiriolabs.ai/v1/models/stepaudio-2-5-asr-stream.