> 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.8 Omni Flash Realtime

> Speech and live video frames in, speech out over one socket, with 56 voices, tool calling during the conversation, and separate text and audio token rates.

![Qwen3.8 Omni Flash Realtime](https://media.empiriolabs.ai/model-logos/qwen.png)

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

`WEBSOCKET /v1/realtime`

Speech and live video frames in, speech out over one socket, with 56 voices, tool calling during the conversation, and separate text and audio token rates.

## At a glance

| Field               | Value                                                                                  |
| ------------------- | -------------------------------------------------------------------------------------- |
| Model id            | `qwen3-8-omni-flash-realtime`                                                          |
| Model release date  | 2026-09-21                                                                             |
| Input modalities    | Audio, Text, Video                                                                     |
| Output modalities   | Audio, Text                                                                            |
| Context window      | 192K                                                                                   |
| Weight precision    | -                                                                                      |
| Max output tokens   | 65,536                                                                                 |
| Region              | Singapore                                                                              |
| Features            | realtime, speech_to_speech, audio_in, audio_out, video, function_calling, multilingual |
| Native inference    | No                                                                                     |
| New                 | Yes                                                                                    |
| Supported endpoints | `WEBSOCKET /v1/realtime`                                                               |
| Alternate model ids | `qwen3.8-omni-flash-realtime`, `alibaba/qwen3-8-omni-flash-realtime`                   |

## Pricing

| Charge        | Spec                          | Rate   |
| ------------- | ----------------------------- | ------ |
| Input: audio  | per 1M audio input tokens     | \$1.86 |
| Input         | per 1M prompt tokens          | \$0.46 |
| Output        | per 1M generated tokens       | \$1.40 |
| Output: audio | per 1M generated audio tokens | \$3.74 |

## Example request

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

URL = "wss://api.empiriolabs.ai/v1/realtime?model=qwen3-8-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. These voices are specific to this model. · Allowed: `Tina`, `Cindy`, `Liora Mira`, `Raymond`, `Zane`, `Katerina`, `Ryan`, `Mia`, `Cici`, `Theo Calm`, `Serena`, `Maia`, `Evan`, `Qiao`, `Momo`, `Wil`, `Angel`, `Li Cassian`, `Joyner`, `Gold`, `Jennifer`, `Aiden`, `Mione`, `Sunny`, `Dylan`, `Eric`, `Peter`, `Joseph Chen`, `Marcus`, `Li`, `Rocky`, `Kiki`, `Sohee`, `Eliška`, `Alek`, `Arda`, `Dolce`, `Lenn`, `Ono Anna`, `Sonrisa`, `Bodega`, `Andre`, `Radio Gol`, `Rizky`, `Roya`, `Hana`, `Jakub`, `Griet`, `Marina`, `Siiri`, `Ingrid`, `Sigga`, `Bea`, `Chloe`, `Emilien`, `longanlingxin` |
| `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       | `"pcm16"`                          | Encoding of the audio you append to the input buffer: base64 16-bit PCM at 16 kHz. · Allowed: `pcm16`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `output_audio_format` | enum   | no       | `"pcm24"`                          | Encoding of the audio the model streams back: 16-bit PCM at 24 kHz. · Allowed: `pcm24`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `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. It is on by default on this model.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |

## Notes

**Connecting**

Full-duplex voice over a WebSocket at `wss://api.empiriolabs.ai/v1/realtime?model=qwen3-8-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.

**Sending audio and video**

* Append microphone audio as `input_audio_buffer.append` events.
* Append live video frames as `input_image_buffer.append` events. Frames are not message content, so an image inside a conversation item is rejected.
* Voice activity detection decides when you have stopped speaking, so keep streaming for about a second after the speech ends.

**Voices**

The voices on this model are not the same set as the Qwen3.5 Omni realtime models. Pick one from the voice list rather than carrying a voice across, or leave it unset and the default is supplied for you.

**Billing**

Audio and text tokens are priced separately in both directions, 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-8-omni-flash-realtime`.