
语音和实时视频帧输入,语音输出通过一个插槽,包含56个语音,通话中工具调用,以及分开的文本和音频令牌率。
语音和实时视频帧输入,语音输出通过一个插槽,包含56个语音,通话中工具调用,以及分开的文本和音频令牌率。
会话通过套接字配置 session.update 事件,而非请求参数。文本和音频令牌按不同的费率计费。
也称为 Alibaba Cloud Qwen3.8 Omni Flash Realtime
qwen3-8-omni-flash-realtime/v1/realtimeqwen3.8-omni-flash-realtimealibaba/qwen3-8-omni-flash-realtime来自 EmpirioLabs 目录的实时按量计费价格。只为实际用量付费,没有月度最低消费。
Qwen3.8 Omni Flash Realtime 通过 wss://api.empiriolabs.ai/v1/realtime?model=qwen3-8-omni-flash-realtime 的 WebSocket 进行实时对话,而不是通过 HTTP 端点。使用模型 id qwen3-8-omni-flash-realtime 连接,并在握手时将 EmpirioLabs API 密钥作为 Authorization: Bearer 请求头发送。音频以 base64 编码的 16 位 PCM 双向传输。 浏览器无法为 WebSocket 设置请求头,请从你的服务器发起该连接,再通过你自己的 socket 把音频转发给浏览器。 在EmpirioLabs 控制台获取 API 密钥。
import asyncio, json, os, websockets
async def main():
async with websockets.connect(
"wss://api.empiriolabs.ai/v1/realtime?model=qwen3-8-omni-flash-realtime",
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.audio.delta":
... # base64 audio chunk, append to your playback buffer
elif event["type"] == "response.done":
break
asyncio.run(main())EmpirioLabs 上 Qwen3.8 Omni Flash Realtime API 支持的请求参数。省略字段时使用默认值。
| 参数 | 类型 | 默认值 | 范围 / 值 | 描述 |
|---|---|---|---|---|
| voice | enum | Tina | Tina, Cindy, Liora Mira, Raymond, Zane, Katerina, Ryan, Mia, ... | 会话的语音。在模型产生任何音频之前,先用 session.update 设置。这些语音是该模型特有的。 |
| instructions | string | - | - | 系统指导模型在对话中应如何行为和表达。 |
| modalities | string | ["text","audio"] | - | 模型返回哪种输出类型,轮回一回合。去掉音频,只用文字回复。 |
| input_audio_format | enum | pcm16 | pcm16 | 你附加到输入缓冲区的音频编码:base64 16位PCM,频率为16 kHz。 |
| output_audio_format | enum | pcm24 | pcm24 | 该型号回流的音频编码:16位PCM,频率为24 kHz。 |
| turn_detection | string | {"type":"server_vad"} | - | 语音活动检测:判断你说完话后模型应回复。默认开启,server_vad,暂停后结束回合。semantic_vad还会判断你是否说完话,填充音和背景噪音不会结束回合,semantic_vad_ec同样会让你更容易打断回复。阈值是默认的数字,从-1到1,0.5;数值越高,需要更清晰、更大声的语音才能计数。silence_duration... |
| max_response_output_tokens | number | - | 1 到 65536 | 一个回复可能使用的最大输出令牌数:从1到65536,其中更大的数值在65536处,或“inf”表示模型自身的极限。也被接受为max_output_tokens。若省略,则适用模型自身的默认值。 |
| temperature | number | - | 0 到 1.99 | 采样温度。0是确定性的,1.99是最大随机性。如果省略,则适用模型自身的默认值。 |
| top_p | number | - | 0.01 到 1 | 核抽样概率质量。值越低,输出越聚焦。省略时,模型自身默认值生效。 |
| top_k | integer | - | 1 到 100 | 仅从K个最可能的token中抽样。若省略,则适用模型自身的默认值。 |
| repetition_penalty | number | - | 0.1 到 2 | 值越高,越不鼓励重复表达,1 则不施加惩罚。若省略,则适用模型自身的默认值。 |
| presence_penalty | number | - | -2 到 2 | 对已出现在生成文本中的标记施加惩罚。正值鼓励新的主题。若省略,则适用模型自身的默认值。 |
| seed | integer | - | 0 到 2147483647 | 随机种子以实现更可重复的采样。重用相同请求的种子返回的输出相似,但不总是相同。 |
| video_representation_compact | enum | - | none, normal | 模型读取你发送的视频帧的方式:没有帧保留完整细节,正常模式会读取四分之一输入标记的相同帧,当不需要细致细节时。如果省略,帧则保留完整细节。设置在第一个音频之前;之后不能更改。 |
通过 WebSocket 进行全双工语音,wss://api.empiriolabs.ai/v1/realtime?model=qwen3-8-omni-flash-realtime,并用普通授权承载头进行认证。通过套接字配置session.update会话,包含语音、指令、模态、转向检测、采样以及回复长度限制max_response_output_tokens。
该型号的音色与Qwen3.5 Omni Realtime型号不同。从语音列表中选择一个,而不是携带语音,或者保持未设置,默认音色会为你提供。
音频和文本代币在双向中分别定价,每个完成回合的使用量均根据模型报告的使用量单独计费。
在 EmpirioLabs,Qwen3.8 Omni Flash Realtime 按量计费:输入:音频 $1.86 每 1M 音频输入令牌; 输入 $0.46 每100万个提示词标记; 输出 $1.40 每100万个生成代币; 输出:音频 $3.74 每1M生成的音频标记。本页的实时价格表始终与 API 的实际计费一致。
Qwen3.8 Omni Flash Realtime 支持 192K token 的上下文窗口,每次响应最多 65,536 个输出 token。
Qwen3.8 Omni Flash Realtime 通过 api.empiriolabs.ai 上的 WEBSOCKET /v1/realtime 提供,使用标准的 Bearer 令牌认证。
打开EmpirioLabs Playground并点击 Start session,即可在浏览器中试用。Qwen3.8 Omni Flash Realtime 运行在 WebSocket 上,而不是一次请求一次响应,因此接入时请从实时语音快速入门开始。用 EmpirioLabs API 密钥和模型 id qwen3-8-omni-flash-realtime 从你的服务器连接,然后双向流式传输音频。
创建 EmpirioLabs 账户,然后在控制台的 API Keys生成密钥。计费使用按量付费的额度,只为实际发出的请求付费。