Qwen3.8-Omni-Flash-Realtime

复制成功!
立即体验加入对比

概述

Qwen3.8-Omni-Flash-Realtime 通过多种实时协议提供音视频双工交互,面向智能硬件、机器人与实时交互 Agent。支持多通道音频输入与多种通道布局,视频表征可在细粒度与聚合之间按精度与开销选择,支持 60+ 语言音频输入和 30+ 语言语音输出;工具侧支持 Function Call 与 MCP 服务接入,具备工具发现、调用审批与结果续轮的完整事件链。可以在高速实时响应的同时,编排复杂业务逻辑和支持上百个工具的调用,同时拥有生动、多样的声音生成能力。

输入

文本图像音频视频

输出

文本音频

功能

前缀补全

调用通义千问 API 时启用 Partial Mode,可让模型严格接续您提供的前缀文本进行生成。查看文档

函数调用

通过函数调用将大模型与外部工具和系统连接起来。查看文档

缓存

Context Cache 会缓存长上下文请求的公共前缀,减少重复计算、提升响应速度并降低成本。查看文档

结构化输出

结构化输出可确保模型返回符合预期格式的 JSON 字符串。查看文档

批量任务

异步批量处理请求,降低调用成本。查看文档

联网搜索

启用联网搜索后,模型可基于实时检索的数据进行回答。查看文档

微调

基于样本数据训练模型,使其更适配特定任务。查看文档

定价

  • 输入:音频
    ¥6/M tokens
  • 输出:文本
    ¥4.5/M tokens
  • 输出:文本+音频(输出的文本不计费)
    ¥12/M tokens
  • 输入:文本/图片/视频
    ¥1.5/M tokens

速率限制

  • TPM每分钟 Token 数
    2M
  • RPM每分钟请求数
    60

API 参考

调用API
复制成功!
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
# 依赖:dashscope >= 1.23.9,pyaudio
import os
import json
import sys
import base64
import time

import pyaudio
from dashscope.audio.qwen_omni import MultiModality, AudioFormat,OmniRealtimeCallback,OmniRealtimeConversation
import dashscope


url = f'wss://cn-beijing.maas.qianwenaiapi.com/api-ws/v1/realtime'
# 配置 API Key,若没有设置环境变量,请用 API Key 将下行替换为 dashscope.api_key = "sk-xxx"
dashscope.api_key = os.getenv('DASHSCOPE_API_KEY')
# 指定音色
voice = 'Tina'
# 指定模型
model = 'qwen3.8-omni-flash-realtime'
# 指定模型角色
instructions = "你是个人助理小云,请用幽默风趣的方式回答用户的问题"
class SimpleCallback(OmniRealtimeCallback):
    def __init__(self, pya):
        self.pya = pya
        self.out = None
    def on_open(self):
        # 初始化音频输出流
        self.out = self.pya.open(
            format=pyaudio.paInt16,
            channels=1,
            rate=24000,
            output=True
        )
    def on_close(self, close_status_code, close_msg):
        print(f"[Connection closed] code={close_status_code}, reason={close_msg}", file=sys.stderr, flush=True)

    def on_event(self, response):
        if response['type'] == 'error':
            print(json.dumps(response, ensure_ascii=False), file=sys.stderr, flush=True)
            return
        if response['type'] == 'response.audio.delta':
            # 播放音频
            self.out.write(base64.b64decode(response['delta']))
        elif response['type'] == 'conversation.item.input_audio_transcription.completed':
            # 打印转录文本
            print(f"[User] {response['transcript']}")
        elif response['type'] == 'response.audio_transcript.done':
            # 打印助手回复文本
            print(f"[LLM] {response['transcript']}")

# 1. 初始化音频设备
pya = pyaudio.PyAudio()
# 2. 创建回调函数和会话
callback = SimpleCallback(pya)
conv = OmniRealtimeConversation(model=model, callback=callback, url=url)
# 3. 建立连接并配置会话
conv.connect()
conv.update_session(output_modalities=[MultiModality.AUDIO, MultiModality.TEXT], voice=voice, instructions=instructions)
# 4. 初始化音频输入流
mic = pya.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True)
# 5. 主循环处理音频输入
print("对话已开始,对着麦克风说话 (Ctrl+C 退出)...")
try:
    while True:
        audio_data = mic.read(3200, exception_on_overflow=False)
        conv.append_audio(base64.b64encode(audio_data).decode())
        time.sleep(0.01)
except KeyboardInterrupt:
    # 清理资源
    conv.close()
    mic.close()
    callback.out.close()
    pya.terminate()
    print("\n对话结束")