Qwen3-Omni-Flash-Realtime

复制成功!
加入对比
实时全模态

概述

实时全模态

千问3-Omni-Flash多模态大模型的实时版,基于Thinker–Talker混合专家(MoE)架构,支持文本、图像、音频、视频的高效理解与语音生成能力,可进行119种语言文本交互和20种语言语音交互,生成类人语音实现跨语言精准沟通。模型具备强大指令跟随与系统提示定制功能,灵活适配对话风格与角色设定,广泛应用于文本创作、语音助手、多媒体分析等场景,提供自然流畅的多模态交互体验。

输入

文本图像视频音频

输出

文本音频

功能

前缀补全

函数调用

缓存

结构化输出

批量任务

联网搜索

微调

定价

  • 输入:文本
    ¥2.2/M tokens
  • 输入:音频
    ¥18.9/M tokens
  • 输入:图片/视频
    ¥3.9/M tokens
  • 输出:文本(输入仅包含文本时)
    ¥8.3/M tokens
  • 输出:文本(输入包含图片/音频/视频时)
    ¥15.2/M tokens
  • 输出:文本+音频(输出的文本不计费)
    ¥75.1/M tokens

上下文

上下文
65.53K
最大输入
49.15K
最大输出
16.38K

速率限制

  • RPM每分钟请求数
    60
  • TPM每分钟 Token 数
    100K

API 参考

获取 API Key
复制成功!
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
# 依赖:dashscope >= 1.23.9,pyaudio
import os
import base64
import time

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


url = f'wss://dashscope.aliyuncs.com/api-ws/v1/realtime'
# 配置 API Key,若没有设置环境变量,请用 API Key 将下行替换为 dashscope.api_key = "sk-xxx"
dashscope.api_key = os.getenv('DASHSCOPE_API_KEY')
# 指定音色
voice = 'Ethan'
# 指定模型
model = 'qwen3-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_event(self, response):
        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对话结束")