> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.empiriolabs.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.empiriolabs.ai/_mcp/server.

# StepAudio 2.5 ASR Stream

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

![StepAudio 2.5 ASR Stream](https://media.empiriolabs.ai/model-logos/stepaudio-2-5-asr-stream.png)

[StepFun](/providers/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

| Field               | Value                                                          |
| ------------------- | -------------------------------------------------------------- |
| Model id            | `stepaudio-2-5-asr-stream`                                     |
| Model release date  | 2026-07-16                                                     |
| Input modalities    | Audio                                                          |
| Output modalities   | Text                                                           |
| Context window      | -                                                              |
| Weight precision    | -                                                              |
| Region              | International                                                  |
| Features            | transcription, speech_to_text, realtime, streaming_asr         |
| Native inference    | No                                                             |
| New                 | Yes                                                            |
| Supported endpoints | `WEBSOCKET /v1/realtime`                                       |
| Alternate model ids | `stepaudio-2.5-asr-stream`, `stepfun/stepaudio-2-5-asr-stream` |

## Pricing

| Charge        | Spec              | Rate   |
| ------------- | ----------------- | ------ |
| Transcription | per hour of audio | \$0.18 |

## Example request

```python
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

| Parameter            | Type   | Required | Default   | Description                                                                                 |
| -------------------- | ------ | -------- | --------- | ------------------------------------------------------------------------------------------- |
| `input_audio_format` | enum   | no       | `"pcm16"` | Encoding of the audio you append to the input buffer: base64 16-bit PCM. · Allowed: `pcm16` |
| `language`           | string | no       | -         | 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`.