StepAudio 2.5 ASR Stream API

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

StepFunTranscriptionReleased Jul 16, 2026InternationalProprietary EndpointNew

About StepAudio 2.5 ASR Stream

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

EmpirioLabs exposes the standard /v1/audio/transcriptions endpoint and returns the final transcript in the normal transcription response format.

Also known as StepAudio ASR Stream, StepFun StepAudio 2.5 ASR Stream

transcriptionspeech to textrealtimestreaming asr

StepAudio 2.5 ASR Stream specs

Model ID
stepaudio-2-5-asr-stream
Author
StepFun
Category
Transcription
Released
Jul 16, 2026
Input
Audio
Output
Text
Region
International
Endpoints
WEBSOCKET/v1/realtime
Alternate model IDs
stepaudio-2.5-asr-streamstepfun/stepaudio-2-5-asr-stream

StepAudio 2.5 ASR Stream API pricing

Live pay-as-you-go rates from the EmpirioLabs catalog. You are billed only for what you use, with no monthly minimum.

Type
Spec
Rate
Transcription
per hour of audio
$0.18
Compare on the full pricing page

How to call the StepAudio 2.5 ASR Stream API

StepAudio 2.5 ASR Stream transcribes a live audio stream over a WebSocket at wss://api.empiriolabs.ai/v1/realtime?model=stepaudio-2-5-asr-stream, not over the HTTP endpoints. Connect with the model id stepaudio-2-5-asr-stream and send your EmpirioLabs API key as an Authorization: Bearer header on the handshake. Append base64 16-bit PCM audio and read transcript events back while the speaker is still talking. 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. Get an API key from the EmpirioLabs dashboard.

Python (websockets)
import asyncio, json, os, websockets

async def main():
    async with websockets.connect(
        "wss://api.empiriolabs.ai/v1/realtime?model=stepaudio-2-5-asr-stream",
        additional_headers=[
            ("Authorization", f"Bearer {os.environ['EMPIRIOLABS_API_KEY']}"),
        ],
        max_size=None,
    ) as ws:
        print(json.loads(await ws.recv())["type"])  # session.created

        import base64

        # 16-bit PCM microphone audio, base64 encoded, in small chunks.
        for chunk in read_microphone_chunks():
            await ws.send(json.dumps({
                "type": "input_audio_buffer.append",
                "audio": base64.b64encode(chunk).decode(),
            }))

        await ws.send(json.dumps({"type": "input_audio_buffer.commit"}))

        async for raw in ws:
            event = json.loads(raw)
            if event["type"].endswith("input_audio_transcription.delta"):
                # "text" is settled transcript; "stash" is still in progress.
                if event.get("text"):
                    print(event["text"], end="", flush=True)

asyncio.run(main())
Full StepAudio 2.5 ASR Stream API reference

StepAudio 2.5 ASR Stream API parameters

Request parameters supported by the StepAudio 2.5 ASR Stream API on EmpirioLabs. Defaults apply when a field is omitted.

ParameterTypeDefaultRange / valuesDescription
input_audio_formatenumpcm16pcm16Encoding of the audio you append to the input buffer: base64 16-bit PCM.
languagestring--Optional language hint. Omit to let the model detect it.

Good to know

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.

StepAudio 2.5 ASR Stream API: common questions

How much does the StepAudio 2.5 ASR Stream API cost?

On EmpirioLabs, StepAudio 2.5 ASR Stream is billed pay as you go: Transcription $0.18 per hour of audio. The live rate card on this page always matches what the API charges.

Which endpoint does StepAudio 2.5 ASR Stream use?

StepAudio 2.5 ASR Stream is served through WEBSOCKET /v1/realtime on api.empiriolabs.ai with standard bearer-token authentication.

Can I try StepAudio 2.5 ASR Stream in the browser before integrating?

StepAudio 2.5 ASR Stream runs over a WebSocket rather than a request and response, so start from the realtime voice quickstart. Connect from your server with your EmpirioLabs API key and the model id stepaudio-2-5-asr-stream, then stream audio in both directions.

How do I get a StepAudio 2.5 ASR Stream API key?

Create an EmpirioLabs account, then generate a key under API Keys in the dashboard. Billing is pay-as-you-go credits, so you only pay for the requests you make.

Ready to use better endpoints?

Check out our pricing or reach out if you want your own model deployed on our stack.