> 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.

# Qwen3.5 Omni Flash Realtime

> Speech in, speech out, over one socket, with separate text and audio token rates and per-turn billing.

![Qwen3.5 Omni Flash Realtime](https://media.empiriolabs.ai/model-logos/qwen3-5-omni-flash-realtime.png)

[Alibaba Cloud](/providers/alibaba) · Audio Generation

`WEBSOCKET /v1/realtime`

Speech in, speech out, over one socket, with separate text and audio token rates and per-turn billing.

## At a glance

| Field               | Value                                                                |
| ------------------- | -------------------------------------------------------------------- |
| Model id            | `qwen3-5-omni-flash-realtime`                                        |
| Model release date  | -                                                                    |
| Input modalities    | Audio, Text                                                          |
| Output modalities   | Audio, Text                                                          |
| Context window      | 256K                                                                 |
| Weight precision    | -                                                                    |
| Max output tokens   | 32,768                                                               |
| Region              | Singapore                                                            |
| Features            | realtime, speech_to_speech, audio_in, audio_out, multilingual        |
| Native inference    | No                                                                   |
| New                 | Yes                                                                  |
| Supported endpoints | `WEBSOCKET /v1/realtime`                                             |
| Alternate model ids | `qwen3.5-omni-flash-realtime`, `alibaba/qwen3-5-omni-flash-realtime` |

## Pricing

| Charge        | Spec                          | Rate    |
| ------------- | ----------------------------- | ------- |
| Input: audio  | per 1M audio input tokens     | \$9.00  |
| Input         | per 1M prompt tokens          | \$1.10  |
| Output        | per 1M generated tokens       | \$6.60  |
| Output: audio | per 1M generated audio tokens | \$35.40 |

## Example request

```python
import asyncio, json, os, websockets

URL = "wss://api.empiriolabs.ai/v1/realtime?model=qwen3-5-omni-flash-realtime"

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                                                                                                                                                                                                                                                       |
| --------------------- | ------ | -------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `voice`               | enum   | no       | `"Tina"`                           | Speaking voice for the session. Set it with session.update before the model produces any audio. · Allowed: `Tina`, `Serena`, `Ethan`, `Dylan`, `Sunny`, `Peter`, `Kiki`, `Eric`                                                                                   |
| `instructions`        | string | no       | -                                  | System guidance for how the model should behave and speak during the conversation.                                                                                                                                                                                |
| `modalities`          | string | no       | `["text", "audio"]`                | Which output types the model returns for a turn. Drop "audio" for a text-only reply.                                                                                                                                                                              |
| `input_audio_format`  | enum   | no       | `"pcm"`                            | Encoding of the audio you append to the input buffer: base64 16-bit PCM. · Allowed: `pcm`                                                                                                                                                                         |
| `output_audio_format` | enum   | no       | `"pcm"`                            | Encoding of the audio the model streams back: base64 16-bit PCM. · Allowed: `pcm`                                                                                                                                                                                 |
| `turn_detection`      | string | no       | `&#123;"type": "server_vad"&#125;` | Server-side voice activity detection. Decides when you have stopped speaking and the model should reply. Without it the model listens but never answers, so leave it on unless you are driving turns yourself with input_audio_buffer.commit and response.create. |

## Notes

Full-duplex voice over a WebSocket at wss\://api.empiriolabs.ai/v1/realtime?model=qwen3-5-omni-flash-realtime, authenticated with the ordinary Authorization Bearer header. Configure the session with session.update over the socket: voice, instructions, modalities, and turn detection. This model's voices differ from the earlier Omni generation, so set one it accepts or leave the default; an unknown voice ends the session rather than returning an error. Text and audio tokens are priced separately, and each completed turn is billed on its own from the usage the model reports.

---

*Machine-readable schema:* `GET https://api.empiriolabs.ai/v1/models/qwen3-5-omni-flash-realtime`.