Skip to main content

概览

GLM-Realtime 是一款音视频通话模型,能够提供实时的视频通话功能,通话记忆时长长达 2 分钟,具有跨文本、音频和视频进行实时推理的能力。

输入模态

视频、音频、文本

输出模态

音频

最大输出 Tokens

1K

价格

上下文窗口

推荐场景

口语陪练

通过实时对话+视频反馈,及时纠正用户发音错误,支持视频捕捉用户表情、识别物体、浏览文档。
支持多语言实时对话,自动识别语种,完成自然语言交互+即时翻译,媲美专业陪同翻译。
AI可扮演面试官模拟真实面试场景,根据不同岗位需求与候选人条件智能匹配面试问题。
模拟专业导游讲解景点/历史/文化,支持视频对话模式,边看边讲,沉浸感强。

使用资源

音视频实时 API 构建在 WebSocket API 之上,通过集成 Realtime API 或 SDK, 参考开源仓库样例代码,快速接入成服务。

Realtime SDK

Realtime Python Golang TypeScript SDK

前端样例代码

Realtime API 的使用场景前端样例代码

详细介绍

GLM-Realtime 通过流式推理降低视频通话延时,AI可以进行流畅的通话,人也可以实时打断AI。除了实时音频交互外,GLM-Realtime 还可通过手机或AIPC的摄像头与人互动,通过共享电脑屏幕阅读页面信息,通过视频流理解对话当前的环境。在语音交互方面,GLM-Realtime 创新性地实现了清唱功能,首次让大模型具备在对话中的歌唱能力。同时,我们将 GLM-Realtime API 集成到智能眼镜和陪伴娃娃中,以便用户可以体验到近乎实时的智能助手交互。值得一提的是,GLM-Realtime 进一步支持 Function Calling 功能。不仅能够依靠自身的知识和能力,还能灵活调用外部知识和工具,从而能够拓展到更广泛的商业场景。

用户并发权益

API 调用会受到速率限制,当前我们限制的维度是请求并发数量(在途请求任务数量)。不同等级的用户并发保障如下。

接口参数

音视频实时 API(通过 /realtime)构建在 WebSocket API 之上。
API 请求地址: wss://open.bigmodel.cn/api/paas/v4/realtime

请求头

公共参数

VAD 检测

Realtime API支持两种VAD检测方式, 根据参数turn_detection.type控制。
  1. Server VAD模式, 模型智能检测
  2. Client VAD模式,客户端自行决定触发模型推理时机

事件时序

(基本对话流程) 响应阶段, 不同类型的事件之间没有顺序关系(单个类型事件保证有序),在 websocket 通道中流式输出

Client VAD

client vad视频通话为例事件流如下:

Server VAD

server vad视频通话为例事件流如下:

Function call

client vad语音通话为例事件流如下:

数据结构

RealtimeConversationItem

  • 用途: 定义对话中的项,可以是消息、函数调用或函数调用响应。
  • 属性:
  • id (string, 可选): 项的唯一 ID,可以由客户端生成。
  • type (string, 必需): 项的类型 (message, function_call, function_call_output)。
  • object (string, 必需): 始终为 "realtime.item"
  • status (string, 可选): 项的状态 (completed, incomplete)。
  • role (string, 可选): 消息发送者的角色 (user, assistant, system),仅在 message 类型时适用。
  • content (array, 可选): 消息内容数组。
  • type (string, 必需): 内容类型 (input_audio, input_text, text)。
  • text (string, 可选): 文本内容。
  • audio (string, 可选): Base64 编码的音频数据。
  • transcript (string, 可选): 音频的转录文本。
  • name (string, 可选): 函数调用的名称,用于 function_call 类型。
  • arguments (string, 可选): 函数调用的参数,用于 function_call 类型。
  • output (string, 可选): 函数调用的输出,用于 function_call_output 类型。

RealtimeResponse

  • 用途: 定义服务器返回的响应对象结构。
  • 属性:
  • id (string, 必需): 响应的唯一 ID。
  • object (string, 必需): 始终为 "realtime.response"
  • status (string, 必需): 响应的状态 (completed, cancelled, )。
  • usage (object, 可选): 响应的使用统计信息,对应于计费信息。暂时都返回 0, 实际计算规划开发中
  • total_tokens (integer, 可选): 总共使用的令牌数量。
  • input_tokens (integer, 可选): 输入令牌数量。
  • output_tokens (integer, 可选): 输出令牌数量。
  • input_token_details (object, 可选): 关于输入令牌的详细信息。
  • cached_tokens (integer, 可选): 使用缓存令牌的数量
  • text_tokens (integer, 可选): 使用文本令牌的数量。
  • audio_tokens (integer, 可选): 使用音频令牌的数量。
  • output_token_details (object, 可选): 关于输出令牌的详细信息。
  • text_tokens (integer, 可选): 输出的文本令牌数量。
  • audio_tokens (integer, 可选): 输出的音频令牌数量。

客户端事件

RealtimeClientEventSessionUpdate

通过此事件更新会话的默认配置,默认为client vad下的语音通话,并且会使用上面参数的默认值,比如output_audio_formatpcm 特殊说明:当session.update切换chat_mode通话模式时,会有系统默认的对话历史处理策略:
  • video_passiveaudio,对话历史会丢弃;
  • audiovideo_passive ,对话历史会保留;
实时对话的session对象参数说明: input_audio_noise_reduction对象参数说明: vadturn_detection对象参数说明: Tool对象参数说明: beta_fields对象参数说明: greeting_config对象参数说明: instructions默认指令 session.update消息事件发送示例:

RealtimeClientEventTranscriptionSessionUpdate

转录会话配置,发送transcription_session.update事件以更新转录会话。 session对象参数说明: turn_detection对象参数说明:

RealtimeClientEventInputAudioBufferAppend

此事件用于上传音频流至缓冲区。
  1. Server VAD 模式将由模型自动检测语音并决定何时提交;
  2. Client VAD 模式需要手动上传并提交音频。上传时可以自行决定音频长度,音频越短响应时间越快,最长可上传 30 秒;
  3. 音频发送的最高速率为 50QPS,超过后会被限流丢弃,实时音频流推荐按 100ms 一帧切分,每秒发送 10 帧
input_audio_buffer.append消息事件发送示例:

RealtimeClientEventInputAudioBufferAppendVideoFrame

此事件用于上传视频帧至缓冲区。当前版本下,chat_modevideo_passive的视频帧均随音频同时发送,ServerVAD 模式下会自动跟随音频上传,CliendVAD 模式下需要按照指定的 fps 向服务端推送 base64 编码的 jpg 图片。 input_audio_buffer.append_video_frame消息事件发送示例:

RealtimeClientEventInputAudioBufferCommit

提交已经上传的音频文件,此事件前必须进行input_audio_buffer.append,且必须上传一个有效音频或视频文件,否则提交事件会报错。ServerVAD 模式下不需要发送此事件,模型将自动上传并提交音频。 调用input_audio_buffer.commit时,如果缓冲区内发过 video_frame,会一起打包提交调用模型推理。 input_audio_buffer.commit消息事件发送示例:

RealtimeClientEventInputAudioBufferClear

客户端发送 input_audio_buffer.clear 事件用于清除缓冲区中的音频数据, 服务端使用 input_audio_buffer.cleared 事件进行响应。 input_audio_buffer.clear消息事件发送示例:

RealtimeClientEventConversationItemCreate

向对话上下文中添加一个 item,包含消息、函数调用响应结果,可以将此部分结果放入对话历史(session context/history)。如果传入文本为空或 function.call.item 为空时,会发送一个错误事件; conversation.item.create消息事件发送示例(比如function_call_output类型):

RealtimeClientEventConversationItemDelete

向对话上下文中添加一个item,包含消息、函数调用响应结果,可以将此部分结果放入对话历史(session context/history)。如果传入文本为空或function.call.item为空时,会发送一个错误事件; conversation.item.delete消息事件发送示例:

RealtimeClientEventConversationItemRetrieve

conversation.item.retrieve消息事件发送示例:

RealtimeClientEventResponseCreate

此事件为创建服务器响应,同时也表示触发模型推理。ServerVAD模式服务器会自动创建响应,ClientVAD模式进行视频通话时,需以这个时间点的视频帧和音频传给模型; chat_modevideo时,提交事件之前必须通过input_audio_buffer.append_video_frame事件上传至少一张图片,否则无法创建模型回复,会返回video_model_query_error错误事件; response.create消息事件发送示例:

RealtimeClientEventResponseCancel

此事件可取消正在进行的响应,服务器将响应一个response.cancelled事件,如果没有响应可取消,服务器将响应一个错误。 response.cancel消息事件发送示例:

服务端事件

RealtimeServerEventError

发生错误时,系统会返回服务器error事件(可能是客户端问题,也可能是服务器问题,具体可查看错误码文档)。 大多数错误都是可恢复的,并且会话将保持打开状态。 error配置: error消息事件响应示例:

RealtimeServerEventSessionCreated

在创建会话后会立即返回服务器session.created事件 session.created消息事件响应示例:

RealtimeServerEventSessionUpdated

更新会话后会立即返回服务器session.updated事件 session.updated消息事件响应示例:

RealtimeServerEventTranscriptionSessionUpdated

客户端通过transcription_session.update更新转录会话后,系统会立即返回transcription.session.updated事件。 transcription.session.updated消息事件响应示例:

RealtimeServerEventConversationItemCreated

创建对话项时,将返回 conversation.item.created 服务器事件。 conversation.item.created消息事件响应示例:

RealtimeServerEventConversationItemDeleted

删除对话项时,将返回 conversation.item.deleted 服务器事件。 conversation.item.deleted消息事件响应示例:

RealtimeServerEventConversationItemRetrieved

检索对话项时,将返回 conversation.item.retrieved 服务器事件。 conversation.item.retrieved消息事件响应示例:

RealtimeServerEventConversationItemInputAudioTranscriptionCompleted

写入音频缓冲区的语音转文本的结果。语音转文本与响应创建异步运行,该事件可能发生在响应事件之前或者之后; 此部分转文本是独立模型,输出的内容可能和模型推理的结果有部分出入(也可能为空),转文本的结果仅作为参考,不作为输入到Realtime大模型中的具体结果。 conversation.item.input_audio_transcription.completed消息事件响应示例:

RealtimeServerEventConversationItemInputAudioTranscriptionFailed

配置了输入音频听录并且用户消息的听录请求失败时,系统会返回服务器 conversation.item.input_audio_transcription.failed 事件。 此事件是与其他 error 事件分开的,以便客户端能够识别相关项。 conversation.item.input_audio_transcription.failed消息事件响应示例:

RealtimeServerEventInputAudioBufferCommitted

输入音频缓冲区由客户端提交或在ServerVAD模式下自动提交时,系统会返回input_audio_buffer.committed服务器事件。 input_audio_buffer.committed消息事件响应示例:

RealtimeServerEventInputAudioBufferCleared

客户端使用input_audio_buffer.clear事件清除输入音频缓冲区时,系统会返回input_audio_buffer.cleared服务器事件。 input_audio_buffer.cleared消息事件响应示例:

RealtimeServerEventInputAudioBufferSpeechStarted

ServerVAD模式在音频缓冲区中检测到语音时会返回input_audio_buffer.speech_started服务器事件。 input_audio_buffer.speech_started消息事件响应示例:

RealtimeServerEventInputAudioBufferSpeechStopped

ServerVAD模式在音频缓冲区中检测到语音结束时会返回input_audio_buffer.speech_stopped服务器事件, 然后继续还发送一个conversation.item.created 事件,其中包含从音频缓冲区创建的用户消息项。 input_audio_buffer.speech_stopped消息事件响应示例:

RealtimeServerEventResponseOutputItemAdded

在响应生成过程中创建新项时,系统会返回服务器 response.output_item.added 事件。 response.output_item.added消息事件响应示例:

RealtimeServerEventResponseOutputItemDone

当项完成流式处理时,系统会返回服务器response.output_item.done事件, 即使响应中断、不完整或取消时,系统也会返回此事件。 response.output_item.done消息事件响应示例:

RealtimeServerEventResponseContentPartAdded

在响应生成期间将新的内容部分添加到助手消息项时,系统会返回response.content_part.added事件。 response.content_part.added消息事件响应示例:

RealtimeServerEventResponseContentPartDone

当内容部分完成流式处理时,系统会返回服务器response.content_part.done事件, 即使响应中断、不完整或取消时,系统也会返回此事件。 response.content_part.done消息事件响应示例:

RealtimeServerEventResponseFunctionCallArgumentsDone

模型生成的函数调用时,系统会返回response.function_call_arguments.done事件。 当发给模型的query需要调用多次function call时,可能会返回多个调用,比如提问“帮我搜一下北京、上海的天气”,模型会返回2 次function call的结果,系统也会返回两次 response.function_call_arguments.done 事件。 当前仅支持响应成功时返回此事件,中断、不完整或取消时正在支持中。 response.function_call_arguments.done消息事件响应示例:

RealtimeServerEventResponseFunctionCallSimpleBrowser

视频通话链路内置了搜索的工具,当识别到用户的提问需要通过搜索获取外部数据时,会返回此事件。服务内部会自动调用搜索接口获取数据,获取搜索结果后会再次调用模型,获取到模型回复后继续流式返回数据。 此事件在response.created事件之后,在response.audio_transcript.delta之前,如搜索结果报错,会返回错误事件video_model_query_error session对象说明: beta_fields对象说明: simple_browser对象说明: response.function_call.simple_browser消息事件响应示例:

RealtimeServerEventResponseTextDelta

流式返回模型生成的文本时,系统会返回response.text.delta事件, 文本对应于助手消息项的text内容部分。 response.function_call.simple_browser消息事件响应示例:

RealtimeServerEventResponseTextDone

当模型生成的文本完成流式处理时,系统会返回response.text.done事件。 文本对应于助手消息项的 text 内容部分,当响应中断、不完整或取消时,系统也会返回此事件。 response.text.done消息事件响应示例:

RealtimeServerEventResponseAudioTranscriptDelta

流式返回模型生成的音频输出语音转文本时,系统会返回response.audio_transcript.delta事件。此部分转文本是独立模型,输出的内容可能和模型推理的结果有部分出入(也可能为空),转文本的结果仅作为参考,不作为输入到Realtime大模型中的具体结果,建议不要将此事件作为后续事件的依赖项。 response.audio_transcript.delta消息事件响应示例:

RealtimeServerEventResponseAudioTranscriptDone

模型生成的音频输出听录完成流式处理时,系统会返回服务器 response.audio_transcript.done 事件。 当响应中断、不完整或取消时,系统也会返回此事件。
  • 示例

RealtimeServerEventResponseAudioDelta

流式返回模型生成的音频时,系统将返回response.audio.delta事件。delta是一个pcm格式base64编码的音频块。 response.audio.delta消息事件响应示例:

RealtimeServerEventResponseAudioDone

当模型生成的音频完成流式处理时,系统将返回response.audio.done事件,当响应中断、不完整或取消时,系统也会返回此事件。 response.audio.done消息事件响应示例:

RealtimeServerEventResponseCreated

创建新响应时系统会返回response.created事件。 response.created消息事件响应示例:

RealtimeServerEventResponseCancelled

当响应被取消时,系统会返回response.cancelled事件, 对客户端response.cancel事件的响应,如果存在正在进行中的response,如果没有正在进行中的response,会返回stop_task_error response.cancelled消息事件响应示例:

RealtimeServerEventResponseDone

当一轮对话回复结束,系统会返回response.done事件,无论最终状态如何,始终发出此事件,消耗的tokens会在该事件中返回。 response.done消息事件响应示例:

RealtimeServerEventRateLimitsUpdated

在响应开始时发出,以指示更新的速率限制。当创建响应时,一些令牌将被“预留”用于输出令牌,此处显示的速率限制反映了这种预留,一旦响应完成,将相应地进行调整。 rate_limits对象结构: rate_limits.updated消息事件响应示例:

RealtimeServerEventHeartbeat

当会话创建/更新时会返回,后续每30s返回一次,heartbeat表示对话当前是活跃的链接状态。