Skip to main content
全模态

Qwen-Omni-Realtime

Qwen-Omni-Realtime 是千问推出的实时音视频聊天模型。能同时理解流式的音频与图像输入(例如从视频流中实时抽取的连续图像帧),并实时输出高质量的文本与音频。

支持的地域:北京、新加坡,需使用各地域的API Key 在线体验:请参见如何在线体验 Qwen-Omni-Realtime 模型?

如何使用

1. 建立连接

Qwen-Omni-Realtime 模型支持 WebSocket、WebRTC 和 AOQ 三种协议接入。WebSocket 适合服务端集成和快速接入;WebRTC 适合浏览器端、低延迟语音场景,音频通过 UDP 直接传输,内置回声消除和降噪。如果是客户端对接,且更看重稳定的延迟、弱网下的交互能力、实时双工的降噪与回声消除,可优先考虑 AOQ。协议对比与选型请参见Realtime API 概述
  • WebSocket
  • WebRTC
  • WebSocket 原生连接
  • DashScope Python SDK
  • DashScope Java SDK
连接时需要以下配置项:
配置项说明
调用地址华北2(北京)地域:wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime新加坡地域:wss://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api-ws/v1/realtime调用时请将{WorkspaceId}替换为真实的业务空间ID
查询参数查询参数为model,需指定为访问的模型名。示例:?model=qwen3.5-omni-plus-realtime
请求头使用 Bearer Token 鉴权:Authorization: Bearer DASHSCOPE_API_KEY
DASHSCOPE_API_KEY 是您在百炼上申请的API Key
# pip install websocket-client
import json
import websocket
import os

API_KEY=os.getenv("DASHSCOPE_API_KEY")
# 以下为华北2(北京)地域的URL。请将 {WorkspaceId} 替换为您的百炼业务空间ID,各地域的URL不同。
API_URL = "wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime?model=qwen3.5-omni-plus-realtime"

headers = [
    "Authorization: Bearer " + API_KEY
]

def on_open(ws):
    print(f"Connected to server: {API_URL}")
def on_message(ws, message):
    data = json.loads(message)
    print("Received event:", json.dumps(data, indent=2))
def on_error(ws, error):
    print("Error:", error)

ws = websocket.WebSocketApp(
    API_URL,
    header=headers,
    on_open=on_open,
    on_message=on_message,
    on_error=on_error
)

ws.run_forever()

2. 配置会话

发送客户端事件session.update
{
    // 该事件的id,由客户端生成
    "event_id": "event_ToPZqeobitzUJnt3QqtWg",
    // 事件类型,固定为session.update
    "type": "session.update",
    // 会话配置
    "session": {
        // 输出模态,支持设置为["text"](仅输出文本)或["text","audio"](输出文本与音频)。
        "modalities": [
            "text",
            "audio"
        ],
        // 输出音频的音色
        "voice": "Ethan",
        // 推荐写法:同时配置音频格式和采样率(仅 qwen3.5-omni-plus-realtime / qwen3.5-omni-flash-realtime 支持)
        // 输入格式:pcm / wav,默认 pcm;采样率:8000/16000/24000/48000,默认 16000
        // 输出格式:pcm / wav,默认 pcm;采样率:8000/16000/24000/48000,默认 24000
        "audio": {
            "input": {
                "format": {
                    "type": "pcm",
                    "sample_rate": 16000
                }
            },
            "output": {
                "format": {
                    "type": "pcm",
                    "sample_rate": 24000
                }
            }
        },
        // 系统消息,用于设定模型的目标或角色。
        "instructions": "你是某五星级酒店的AI客服专员,请准确且友好地解答客户关于房型、设施、价格、预订政策的咨询。请始终以专业和乐于助人的态度回应,杜绝提供未经证实或超出酒店服务范围的信息。",
        // 是否开启语音活动检测。若需启用,需传入一个配置对象,服务端将据此自动检测语音起止。
        // 设置为null表示由客户端决定何时发起模型响应。
        "turn_detection": {
            // VAD类型,取值为server_vad或semantic_vad。使用qwen3.5-omni-realtime系列模型时推荐设为semantic_vad。
            "type": "semantic_vad",
            // VAD检测阈值。建议在嘈杂的环境中增加,在安静的环境中降低。
            "threshold": 0.5,
            // 检测语音停止的静音持续时间,超过此值后会触发模型响应。取值范围 200-6000,默认 800。金融核实等短回答场景建议 500-600。
            "silence_duration_ms": 800
        }
    }
}
音频格式与采样率可配置能力仅适用于 qwen3.5-omni-plus-realtimeqwen3.5-omni-flash-realtime 模型,历史兼容字段 input_audio_format / output_audio_format 仍有效,建议采用 audio.input.format / audio.output.format 字段。
每通会话结束后,发送 session.finish 事件关闭会话,或直接断开 WebSocket 连接。同一会话不关闭会导致上下文持续累积。

3. 输入音频与图片

音频输入是推荐的主要输入方式;图片输入可选。模型也支持纯文本输入:通过 conversation.item.create 发送 input_text 类型内容,无需音频,适用于非实时对话场景。模型目录标注的“支持文本输入”包括用户纯文本对话、system instructions 和 function_call_output。输入方式取决于接入协议。
  • WebSocket
  • WebRTC
客户端通过input_audio_buffer.append和 input_image_buffer.append 事件发送 Base64 编码的音频和图片数据到服务端缓冲区。
图片可以来自本地文件,或从视频流中实时采集。
启用服务端VAD时,服务端会在检测到语音结束时自动提交数据并触发响应。禁用VAD时(手动模式),客户端必须在发送完数据后,主动调用input_audio_buffer.commit事件来提交。

4. 接收模型响应

模型的响应格式取决于配置的输出模态。
  • WebSocket
  • WebRTC

模型选型

Qwen3.5-Omni-Realtime 系列模型是千问最新推出的实时多模态模型,相比于上一代的 Qwen3-Omni-Flash-Realtime:
  • 智能水平 模型智力大幅提升,与 Qwen3.5-Plus 智能水平相当。
  • 联网搜索 原生支持联网搜索(WebSearch),模型可自主判断是否需要搜索来回应即时问题。详见联网搜索
  • 工具调用 支持 Function Calling,模型可自主判断是否需要调用外部工具,实现与外部系统的交互。详见Qwen-Omni-Realtime 系列
  • 语义打断 自动识别对话意图,避免附和声和无意义背景音触发打断。
  • 语音控制 通过语音指令控制声音大小、语速和情绪,如“语速快一些”、“声音大一些”、“用开心的语气”等。
  • 支持的语言 支持 113 种语种和方言的语音识别,以及 36 种语种和方言的语音生成。
  • 支持的音色 支持 55 种音色(47 种多语言 + 8 种方言),具体可查看音色列表
  • 声音复刻 qwen3.5-omni-plus-realtime 和 qwen3.5-omni-flash-realtime 支持声音复刻功能,可使用自定义音色进行实时对话。详见声音复刻
模型的名称、上下文、价格、快照版本等信息请参见百炼控制台;并发限流条件请参考限流

响应延迟与优化

Qwen3.5-Omni-Realtime 系列这类端到端实时多模态模型,在单个模型内同时完成语音识别、语义理解与语音生成,各环节无法像 ASR+LLM+TTS 拼接方案那样独立并行、单独优化,因此端到端方案的总响应时间通常高于拼接方案中单独的 LLM 环节。以 DashScope WebSocket API 为例,文本输入、voice=Tinasilence_duration_ms=800 场景下的实测参考值:qwen3.5-omni-flash-realtime 总响应约 5.1 秒,拼接方案中 LLM 环节单独调用约 3.1 秒,端到端比该 LLM 环节慢约 2.0 秒。以上为特定参数下的单次实测参考值,实际耗时会随输入长度、网络状况和语音活动检测(VAD)配置变化。

优化建议

  1. 优先使用 Flash 版本:实测 qwen3.5-omni-flash-realtime 总响应约 5.1 秒,qwen3.5-omni-plus-realtime 约 5.8 秒,flash 比 plus 快约 0.7 秒(714 毫秒)。对响应时效性敏感的场景建议优先选用 flash 版本。
  2. 降低网络延迟:WebSocket 连接的往返时延会直接叠加到端到端响应时间上,建议将业务服务部署在靠近所调用地域服务端的区域(该模型支持华北 2(北京)和新加坡地域),并按“1. 建立连接”中的地域说明选择对应的调用地址。

使用限制

  • 联网搜索和工具调用不兼容,不可同时开启。
  • 单次会话最长可持续 120 分钟,达到此上限后服务将主动关闭连接。
  • 模型会维护对话历史上下文,当对话轮次或累计时长超过以下限制时,将自动丢弃更早的历史信息。最大时长指模型上下文中能保留的音频或视频(图像帧)累计时长上限。
    由于视频以抽帧方式输入(建议 1 帧/秒),视频最大时长即模型能保留的图像帧累计时长。例如 240 秒表示模型最多保留最近 240 秒内收到的帧,超过后更早的帧将被丢弃。
    qwen3-omni-flash-realtime 最大轮次为 8 轮,一般会先触及轮次限制,时长限制为模型的上下文长度限制,不再单独列出。

    模型

    音频最大轮次

    视频最大轮次

    音频最大时长

    视频最大时长

    qwen3.5-omni-plus-realtime

    100轮

    50轮

    600秒

    240秒

    qwen3.5-omni-flash-realtime

    80轮

    50轮

    480秒

    120秒

    qwen3-omni-flash-realtime

    8轮

    8轮

  • 调用 close() 关闭 WebSocket 连接时,若连接刚建立即关闭(无会话交互),关闭耗时约 5-10 秒,此为正常现象。服务端需完成音频流处理、上下文缓存及推理资源初始化后才能响应关闭请求。建议异步执行 close() 操作,避免阻塞主流程。

快速开始

您需要获取与配置 API Key配置API Key到环境变量 请选择您熟悉的编程语言,通过以下步骤快速体验与 Realtime 模型实时对话的功能。
  • WebSocket
  • WebRTC
  • DashScope Python SDK
  • DashScope Java SDK
  • WebSocket(Python)
  • 准备运行环境
您的 Python 版本需要不低于 3.10。首先根据您的操作系统安装 pyaudio。
  • macOS
  • Debian/Ubuntu
  • CentOS
  • Windows
brew install portaudio && pip install pyaudio
安装完成后,通过 pip 安装依赖:
pip install websocket-client dashscope
  • 选择交互模式
    • VAD 模式(Voice Activity Detection,自动检测语音起止) 服务端自动判断用户何时开始与停止说话并作出回应。
    • Manual 模式(按下即说,松开即发送) 客户端控制语音起止。用户说话结束后,客户端需主动发送消息至服务端。
    • VAD 模式
    • Manual 模式
    新建一个 python 文件,命名为vad_dash.py,并将以下代码复制到文件中:
    # 依赖: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
    
    # 配置参数:地址、API Key、音色、模型、模型角色
    # 指定地域,设为cn表示华北2(北京)地域,设为intl表示新加坡地域。请将 {WorkspaceId} 替换为您的百炼业务空间ID。
    region = 'cn'
    base_domain = '{WorkspaceId}.cn-beijing.maas.aliyuncs.com' if region == 'cn' else '{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com'
    url = f'wss://{base_domain}/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.5-omni-plus-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.delta':
                # 流式预览:text为已确认前缀,stash为待确认后缀
                preview = response.get('text', '') + response.get('stash', '')
                print(f"\r[User] {preview}", end='', flush=True)
            elif response['type'] == 'conversation.item.input_audio_transcription.completed':
                # 转录完成,打印最终文本并换行
                print(f"\r[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对话结束")
    
    运行vad_dash.py,通过麦克风即可与 Qwen-Omni-Realtime 模型实时对话,系统会检测您的音频起始位置并自动发送到服务器,无需您手动发送。

交互流程

  • VAD 模式
  • Manual 模式
session.update事件的session.turn_detection.type 设为"server_vad""semantic_vad"启用 VAD 模式。适用于语音通话场景。WebSocket 和 WebRTC 均支持 VAD 模式,两者的服务端事件一致,区别在于音频和图片的传输方式不同。
WebRTC 仅支持 VAD 模式,不支持 Manual 模式。WebRTC 的音频通过 RTP 直接传输,无需发送 input_audio_buffer.append 事件;图片通过视频轨道传输,不支持 input_image_buffer.append 事件。控制指令和服务端事件通过 DataChannel 传输,事件类型与 WebSocket 一致。
交互流程如下:
  1. 客户端发送音频数据。WebSocket 通过 input_audio_buffer.append 事件发送;WebRTC 通过音频轨道(RTP)自动传输,无需手动发送事件。
  2. 服务端检测到语音开始,通过 DataChannel(WebRTC)或 WebSocket 发送 input_audio_buffer.speech_started 事件。
  3. 服务端检测到语音结束,发送input_audio_buffer.speech_stopped 事件。
  4. 服务端自动提交音频缓冲区,发送input_audio_buffer.committed 事件。
  5. 服务端开始生成响应,依次发送 response.createdconversation.item.created 等事件。模型的音频回复通过 WebSocket 的 response.audio.delta 事件增量返回,或通过 WebRTC 的音频轨道(RTP)直接传输。
  6. 响应过程中,服务端通过 response.audio_transcript.delta 事件增量返回文字转录,最终发送 response.done 事件标志响应完成。
生命周期客户端事件服务端事件
会话初始化session.update
会话配置
session.created
会话已创建
session.updated
会话配置已更新
用户音频输入input_audio_buffer.append
WebSocket:通过此事件添加音频到缓冲区
input_image_buffer.append
WebSocket:通过此事件添加图片到缓冲区
WebRTC:音频通过 RTP 音频轨道自动传输,图片通过视频轨道传输,无需发送上述事件。
input_audio_buffer.speech_started
检测到语音开始
input_audio_buffer.speech_stopped
检测到语音结束
input_audio_buffer.committed
服务器收到提交的音频
服务器音频输出response.created
服务端开始生成响应
response.output_item.added
响应时有新的输出内容
conversation.item.created
对话项被创建
response.content_part.added
新的输出内容添加到assistant message
response.audio_transcript.delta
增量生成的转录文字
response.audio.delta
WebSocket:模型增量生成的音频通过此事件返回。WebRTC:音频通过 RTP 音频轨道直接传输,不返回此事件。
response.audio_transcript.done
文本转录完成
response.audio.done
音频生成完成
response.content_part.done
Assistant message 的文本或音频内容流式输出完成
response.output_item.done
Assistant message 的整个输出项流式传输完成
response.done
响应完成
conversation.item.input_audio_transcription.delta
用户语音输入的文字流式转录(需在 session.update 中启用 input_audio_transcription)
conversation.item.input_audio_transcription.completed
用户语音输入的文字转录完成(需在 session.update 中启用 input_audio_transcription)

联网搜索

联网搜索功能使模型能够基于实时检索数据进行回复,适用于股票价格、天气预报等需要即时信息的场景。模型可自主判断是否需要搜索来回应用户的即时问题。
联网搜索仅 Qwen3.5-Omni-Realtime 系列模型支持,且默认关闭,需通过 session.update 事件启用。
计费请参考计费说明中的agent策略。

启用方式

session.update 事件中添加以下参数:
  • enable_search:设置为 true 启用联网搜索功能。
  • search_options.enable_source:设置为 true 返回搜索结果来源列表。
参数详情请参见session.update

响应格式

启用联网搜索后,response.done 事件中的 usage 会新增 plugins 字段,用于记录搜索计量信息:
{
    "usage": {
        "total_tokens": 2937,
        "input_tokens": 2554,
        "output_tokens": 383,
        "input_tokens_details": {
            "text_tokens": 2512,
            "audio_tokens": 42
        },
        "output_tokens_details": {
            "text_tokens": 90,
            "audio_tokens": 293
        },
        "plugins": {
            "search": {
                "count": 1,
                "strategy": "agent"
            }
        }
    }
}

代码示例

以下示例展示如何在实时对话中启用联网搜索功能。
  • DashScope Python SDK
  • DashScope Java SDK
  • WebSocket(Python)
update_session 调用中传入 enable_searchsearch_options 参数:
import os
import base64
import time
import json
import pyaudio
from dashscope.audio.qwen_omni import MultiModality, AudioFormat, OmniRealtimeCallback, OmniRealtimeConversation
import dashscope

dashscope.api_key = os.getenv('DASHSCOPE_API_KEY')
# 以下为华北2(北京)地域的URL。请将 {WorkspaceId} 替换为您的百炼业务空间ID,各地域的URL不同。
url = 'wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api-ws/v1/realtime'
model = 'qwen3.5-omni-plus-realtime'
voice = 'Tina'

class SearchCallback(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.delta':
            preview = response.get('text', '') + response.get('stash', '')
            print(f"\r[User] {preview}", end='', flush=True)
        elif response['type'] == 'conversation.item.input_audio_transcription.completed':
            print(f"\r[User] {response['transcript']}")
        elif response['type'] == 'response.audio_transcript.done':
            print(f"[LLM] {response['transcript']}")
        elif response['type'] == 'response.done':
            usage = response.get('response', {}).get('usage', {})
            plugins = usage.get('plugins', {})
            if plugins.get('search'):
                print(f"[Search] count={plugins['search']['count']}, strategy={plugins['search']['strategy']}")

pya = pyaudio.PyAudio()
callback = SearchCallback(pya)
conv = OmniRealtimeConversation(model=model, callback=callback, url=url)
conv.connect()
conv.update_session(
    output_modalities=[MultiModality.AUDIO, MultiModality.TEXT],
    voice=voice,
    instructions="你是个人助理小云",
    enable_search=True,
    search_options={'enable_source': True}
)
mic = pya.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True)
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对话结束")

API 参考

计费与限流

计费规则

Qwen-Omni-Realtime 模型根据不同模态(音频、图像)对应的Token数计费。计费详情请参见百炼控制台。
在多轮实时对话中,模型每次生成响应时,需要将上下文窗口内的所有历史对话内容(包括之前各轮的音频、图片和文本)与本轮新增输入一并作为输入 Token 进行处理。因此,输入 Token 会随对话轮次的增加而逐轮累积,而非仅计算当前轮次的新增输入。例如,假设一段 10 秒的音频输入转换为 70 个 Token(Qwen3.5-Omni-Realtime 系列模型),在第 3 轮对话时,该音频仍在上下文窗口内,则它依然会被计入第 3 轮的输入 Token。实际计费的输入 Token 数 = 上下文窗口内所有历史轮次的内容 Token 数 + 本轮新增输入的 Token 数。
  • 音频
  • 图片
  • Qwen3.5-Omni-Realtime 系列模型:
    • 输入音频计算公式:总 Token 数 = 音频时长(单位:秒)* 7
    • 输出音频计算公式:总 Tokens 数 = 音频时长(单位:秒)* 12.5
  • Qwen3-Omni-Flash-Realtime系列模型:输入与输出音频的计算公式均为总 Token 数 = 音频时长(单位:秒)* 12.5
  • Qwen-Omni-Turbo-Realtime系列模型:输入与输出音频的计算公式均为总 Token 数 = 音频时长(单位:秒)* 25 若音频时长不足1秒,则按 1 秒计算。

限流

模型限流规则请参见限流

常见问题

如何在线体验 Qwen-Omni-Realtime 模型?

A:您可以通过以下方式一键部署:
  1. 访问函数计算模板部署类型选择直接部署百炼 API-KEY 填入您的 API Key;单击创建并部署默认环境
  2. 等待约一分钟,在环境详情环境信息中获取访问域名将访问域名的http改成https(示例:https://omni-realtime.fcv3.xxxx.cn-hangzhou.fc.devsapp.net),修改后的 HTTPS 链接指向一个可在线体验的 Web 应用,可通过它与模型进行实时视频或语音通话。
此链接使用自签名证书,仅用于临时测试。首次访问时,浏览器会显示安全警告,这是预期行为,请勿在生产环境使用。如需继续,请按浏览器提示操作(如点击“高级” → “继续前往(不安全)”)。
通过资源信息-函数资源查看项目源代码。
函数计算阿里云百炼均为新用户提供免费额度,可以覆盖简单调试所需成本,额度耗尽后按量计费。只有在访问的情况下会产生费用。

怎么向模型输入图片?

A:输入方式取决于接入协议。 WebSocket:通过客户端发送input_image_buffer.append事件。 WebRTC:通过视频轨道(RTP)发送画面帧,无需发送 input_image_buffer.append 事件。 若用于视频通话场景,可以对视频抽帧,建议以 1张/秒 的频率向服务端发送图像。input_image_buffer.append 事件。 DashScope SDK 代码请参见Omni-Realtime 示例代码

收不到 ASR 转录文本(transcript)怎么办?

A:如果您收不到 conversation.item.input_audio_transcription.completed 事件,或事件中的 transcript 字段为空,请按以下顺序排查。
  1. 确认已开启输入音频转录。转录事件由 session.updateenable_input_audio_transcription 参数控制,该参数默认为 true。关闭该参数后,服务端不会下发 conversation.item.input_audio_transcription.completed 事件,这是预期行为,并非异常,请确认会话配置中该参数为 true
  2. 监听转录失败事件。除 completed 事件外,请同时监听 conversation.item.input_audio_transcription.failed 事件。转录失败时,该事件会通过 error.codeerror.messageerror.param 返回失败原因,可据此定位是参数问题还是音频问题。
  3. 升级 DashScope SDK。较低版本的 DashScope SDK 可能不支持输入音频转录相关参数,导致配置未生效,请将 DashScope SDK 升级到较新版本后重试。
  4. 检查 VAD 配置与网络。语音活动检测由 session.turn_detection 配置,type 取值为 server_vadsemantic_vad。VAD 灵敏度与实际环境不匹配(例如在嘈杂环境中阈值过低)会导致音频分段异常,进而影响转录结果,可参见本文档“2. 配置会话”章节调整 thresholdsilence_duration_ms。此外,网络不稳定会造成 WebSocket 连接中断,导致转录事件丢失,请确认连接在整个会话期间保持稳定。
  5. 显式指定转录模型。可通过 session.updateinput_audio_transcription_model 参数指定 ASR 转录模型(例如 qwen3-asr-flash-realtime)。未显式指定时,服务端使用默认转录模型;当默认模型的转录效果不满足需求时,建议显式指定。

错误码

如果模型调用失败并返回报错信息,请参见错误码进行解决。

音色列表

Qwen-Omni-Realtime模型的音色列表可参见音色列表
Token Plan
模型体验
模型调优
模型压缩目录节点
用量统计与性能监控
资产中心
服务支持