Skip to main content
Talk 模式涵盖五种运行形态:
  • Native macOS/iOS/Android Talk:原生语音识别、Gateway 聊天以及 talk.speak TTS。macOS/iOS 上的 Apple Speech recognition 可能会使用网络服务;Android 的行为取决于已安装的语音服务。节点会公布 talk 能力,并声明它们支持哪些 talk.* 命令。
  • iOS Talk(realtime):对于选择 webrtc 传输方式或省略传输方式的 OpenAI realtime 配置,使用由客户端拥有的 WebRTC,包括带帧和无帧的转录/音频事件。显式指定 gateway-relayprovider-websocket 的 realtime 配置以及非 OpenAI realtime 配置会继续使用由 Gateway 拥有的中继;非 realtime 配置使用原生语音循环。
  • Browser Talk:对于由客户端拥有的 webrtcprovider-websocket 会话,使用 talk.client.create;对于由 Gateway 拥有的 gateway-relay 会话,使用 talk.session.createmanaged-room 保留用于 Gateway 移交和对讲机房间。
  • Android Talk(realtime):当 talk.catalog 报告 realtime 组已就绪且配置的模型通过 Android 客户端门槛时,Android 会使用由 Gateway 拥有的中继 realtime;它绝不会打开由客户端拥有的 WebRTC 会话。Gateway 现在支持 gpt-live-* 中继会话,但 Android 会有意让这些模型继续使用原生语音识别、Gateway 聊天和 talk.speak,直到从 Android 设备验证中继路径可以正常运行。
  • 仅转录客户端talk.session.create({ mode: "transcription", transport: "gateway-relay", brain: "none" }),然后使用 talk.session.appendAudiotalk.session.close,即可在没有助手语音响应的情况下进行字幕/听写。一次性上传的语音备忘录仍使用媒体理解音频路径。
原生 Talk 是一个连续循环:监听语音,将转录结果通过活动会话发送到模型,等待回复,然后通过已配置的 Talk 提供方(talk.speak)进行朗读。

从聊天中选择 Talk 语音

设置 talk.provider 和匹配的 talk.providers.<provider> 配置后,使用 /voice status 查看活动的提供方和语音,使用 /voice list [limit] 列出其可用语音,并使用 /voice set <voiceId|name> 保存限定于提供方的选择。Discord 原生提供相同的命令 /talkvoice 状态和列表为只读。设置语音需要消息频道所有者或具有 operator.admin 权限的 Gateway 客户端。配置、提供方查找、未知语音和权限失败都会在聊天中明确返回。/voice status 中的掩码 API 密钥值仅描述配置,不会验证凭据是否可用。 客户端持有的实时 Talk 通常会通过 talk.client.toolCall 转发提供方工具调用,而不是直接调用 chat.send。GPT-Live WebRTC 会话会通过 Gateway 所有的 sideband 进行委托,并且 Gateway 会将每个委托绑定到拥有该委托的浏览器或 Gateway 中继 Talk 会话。后端 WebSocket 桥接使用正常的中继咨询路径。实时咨询处于活动状态时,客户端可以调用 talk.client.steertalk.session.steer,将语音输入分类为 statussteercancelfollowup;这也包括 GPT-Live 委托。接受的引导请求会排队进入活动的嵌入式运行;被拒绝的引导请求会返回诸如 no_active_runnot_streamingcompacting 的原因。较新的 GPT-Live 语音任务也会取代正在运行的委托。 轻量音频客户端可以在 talk.client.create.capabilities 中请求 gateway-control-v1。OpenAI GA Realtime 仅在使用 Platform API 密钥时支持此模式。成功后会返回 clientControl: { owner: "gateway" }、一个有效期 60 秒且只能使用一次的 clientSecret,以及相对 offer URL /plugins/openai/realtime/calls。客户端会向该 Gateway 路由发起仅包含音频的 SDP offer,并且不会打开提供方数据通道。Gateway 会连接官方 OpenAI 服务端 sideband,并负责工具、转录、引导、取消和通话清理,而媒体仍直接在客户端与 OpenAI 之间传输。仅支持 OAuth 的配置会明确失败,而不会回退到客户端持有的控制模式。现有浏览器客户端不会声明此能力,并继续使用当前的临时令牌和 WebRTC 数据通道流程。 实时会话中已完成的用户和助手发言始终会实时追加到活动的智能体会话中,因此后续的聊天和语音轮次共享同一历史记录。客户端持有的传输会使用稳定的条目 ID 报告已完成的转录;Gateway 中继和 Gateway 控制的 WebRTC 会话则会在服务端追加相同的事件。提供方会话还会接收 Discord 语音使用的有界实时配置文件上下文。 由语音发起的咨询运行,在执行发送消息、控制节点、浏览器/计算机操作、服务变更、破坏性 shell 命令或发布等高影响操作前,需要新的、完全匹配的语音确认。该门禁适用于通过 talk.client.toolCall、Gateway 中继和 GPT-Live sideband 委托启动的运行。确认仅适用于规范的最终执行参数,并且只会被消费一次;如果策略或钩子重写了已批准的操作,OpenClaw 会阻止该操作,直到重写后的操作得到确认。不相关的并发运行不受影响。通话结束时,OpenClaw 可以将针对变更型工具的精简 语音通话变更摘要发送到会话最近使用的非 WebChat 投递目标。 仅转录 Talk 产生的事件封装与实时和 STT/TTS 会话相同,但使用 mode: "transcription"brain: "none"。所有 Talk 会话都会在 talk.event 通道上广播事件;客户端订阅该通道以接收部分/最终转录更新(transcript.delta/transcript.done)以及其他会话遥测信息。 浏览器视频 Talk 可用于 OpenAI Realtime WebRTC 和 Google Live 提供方 WebSocket 会话。OpenAI 在 describe_view 请求视觉上下文时只接收单张受限的 JPEG;它不会接收连续的摄像头轨道。Google Live 会以每秒最多一帧的速率直接从浏览器接收受限的 JPEG 帧,而 describe_view 会报告摄像头流状态。在这两种情况下,摄像头帧都会绕过 Gateway,停止 Talk 会释放摄像头和麦克风轨道。

行为(macOS)

  • 在 Talk 模式启用时始终显示覆盖层。
  • 倾听 → 思考 → 说话 阶段转换。
  • 在短暂停顿(静默窗口)时,当前转录内容会被发送。
  • 回复会写入 WebChat(与输入相同)。
  • 语音打断(默认开启):如果用户在助手说话时开口,播放会停止,并记录打断时间戳供下一个提示使用。

回复中的语音命令

助手可以在回复前添加一行 JSON 来控制语音播放:
规则:
  • 仅适用于第一个非空行;在 TTS 播放前,这一行 JSON 会被移除。
  • 未知键将被忽略。
  • once: true 仅适用于当前回复;如果未指定,它将成为 Talk 模式的新默认值。
支持的键:voice / voice_id / voiceIdmodel / model_id / modelIdspeedrate(每分钟词数,WPM),stabilitysimilaritystylespeakerBoostseednormalizelangoutput_formatlatency_tieronce

配置(~/.openclaw/openclaw.json

OpenAI 浏览器 WebRTC 和 Gateway 中继 Talk 通过 https://api.openai.com/v1/live 支持原生 GPT-Live。将 talk.realtime.model 设置为 gpt-live-1-codex(推荐)或 gpt-live-1-boulder-alphagpt-live-1gpt-live-1-mini 在此路由上无效。浏览器和 Gateway 中继 WebRTC 优先使用 ChatGPT OAuth 订阅配置,并回退到 Platform API 密钥身份验证。其他后端桥接通过 Frameless Bidi WebSocket 直接连接,并要求使用 Platform API 密钥身份验证;其 /v1/live 访问权限目前受 候补名单限制 最快的设置方式是使用控制界面:设置 → Talk,选择 OpenAI 和 一个 gpt-live-* 模型。OAuth 前置条件是使用 openclaw models auth login --provider openai 创建的 OpenClaw 身份验证配置文件——不会读取现有的 Codex CLI 登录状态。GPT-Live 还要求以完整模式注册内置的 openai 插件;限制性的 plugins.allow 列表会导致会话创建失败,并显示 “OpenAI GPT-Live browser session broker is unavailable”。运行时限制:每个 Gateway 最多 8 个并发会话,会话 TTL 为 30 分钟。浏览器会话还使用有效期 60 秒且只能使用一次的 offer token。 GPT-Live 接受 alloyashballadcedarcoralechomarinsageshimmerverse403 Voice session access denied 响应是 复用错误:无效的 voice 也会返回同样的响应。旧的 chatgpt.com 后端路由也会返回 403;OpenClaw 改为使用原生 api.openai.com/v1/live 路由。 Gateway 的所有 WebRTC 路由不会将 OAuth 和 Platform 凭据暴露给 中继客户端。后端 WebSocket 路径会将 Platform 密钥保留在 Gateway 上; OpenClaw 会将电话系统的 G.711 u-law 音频转换为 GPT-Live 的 24 kHz PCM 格式,也会执行反向转换。 对于 GA gpt-realtime-2.1gpt-realtime-2.1-minigpt-realtime-2 浏览器会话,Platform 凭据仍按以下顺序优先使用:已配置的 realtime API 密钥、openai API 密钥配置文件,然后是 OPENAI_API_KEY。如果均未配置,浏览器 Talk 会回退到 OpenClaw ChatGPT OAuth 配置文件,并通过 Gateway 的一次性 offer broker 交换 SDP,因此 OAuth token 永远不会到达浏览器。若已配置的 Platform 凭据无法解析,则会安全失败,而不会静默回退到 OAuth。 iOS 客户端所有的 WebRTC、语音通话、GA Gateway 中继、provider WebSocket 传输、Discord 实时语音以及 Android realtime 仍然 仅支持 Platform 密钥。GA 浏览器 Talk 保留现有的客户端所有数据通道和 talk.client.toolCall 循环;在 OAuth 模式下,只有凭据所有者和 SDP 交换路径会发生变化。GPT-Live Gateway 中继优先使用 ChatGPT OAuth,并回退到已获得候补名单权限的 Platform 访问。 talk.catalog 将公开规范化的 provider id 和注册表别名、每个 provider 的有效模式/传输方式/brain 策略/realtime 音频格式/能力标志,以及运行时选择的就绪结果。第一方 Talk 客户端应读取此 catalog,而不是在本地维护 provider 别名;如果较旧的 Gateway 省略了组就绪状态,应将其视为未验证,而不是明确视为未配置。流式转写 provider 通过 talk.catalog.transcription 发现;当前的 Gateway 中继会使用 Voice Call 流式 provider 配置,直到发布专门的 Talk 转写配置接口。

macOS 界面

  • 菜单栏切换:Talk
  • 配置标签页:Talk Mode 组(voice id + interrupt toggle)
  • 覆盖层:该球体渲染通用的 talk 波形(与 iOS、watchOS 和 Android 共用)。Listening 跟随实时麦克风音量,Speaking 跟随实际的 TTS 播放包络,Thinking 轻柔呼吸。点击球体可暂停/恢复,双击可停止说话,点击 X 可退出 Talk 模式。

Android 界面

  • Android 的主导航是 HomeChatSettings。语音输入 位于 Chat 编辑器中,而不是单独的 Voice 选项卡。
  • 点击编辑器麦克风可进行设备端听写。长按它可录制 语音笔记附件。从 Talk 波形开始连续 Talk。
  • 听写、语音笔记录制和 Talk 是互斥的麦克风 路径;启动其中一个会停止或阻止其他路径。
  • 实时 Talk 优先使用已连接的 Bluetooth Classic 或 BLE 耳机 麦克风;如果断开连接,应用会请求另一个耳机输入,或 回退到默认麦克风,并在捕获停止后恢复默认偏好。
  • 当应用离开前台或 用户离开 Chat 时,听写和语音笔记录制会停止。
  • Talk Mode 会一直运行,直到被切换关闭或节点断开连接,激活时使用 Android 的 microphone 前台服务类型。
  • Android 支持 pcm_16000pcm_22050pcm_24000pcm_44100 输出格式,用于低延迟的 AudioTrack 流式传输。

备注

  • 需要语音和麦克风权限。
  • 原生 Talk 使用当前活动的 Gateway 会话,仅当响应事件不可用时才回退到历史记录轮询。
  • Gateway 通过 talk.speak 使用当前活动的 Talk 提供商处理 Talk 播放。仅当该 RPC 不可用时,Android 才会回退到本地系统 TTS。
  • macOS 本地 MLX 播放会在可用时使用捆绑的 openclaw-mlx-tts 助手,或使用 PATH 上的可执行文件。在开发期间,可设置 OPENCLAW_MLX_TTS_BIN 指向自定义助手二进制文件。该助手以流式方式传输 PCM,使一个选定的模型常驻内存,并通过 providers.mlx.referenceAudioPathreferenceText 支持 Fish S2 Pro 参考音频。
  • 语音指令值范围(ElevenLabs):stabilitysimilaritystyle 接受 0..1speed 接受 0.5..2latency_tier 接受 0..4

相关内容