概览
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控制。
- Server VAD模式, 模型智能检测
- 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_format为pcm。
特殊说明:当session.update切换chat_mode通话模式时,会有系统默认的对话历史处理策略:
- 从
video_passive到audio,对话历史会丢弃; - 从
audio到video_passive,对话历史会保留;
实时对话的
session对象参数说明:
input_audio_noise_reduction对象参数说明:
vad
turn_detection对象参数说明:
Tool对象参数说明:
beta_fields对象参数说明:
greeting_config对象参数说明:
instructions默认指令
session.update消息事件发送示例:
RealtimeClientEventTranscriptionSessionUpdate
转录会话配置,发送transcription_session.update事件以更新转录会话。
session对象参数说明:
turn_detection对象参数说明:
RealtimeClientEventInputAudioBufferAppend
此事件用于上传音频流至缓冲区。- Server VAD 模式将由模型自动检测语音并决定何时提交;
- Client VAD 模式需要手动上传并提交音频。上传时可以自行决定音频长度,音频越短响应时间越快,最长可上传 30 秒;
- 音频发送的最高速率为 50QPS,超过后会被限流丢弃,实时音频流推荐按 100ms 一帧切分,每秒发送 10 帧
input_audio_buffer.append消息事件发送示例:
RealtimeClientEventInputAudioBufferAppendVideoFrame
此事件用于上传视频帧至缓冲区。当前版本下,chat_mode为video_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_mode为video时,提交事件之前必须通过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表示对话当前是活跃的链接状态。