Qwen3.8 Omni Flash Realtime

Qwen3.8 Omni Flash Realtime
Alibaba Cloud · 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

FieldValue
Model idqwen3-8-omni-flash-realtime
Model release date2026-09-21
Input modalitiesAudio, Text, Video
Output modalitiesAudio, Text
Context window192K
Weight precision-
Max output tokens65,536
RegionSingapore
Featuresrealtime, speech_to_speech, audio_in, audio_out, video, function_calling, multilingual
Native inferenceNo
NewYes
Supported endpointsWEBSOCKET /v1/realtime
Alternate model idsqwen3.8-omni-flash-realtime, alibaba/qwen3-8-omni-flash-realtime

Pricing

ChargeSpecRate
Input: audioper 1M audio input tokens$1.86
Inputper 1M prompt tokens$0.46
Outputper 1M generated tokens$1.40
Output: audioper 1M generated audio tokens$3.74

Example request

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

ParameterTypeRequiredDefaultDescription
voiceenumno"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
instructionsstringno-System guidance for how the model should behave and speak during the conversation.
modalitiesstringno["text", "audio"]Which output types the model returns for a turn. Drop audio for a text-only reply.
input_audio_formatenumno"pcm16"Encoding of the audio you append to the input buffer: base64 16-bit PCM at 16 kHz. · Allowed: pcm16
output_audio_formatenumno"pcm24"Encoding of the audio the model streams back: 16-bit PCM at 24 kHz. · Allowed: pcm24
turn_detectionstringno{"type": "server_vad"}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.