chore(i18n): refresh zh-CN translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-24 09:20:20 +00:00
parent c3344abf5f
commit b7a6405acf
3 changed files with 293 additions and 193 deletions

View File

@ -1,57 +1,59 @@
---
read_when:
- 你希望一个 OpenClaw 智能体加入 Google Meet 通话
- 你想让一个 OpenClaw 智能体加入 Google Meet 通话
- 你正在将 Chrome、Chrome 节点或 Twilio 配置为 Google Meet 传输方式
summary: Google Meet 插件:通过 Chrome 或 Twilio 加入明确指定的 Meet URL并使用实时语音默认设置
summary: Google Meet 插件:通过 Chrome 或 Twilio 加入明确的 Meet URL并使用实时语音默认设置
title: Google Meet 插件
x-i18n:
generated_at: "2026-04-24T08:44:55Z"
generated_at: "2026-04-24T09:19:17Z"
model: gpt-5.4
provider: openai
source_hash: 8d430a1f2d6ee7fc1d997ef388a2e0d2915a6475480343e7060edac799dfc027
source_hash: f1673ac4adc9cf163194a340dd6e451d0e4d28bb62adeb126898298e62106d43
source_path: plugins/google-meet.md
workflow: 15
---
# Google Meet插件
适用于 OpenClaw 的 Google Meet 参支持。
适用于 OpenClaw 的 Google Meet 参与者支持。
该插件在设计上是显式的:
- 它只会加入明确指定`https://meet.google.com/...` URL。
- 它只会加入明确的 `https://meet.google.com/...` URL。
- `realtime` 语音是默认模式。
- 当需要更深入的推理或工具时,实时语音可以回调到完整的 OpenClaw 智能体。
- 认证起始方式为个人 Google OAuth,或使用已登录的 Chrome 配置文件。
- 认证起始方式为个人 Google OAuth已登录的 Chrome 配置文件。
- 不会自动播报同意声明。
- 默认的 Chrome 音频后端是 `BlackHole 2ch`
- Chrome 可以在本地运行,也可以在已配对的节点主机上运行。
- Twilio 接受拨入号码以及可选的 PIN 或 DTMF 序列。
- CLI 命令 `googlemeet``meet` 保留给更广泛的智能体电话会议工作流使用。
- CLI 命令 `googlemeet``meet` 保留给更广泛的智能体电话会议工作流使用。
## 快速开始
安装本地音频依赖,并确保实时提供商可以使用 OpenAI
安装本地音频依赖,并配置一个后端实时语音提供商。OpenAI 是默认选项Google Gemini Live 也可用,需设置 `realtime.provider: "google"`
```bash
brew install blackhole-2ch sox
export OPENAI_API_KEY=sk-...
# or
export GEMINI_API_KEY=...
```
`blackhole-2ch` 会安装 `BlackHole 2ch` 虚拟音频设备。Homebrew 的安装程序要求重启后 macOS 才会暴露该设备:
`blackhole-2ch` 会安装 `BlackHole 2ch` 虚拟音频设备。Homebrew 的安装程序要求重启后macOS 才会暴露该设备:
```bash
sudo reboot
```
重启后,验证这两项都已就绪
重启后,验证这两个部分
```bash
system_profiler SPAudioDataType | grep -i BlackHole
command -v rec play
```
启用插件:
启用插件:
```json5
{
@ -87,17 +89,17 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij
}
```
Chrome 会以已登录的 Chrome 配置文件身份加入。在 Meet 中,选择 `BlackHole 2ch` 作为 OpenClaw 使用的麦克风/扬声器路径。为了获得干净的双工音频,请使用单独的虚拟设备或类似 Loopback 的音频图;单个 BlackHole 设备足以完成首次冒烟测试,但可能会产生回声。
Chrome 会以已登录的 Chrome 配置文件身份加入。在 Meet 中,选择 `BlackHole 2ch` 作为 OpenClaw 使用的麦克风/扬声器路径。为了获得干净的全双工音频,请使用独立的虚拟设备或类似 Loopback 的音频拓扑;单个 BlackHole 设备足以完成首次冒烟测试,但可能会产生回声。
### 本地 Gateway 网关 + Parallels Chrome
你**不**需要在 macOS VM 中运行完整的 OpenClaw Gateway 网关或配置模型 API 密钥,只是为了让 VM 托管 Chrome。你可以在本地运行 Gateway 网关和智能体,然后在 VM 中运行节点主机。在 VM 中启用一次内置插件,这样节点就会通告 Chrome 命令:
你**不**需要在 macOS VM 中运行完整的 OpenClaw Gateway 网关或配置模型 API 密钥,仅仅为了让 VM 托管 Chrome。可以在本地运行 Gateway 网关和智能体,然后在 VM 中运行节点主机。在 VM 上启用一次内置插件,这样节点就会声明 Chrome 命令:
各组件运行位置如下
各组件运行位置:
- Gateway 网关主机OpenClaw Gateway 网关、智能体工作区、模型/API 密钥、实时提供商,以及 Google Meet 插件配置。
- Parallels macOS VMOpenClaw CLI/节点主机、Google Chrome、SoX、BlackHole 2ch以及已登录 Google 的 Chrome 配置文件。
- VM 中不需要Gateway 网关服务、智能体配置、OpenAI/GPT 密钥或模型提供商设置。
- Parallels macOS VMOpenClaw CLI/节点主机、Google Chrome、SoX、BlackHole 2ch以及一个已登录 Google 的 Chrome 配置文件。
- VM 中不需要Gateway 网关服务、智能体配置、OpenAI/GPT 密钥或模型提供商设置。
安装 VM 依赖:
@ -105,20 +107,20 @@ Chrome 会以已登录的 Chrome 配置文件身份加入。在 Meet 中,选
brew install blackhole-2ch sox
```
安装 BlackHole 后重启 VM这样 macOS 才会暴露 `BlackHole 2ch`
安装 BlackHole 后重启 VM以便 macOS 暴露 `BlackHole 2ch`
```bash
sudo reboot
```
重启后,验证 VM 能看到该音频设备以及 SoX 命令:
重启后,验证 VM 能看到音频设备和 SoX 命令:
```bash
system_profiler SPAudioDataType | grep -i BlackHole
command -v rec play
```
在 VM 中安装或更新 OpenClaw然后在其中启用该内置插件:
在 VM 中安装或更新 OpenClaw然后在那里启用内置插件:
```bash
openclaw plugins enable google-meet
@ -130,14 +132,14 @@ openclaw plugins enable google-meet
openclaw node run --host <gateway-host> --port 18789 --display-name parallels-macos
```
如果 `<gateway-host>` 是局域网 IP并且你没有使用 TLS那么除非你明确为该受信任私有网络启用明文 WebSocket否则节点会拒绝连接
如果 `<gateway-host>` 是局域网 IP且你未使用 TLS则节点会拒绝明文 WebSocket除非你明确允许该受信任私有网络
```bash
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node run --host <gateway-lan-ip> --port 18789 --display-name parallels-macos
```
将节点安装为 LaunchAgent 时,也要使用同一个环境变量:
当将节点安装为 LaunchAgent 时,也要使用相同的环境变量:
```bash
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
@ -145,7 +147,7 @@ OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 \
openclaw node restart
```
`OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1` 是进程环境变量,不是 `openclaw.json` 设置。`openclaw node install` 会在安装命令中存在该变量时,将其存储到 LaunchAgent 环境中。
`OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1` 是进程环境变量,不是 `openclaw.json` 设置。`openclaw node install` 会在安装命令中存在该变量时,将其存储到 LaunchAgent 环境中。
在 Gateway 网关主机上批准该节点:
@ -154,13 +156,13 @@ openclaw devices list
openclaw devices approve <requestId>
```
确认 Gateway 网关可以看到该节点,并且它通告`googlemeet.chrome`
确认 Gateway 网关能看到该节点,并且它声明`googlemeet.chrome`
```bash
openclaw nodes status
```
在 Gateway 网关主机上将 Meet 路由到该节点
在 Gateway 网关主机上通过该节点路由 Meet
```json5
{
@ -185,31 +187,31 @@ openclaw nodes status
}
```
现在可以像平常一样从 Gateway 网关主机加入:
现在可以像平常一样从 Gateway 网关主机加入:
```bash
openclaw googlemeet join https://meet.google.com/abc-defg-hij
```
或者让智能体使用带有 `transport: "chrome-node"``google_meet` 工具
或者让智能体使用 `google_meet` 工具,并设置 `transport: "chrome-node"`
如果省略 `chromeNode.node`,只有在恰好有一个已连接节点通告 `googlemeet.chrome`OpenClaw 才会自动选择。如果连接了多个具备该能力的节点,请将 `chromeNode.node` 设置为节点 id、显示名称或远程 IP。
如果省略 `chromeNode.node`,只有在恰好有一个已连接节点声明了 `googlemeet.chrome`OpenClaw 才会自动选择它。如果连接了多个可用节点,请将 `chromeNode.node` 设置为节点 id、显示名称或远程 IP。
常见故障检查:
- `No connected Google Meet-capable node`:在 VM 中启动 `openclaw node run`,批准配对,并确保已在 VM 中运行 `openclaw plugins enable google-meet`。同时确认 Gateway 网关主机允许该节点命令:`gateway.nodes.allowCommands: ["googlemeet.chrome"]`。
- `BlackHole 2ch audio device not found on the node`:在 VM 中安装 `blackhole-2ch` 并重启 VM。
- Chrome 已打开但无法加入:在 VM 内登录 Chrome并确认该配置文件可以手动加入该 Meet URL。
- 没有音频:在 Meet 中,将麦克风/扬声器路由到 OpenClaw 使用的虚拟音频设备路径;为了获得干净的双工音频,请使用单独的虚拟设备或类似 Loopback 的路由方式
- 没有音频:在 Meet 中,将麦克风/扬声器路由到 OpenClaw 使用的虚拟音频设备路径;使用独立的虚拟设备或类似 Loopback 的路由来获得干净的全双工音频
## 安装说明
Chrome 实时默认路径使用两个外部工具:
Chrome 实时默认路径使用两个外部工具:
- `sox`:命令行音频工具。该插件使用它的 `rec``play` 命令,作为默认的 8 kHz G.711 mu-law 音频桥接。
- `sox`:命令行音频工具。插件使用其 `rec``play` 命令来实现默认的 8 kHz G.711 mu-law 音频桥接。
- `blackhole-2ch`macOS 虚拟音频驱动。它会创建 `BlackHole 2ch` 音频设备,供 Chrome/Meet 路由使用。
OpenClaw 不会捆绑或重新分发这两个软件包。文档要求用户通过 Homebrew 将它们作为主机依赖安装。SoX 的许可证为 `LGPL-2.0-only AND GPL-2.0-only`BlackHole 为 GPL-3.0。如果你构建的安装程序或设备会将 BlackHole 与 OpenClaw 一起打包,请审查 BlackHole 上游的许可条款,或向 Existential Audio 获取单独许可
OpenClaw 不会内置或重新分发这两个软件包。文档要求用户通过 Homebrew 将它们作为主机依赖安装。SoX 采用 `LGPL-2.0-only AND GPL-2.0-only` 许可证BlackHole 采用 GPL-3.0。如果你正在构建一个将 BlackHole 与 OpenClaw 一起打包的安装程序或设备,请审查 BlackHole 上游许可条款,或从 Existential Audio 获取单独许可证
## 传输方式
@ -226,7 +228,7 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij --transport chrome
### Twilio
Twilio 传输方式是委托给 Voice Call 插件的严格拨号方案。它不会解析 Meet 页面中的电话号码。
Twilio 传输方式是一个严格的拨号方案,委托给 Voice Call 插件处理。它不会解析 Meet 页面中的电话号码。
```bash
openclaw googlemeet join https://meet.google.com/abc-defg-hij \
@ -246,22 +248,21 @@ openclaw googlemeet join https://meet.google.com/abc-defg-hij \
## OAuth 和预检
Google Meet Media API 访问先使用个人 OAuth 客户端。配置 `oauth.clientId`,并可选配置 `oauth.clientSecret`,然后运行:
Google Meet Media API 访问先使用个人 OAuth 客户端。配置 `oauth.clientId`,并可选配置 `oauth.clientSecret`,然后运行:
```bash
openclaw googlemeet auth login --json
```
该命令会打印带有刷新令牌的 `oauth` 配置块。它使用 PKCE、位于 `http://localhost:8085/oauth2callback` 的 localhost 回调,以及配合 `--manual` 的手动复制/粘贴流程。
该命令会打印一个带有刷新令牌的 `oauth` 配置块。它使用 PKCE、位于 `http://localhost:8085/oauth2callback` 的 localhost 回调,以及通过 `--manual` 进行的手动复制/粘贴流程。
以下环境变量可作为后备值使用
接受以下环境变量作为回退值
- `OPENCLAW_GOOGLE_MEET_CLIENT_ID``GOOGLE_MEET_CLIENT_ID`
- `OPENCLAW_GOOGLE_MEET_CLIENT_SECRET``GOOGLE_MEET_CLIENT_SECRET`
- `OPENCLAW_GOOGLE_MEET_REFRESH_TOKEN``GOOGLE_MEET_REFRESH_TOKEN`
- `OPENCLAW_GOOGLE_MEET_ACCESS_TOKEN``GOOGLE_MEET_ACCESS_TOKEN`
- `OPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_AT`
`GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_AT`
- `OPENCLAW_GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_AT``GOOGLE_MEET_ACCESS_TOKEN_EXPIRES_AT`
- `OPENCLAW_GOOGLE_MEET_DEFAULT_MEETING``GOOGLE_MEET_DEFAULT_MEETING`
- `OPENCLAW_GOOGLE_MEET_PREVIEW_ACK``GOOGLE_MEET_PREVIEW_ACK`
@ -277,15 +278,17 @@ openclaw googlemeet resolve-space --meeting https://meet.google.com/abc-defg-hij
openclaw googlemeet preflight --meeting https://meet.google.com/abc-defg-hij
```
只有在确认你的 Cloud 项目、OAuth 主体以及会议参与者都已加入用于 Meet 媒体 API 的 Google Workspace Developer Preview Program 后,才设置 `preview.enrollmentAcknowledged: true`
只有在确认你的 Cloud 项目、OAuth 主体会议参与者都已加入用于 Meet 媒体 API 的 Google Workspace Developer Preview Program 后,才设置 `preview.enrollmentAcknowledged: true`
## 配置
常见的 Chrome 实时路径只需要启用该插件、安装 BlackHole 和 SoX并配置一个 OpenAI 密钥
常见的 Chrome 实时路径只需要启用插件、安装 BlackHole、安装 SoX以及一个后端实时语音提供商密钥。OpenAI 是默认选项;设置 `realtime.provider: "google"` 可使用 Google Gemini Live
```bash
brew install blackhole-2ch sox
export OPENAI_API_KEY=sk-...
# or
export GEMINI_API_KEY=...
```
`plugins.entries.google-meet.config` 下设置插件配置:
@ -313,8 +316,8 @@ export OPENAI_API_KEY=sk-...
- `chrome.audioOutputCommand`SoX `play` 命令,从 stdin 读取 8 kHz G.711 mu-law 音频
- `realtime.provider: "openai"`
- `realtime.toolPolicy: "safe-read-only"`
- `realtime.instructions`:简短的口头回复,并在需要更深入回答时使用 `openclaw_agent_consult`
- `realtime.introMessage`:实时桥接连接时进行简短的口头就绪检查;将其设为 `""` 可静默加入
- `realtime.instructions`:简短的口头回复,较深层回答使用 `openclaw_agent_consult`
- `realtime.introMessage`实时桥接连接时进行简短的口头就绪检查;将其设为 `""` 可静默加入
可选覆盖项:
@ -330,8 +333,15 @@ export OPENAI_API_KEY=sk-...
node: "parallels-macos",
},
realtime: {
provider: "google",
toolPolicy: "owner",
introMessage: "Say exactly: I'm here.",
providers: {
google: {
model: "gemini-2.5-flash-native-audio-preview-12-2025",
voice: "Kore",
},
},
},
}
```
@ -366,7 +376,7 @@ export OPENAI_API_KEY=sk-...
当 Chrome 运行在 Gateway 网关主机上时,使用 `transport: "chrome"`。当 Chrome 运行在已配对节点上(例如 Parallels VM使用 `transport: "chrome-node"`。在这两种情况下,实时模型和 `openclaw_agent_consult` 都运行在 Gateway 网关主机上,因此模型凭证会保留在那里。
使用 `action: "status"` 可列出活动会话或检查某个会话 ID。使用带有 `sessionId``message``action: "speak"` 可让实时智能体立即发声。使用 `action: "leave"` 可将会话标记为已结束。
使用 `action: "status"` 可列出活动会话,或检查某个会话 ID。使用 `action: "speak"` 并提供 `sessionId``message`,可让实时智能体立即发言。使用 `action: "leave"` 可将某个会话标记为已结束。
```json
{
@ -378,17 +388,17 @@ export OPENAI_API_KEY=sk-...
## 实时智能体咨询
Chrome 实时模式针对实时语音循环进行了优化。实时语音提供商会听取会议音频,并通过已配置的音频桥接发声。当实时模型需要更深入的推理、最新信息或普通 OpenClaw 工具时,它可以调用 `openclaw_agent_consult`
Chrome 实时模式针对实时语音回路进行了优化。实时语音提供商会听取会议音频,并通过已配置的音频桥接进行发声。当实时模型需要更深入的推理、最新信息或常规 OpenClaw 工具时,它可以调用 `openclaw_agent_consult`
咨询工具会在后台运行常规 OpenClaw 智能体,附带最近的会议转录上下文,并向实时语音会话返回简洁的口头答复。随后,语音模型可以将该答复说回会议中。
咨询工具会在后台运行常规 OpenClaw 智能体,并结合最近的会议转录上下文,向实时语音会话返回简洁的口头回答。随后,语音模型可以将该回答说回会议中。
`realtime.toolPolicy` 用于控制咨询运行方式:
`realtime.toolPolicy` 控制咨询运行方式:
- `safe-read-only`:暴露咨询工具,并将常规智能体限制为使用 `read`、`web_search`、`web_fetch`、`x_search`、`memory_search` 和 `memory_get`
- `owner`:暴露咨询工具,并允许常规智能体使用正常的智能体工具策略。
- `owner`:暴露咨询工具,并常规智能体使用正常的智能体工具策略。
- `none`:不向实时语音模型暴露咨询工具。
咨询会话键按每个 Meet 会话进行作用域限定,因此在同一场会议期间,后续的咨询调用可以复用之前的咨询上下文。
咨询会话键按每个 Meet 会话进行作用域限定,因此在同一场会议中,后续咨询调用可以复用先前的咨询上下文。
要在 Chrome 完全加入通话后强制执行一次口头就绪检查:
@ -398,16 +408,16 @@ openclaw googlemeet speak meet_... "Say exactly: I'm here and listening."
## 说明
Google Meet 的官方媒体 API 偏向接收,因此要在 Meet 通话中发声,仍然需要一个参与者路径。该插件将这一边界保持为可见状态Chrome 负责浏览器参会和本地音频路由Twilio 负责电话拨入参会
Google Meet 的官方媒体 API 偏向接收,因此要在 Meet 通话中发声,仍然需要一个参与者路径。该插件会让这一边界保持可见Chrome 负责浏览器参与和本地音频路由Twilio 负责电话拨入参与
Chrome 实时模式需要以下两种方式之一:
- `chrome.audioInputCommand``chrome.audioOutputCommand`OpenClaw 自主管理实时模型桥接,并在这些命令与所选实时语音提供商之间传输 8 kHz G.711 mu-law 音频。
- `chrome.audioBridgeCommand`:由一个外部桥接命令负责整个本地音频路径,并且它在启动或验证其守护进程后必须退出。
- `chrome.audioInputCommand` `chrome.audioOutputCommand`OpenClaw 拥有实时模型桥接,并在这些命令与所选实时语音提供商之间传输 8 kHz G.711 mu-law 音频。
- `chrome.audioBridgeCommand`:由外部桥接命令负责整个本地音频路径,并且必须在启动或验证其守护进程后退出。
为了获得干净的双工音频,请将 Meet 输出和 Meet 麦克风路由到独的虚拟设备,或使用类似 Loopback 的虚拟设备图。单个共享的 BlackHole 设备可能会将其他参与者的声音回声送回通话中。
为了获得干净的双工音频,请将 Meet 输出和 Meet 麦克风路由到独的虚拟设备,或使用类似 Loopback 的虚拟设备拓扑。单个共享的 BlackHole 设备可能会将其他参与者的声音回送到通话中。
`googlemeet speak` 会触发 Chrome 会话当前活动的实时音频桥接。`googlemeet leave` 会停止该桥接。对于通过 Voice Call 插件委托的 Twilio 会话,`leave` 还会挂断底层语音通话。
`googlemeet speak` 会触发 Chrome 会话的活动实时音频桥接。`googlemeet leave` 会停止该桥接。对于通过 Voice Call 插件委托的 Twilio 会话,`leave` 还会挂断底层语音通话。
## 相关内容

View File

@ -1,41 +1,41 @@
---
read_when:
- 你想从 OpenClaw 发起一通外呼语音电
- 你想从 OpenClaw 发起一个呼出语音通
- 你正在配置或开发 voice-call 插件
summary: Voice Call 插件:通过 Twilio/Telnyx/Plivo 进行呼出呼入通话(插件安装 + 配置 + CLI
summary: Voice Call 插件:通过 Twilio/Telnyx/Plivo 进行呼出 + 呼入通话(插件安装 + 配置 + CLI
title: Voice call 插件
x-i18n:
generated_at: "2026-04-24T00:54:21Z"
generated_at: "2026-04-24T09:19:16Z"
model: gpt-5.4
provider: openai
source_hash: 4cd57118133506c22604ab9592a823546a91795ab425de4b7a81edbbb8374e6d
source_hash: 6aed4e33ce090c86f43c71280f033e446f335c53d42456fdc93c9938250e9af6
source_path: plugins/voice-call.md
workflow: 15
---
# Voice Call插件
通过插件为 OpenClaw 提供语音通话功能。支持呼通知,以及带有呼入策略的多轮对话。
通过插件为 OpenClaw 提供语音通话。支持呼通知,以及带有呼入策略的多轮对话。
当前提供商:
- `twilio`Programmable Voice + Media Streams
- `telnyx`Call Control v2
- `plivo`Voice API + XML transfer + GetInput speech
- `mock`(开发用/无网络)
- `mock`(开发 / 无网络)
快速理解:
快速理解模型
- 安装插件
- 重启 Gateway 网关
- 在 `plugins.entries.voice-call.config`进行配置
- 在 `plugins.entries.voice-call.config` 下配置
- 使用 `openclaw voicecall ...``voice_call` 工具
## 运行位置(本地 vs 远程)
Voice Call 插件运行在 **Gateway 网关进程内部**
如果你使用远程 Gateway 网关,请在**运行 Gateway 网关的机器**上安装/配置该插件,然后重启 Gateway 网关以加载它。
如果你使用远程 Gateway 网关,请在**运行 Gateway 网关的机器**上安装 / 配置该插件,然后重启 Gateway 网关以加载它。
## 安装
@ -47,7 +47,7 @@ openclaw plugins install @openclaw/voice-call
之后重启 Gateway 网关。
### 选项 B从本地文件夹安装开发用,不复制)
### 选项 B从本地文件夹安装开发,无需复制)
```bash
PLUGIN_SRC=./path/to/local/voice-call-plugin
@ -68,8 +68,8 @@ cd "$PLUGIN_SRC" && pnpm install
"voice-call": {
enabled: true,
config: {
provider: "twilio", // or "telnyx" | "plivo" | "mock"
fromNumber: "+15550001234", // or TWILIO_FROM_NUMBER for Twilio
provider: "twilio", // "telnyx" | "plivo" | "mock"
fromNumber: "+15550001234", // 或者对 Twilio 使用 TWILIO_FROM_NUMBER
toNumber: "+15550005678",
twilio: {
@ -80,8 +80,8 @@ cd "$PLUGIN_SRC" && pnpm install
telnyx: {
apiKey: "...",
connectionId: "...",
// Telnyx webhook public key from the Telnyx Mission Control Portal
// (Base64 string; can also be set via TELNYX_PUBLIC_KEY).
// 来自 Telnyx Mission Control Portal 的 Telnyx webhook 公钥
// Base64 字符串;也可以通过 TELNYX_PUBLIC_KEY 设置)。
publicKey: "...",
},
@ -90,19 +90,19 @@ cd "$PLUGIN_SRC" && pnpm install
authToken: "...",
},
// Webhook server
// Webhook 服务器
serve: {
port: 3334,
path: "/voice/webhook",
},
// Webhook security (recommended for tunnels/proxies)
// Webhook 安全性(推荐用于 tunnel / 代理)
webhookSecurity: {
allowedHosts: ["voice.example.com"],
trustedProxyIPs: ["100.64.0.1"],
},
// Public exposure (pick one)
// 公开暴露(选择一种)
// publicUrl: "https://example.ngrok.app/voice/webhook",
// tunnel: { provider: "ngrok" },
// tailscale: { mode: "funnel", path: "/voice/webhook" }
@ -113,11 +113,11 @@ cd "$PLUGIN_SRC" && pnpm install
streaming: {
enabled: true,
provider: "openai", // optional; first registered realtime transcription provider when unset
provider: "openai", // 可选;未设置时使用第一个已注册的实时转录提供商
streamPath: "/voice/stream",
providers: {
openai: {
apiKey: "sk-...", // optional if OPENAI_API_KEY is set
apiKey: "sk-...", // 如果已设置 OPENAI_API_KEY则可选
model: "gpt-4o-transcribe",
silenceDurationMs: 800,
vadThreshold: 0.5,
@ -128,6 +128,17 @@ cd "$PLUGIN_SRC" && pnpm install
maxPendingConnectionsPerIp: 4,
maxConnections: 128,
},
realtime: {
enabled: false,
provider: "google", // 可选;未设置时使用第一个已注册的实时语音提供商
providers: {
google: {
model: "gemini-2.5-flash-native-audio-preview-12-2025",
voice: "Kore",
},
},
},
},
},
},
@ -137,44 +148,121 @@ cd "$PLUGIN_SRC" && pnpm install
说明:
- Twilio/Telnyx 需要一个**可被公网访问**的 webhook URL。
- Plivo 需要一个**可公网访问**的 webhook URL。
- `mock` 是本地开发用提供商(不发起网络调用)。
- Twilio / Telnyx 需要一个**可从公网访问**的 webhook URL。
- Plivo 需要一个**可公网访问**的 webhook URL。
- `mock` 是本地开发提供商(不进行网络调用)。
- 如果旧配置仍在使用 `provider: "log"`、`twilio.from` 或旧版 `streaming.*` OpenAI 键,请运行 `openclaw doctor --fix` 进行重写。
- Telnyx 需要 `telnyx.publicKey`(或 `TELNYX_PUBLIC_KEY`,除非 `skipSignatureVerification` 为 true
- 除非 `skipSignatureVerification` 为 true否则 Telnyx 需要 `telnyx.publicKey`(或 `TELNYX_PUBLIC_KEY`)。
- `skipSignatureVerification` 仅用于本地测试。
- 如果你使用 ngrok 免费层,请将 `publicUrl` 设置为精确的 ngrok URL签名校验始终会强制执行。
- `tunnel.allowNgrokFreeTierLoopbackBypass: true` 仅在 `tunnel.provider="ngrok"``serve.bind` 为 loopbackngrok 本地代理)时,允许带有无效签名的 Twilio webhook。仅用于本地开发。
- Ngrok 免费层 URL 可能会变化或增加中间页行为;如果 `publicUrl` 发生漂移Twilio 签名将校验失败。生产环境中,优先使用稳定域名或 Tailscale funnel。
- Ngrok 免费层 URL 可能会变化,或增加中间页行为;如果 `publicUrl` 漂移Twilio 签名校验将失败。生产环境中,优先使用稳定域名或 Tailscale funnel。
- `realtime.enabled` 会启动完整的语音到语音对话;不要与 `streaming.enabled` 同时启用。
- 流式传输安全默认值:
- `streaming.preStartTimeoutMs` 会关闭那些从未发送有效 `start` 帧的套接字。
- `streaming.maxPendingConnections` 限制未认证 pre-start 套接字的总数。
- `streaming.maxPendingConnectionsPerIp` 限制每个源 IP 的未认证 pre-start 套接字数量。
- `streaming.maxConnections` 限制打开的媒体流套接字总数(待启动 + 活跃)。
- 运行时回退目前仍会接受这些旧的 voice-call 键,但推荐的重写路径是 `openclaw doctor --fix`,而这个兼容层只是临时的
- `streaming.maxPendingConnections` 限制未认证、启动前套接字的总数。
- `streaming.maxPendingConnectionsPerIp` 限制每个源 IP 的未认证、启动前套接字数量。
- `streaming.maxConnections` 限制打开的媒体流套接字总数(等待中 + 活跃中)。
- 运行时回退当前仍接受这些旧的 voice-call 键,但重写路径是 `openclaw doctor --fix`,兼容垫片只是临时方案
## 流式转写
## 实时语音对话
`streaming` 用于为实时通话音频选择一个实时转写提供商。
`realtime` 为实时通话音频选择一个全双工实时语音提供商。
它与 `streaming` 分开,后者只会将音频转发给实时转录提供商。
当前运行时行为:
- `streaming.provider` 是可选的。如果未设置Voice Call 会使用第一个已注册的实时转写提供商。
- 内置的实时转写提供商包括 Deepgram`deepgram`、ElevenLabs`elevenlabs`、Mistral`mistral`、OpenAI`openai`)以及 xAI`xai`),它们由各自的提供商插件注册。
- 提供商自有的原始配置位于 `streaming.providers.<providerId>` 下。
- 如果 `streaming.provider` 指向了未注册的提供商或者根本没有注册任何实时转写提供商Voice Call 会记录一条警告,并跳过媒体流处理,而不是让整个插件失败。
- `realtime.enabled` 支持用于 Twilio Media Streams。
- `realtime.enabled` 不能与 `streaming.enabled` 组合使用。
- `realtime.provider` 是可选的。未设置时Voice Call 会使用第一个已注册的实时语音提供商。
- 内置的实时语音提供商包括 Google Gemini Live`google`)和 OpenAI`openai`),由各自的提供商插件注册。
- 提供商拥有的原始配置位于 `realtime.providers.<providerId>` 下。
- 如果 `realtime.provider` 指向未注册的提供商或者根本没有注册任何实时语音提供商Voice Call 会记录一条警告并跳过实时媒体,而不是让整个插件失败。
OpenAI 流式转写默认值:
Google Gemini Live 实时默认值:
- API 密钥:`streaming.providers.openai.apiKey` 或 `OPENAI_API_KEY`
- 模型:`gpt-4o-transcribe`
- API key`realtime.providers.google.apiKey`、`GEMINI_API_KEY` 或 `GOOGLE_GENERATIVE_AI_API_KEY`
- model`gemini-2.5-flash-native-audio-preview-12-2025`
- voice`Kore`
示例:
```json5
{
plugins: {
entries: {
"voice-call": {
config: {
provider: "twilio",
inboundPolicy: "allowlist",
allowFrom: ["+15550005678"],
realtime: {
enabled: true,
provider: "google",
instructions: "简短回答,并在使用工具前先询问。",
providers: {
google: {
apiKey: "${GEMINI_API_KEY}",
model: "gemini-2.5-flash-native-audio-preview-12-2025",
voice: "Kore",
},
},
},
},
},
},
},
}
```
改用 OpenAI
```json5
{
plugins: {
entries: {
"voice-call": {
config: {
realtime: {
enabled: true,
provider: "openai",
providers: {
openai: {
apiKey: "${OPENAI_API_KEY}",
},
},
},
},
},
},
},
}
```
请参阅 [Google provider](/zh-CN/providers/google) 和 [OpenAI provider](/zh-CN/providers/openai),了解提供商特定的实时语音选项。
## 流式转录
`streaming` 为实时通话音频选择一个实时转录提供商。
当前运行时行为:
- `streaming.provider` 是可选的。未设置时Voice Call 会使用第一个已注册的实时转录提供商。
- 内置的实时转录提供商包括 Deepgram`deepgram`、ElevenLabs`elevenlabs`、Mistral`mistral`、OpenAI`openai`)和 xAI`xai`),由各自的提供商插件注册。
- 提供商拥有的原始配置位于 `streaming.providers.<providerId>` 下。
- 如果 `streaming.provider` 指向未注册的提供商或者根本没有注册任何实时转录提供商Voice Call 会记录一条警告,并跳过媒体流式传输,而不是让整个插件失败。
OpenAI 流式转录默认值:
- API key`streaming.providers.openai.apiKey` 或 `OPENAI_API_KEY`
- model`gpt-4o-transcribe`
- `silenceDurationMs``800`
- `vadThreshold``0.5`
xAI 流式转写默认值:
xAI 流式转默认值:
- API 密钥:`streaming.providers.xai.apiKey` 或 `XAI_API_KEY`
- 端点:`wss://api.x.ai/v1/stt`
- API key`streaming.providers.xai.apiKey` 或 `XAI_API_KEY`
- endpoint`wss://api.x.ai/v1/stt`
- `encoding``mulaw`
- `sampleRate``8000`
- `endpointingMs``800`
@ -194,7 +282,7 @@ xAI 流式转写默认值:
streamPath: "/voice/stream",
providers: {
openai: {
apiKey: "sk-...", // optional if OPENAI_API_KEY is set
apiKey: "sk-...", // 如果已设置 OPENAI_API_KEY则可选
model: "gpt-4o-transcribe",
silenceDurationMs: 800,
vadThreshold: 0.5,
@ -208,7 +296,7 @@ xAI 流式转写默认值:
}
```
为使用 xAI
改用 xAI
```json5
{
@ -222,7 +310,7 @@ xAI 流式转写默认值:
streamPath: "/voice/stream",
providers: {
xai: {
apiKey: "${XAI_API_KEY}", // optional if XAI_API_KEY is set
apiKey: "${XAI_API_KEY}", // 如果已设置 XAI_API_KEY则可选
endpointingMs: 800,
language: "en",
},
@ -235,7 +323,7 @@ xAI 流式转写默认值:
}
```
旧键仍然会由 `openclaw doctor --fix` 自动迁移:
旧键仍可通过 `openclaw doctor --fix` 自动迁移:
- `streaming.sttProvider``streaming.provider`
- `streaming.openaiApiKey``streaming.providers.openai.apiKey`
@ -243,16 +331,16 @@ xAI 流式转写默认值:
- `streaming.silenceDurationMs``streaming.providers.openai.silenceDurationMs`
- `streaming.vadThreshold``streaming.providers.openai.vadThreshold`
## 过期通话清理器
## 陈旧通话清理器
使用 `staleCallReaperSeconds` 可结束那些始终没有收到终态 webhook 的通话
(例如,始终未完成的 notify 模式通话)。默认值为 `0`
使用 `staleCallReaperSeconds` 来结束那些从未收到终态 webhook 的通话
(例如,永远没有完成的通知模式通话)。默认值为 `0`
(禁用)。
推荐范围:
- **生产环境:** 对于 notify 风格流程,使用 `120``300` 秒。
- 保持该值**高于 `maxDurationSeconds`**以便正常通话能够完成。
- **生产环境:** 通知类流程使用 `120``300` 秒。
- 保持该值**高于 `maxDurationSeconds`**这样正常通话才能完成。
一个不错的起始值是 `maxDurationSeconds + 3060` 秒。
示例:
@ -272,30 +360,32 @@ xAI 流式转写默认值:
}
```
## Webhook 安全
## Webhook 安全
当 Gateway 网关前面有代理或隧道时,插件会重建用于签名校验的公网 URL。
这些选项用于控制信任哪些转发头。
当前端有代理或 tunnel 位于 Gateway 网关之前时,插件会重建
用于签名校验的公开 URL。这些选项用于控制哪些转发头
会被信任。
`webhookSecurity.allowedHosts` 用于允许来自转发头的主机名
`webhookSecurity.allowedHosts` 会对转发头中的主机进行白名单限制
`webhookSecurity.trustForwardingHeaders` 会在没有允许列表的情况下信任转发头。
`webhookSecurity.trustForwardingHeaders` 会在没有白名单的情况下信任转发头。
`webhookSecurity.trustedProxyIPs` 仅在请求的远端 IP 与列表匹配时,
才信任转发头。
`webhookSecurity.trustedProxyIPs` 仅在请求的远端 IP
与列表匹配时,才信任转发头。
Twilio 和 Plivo 默认启用 webhook 重放保护。被重放的有效 webhook
请求会被确认接收,但会跳过副作用处理。
Twilio 和 Plivo 启用 webhook 重放保护。被重放的有效 webhook
请求会被确认,但会跳过副作用处理。
Twilio 对话轮次在 `<Gather>` 回调中包含每轮专属 token因此
过期/重放的语音回调无法满足更新的待处理转写轮次。
陈旧 / 重放的语音回调无法满足更新的待处理转录轮次。
如果缺少提供商所要求的签名头,未认证的 webhook 请求会在读取请求体之前被拒绝。
未认证的 webhook 请求会在读取 body 之前被拒绝,前提是缺少
该提供商要求的签名头。
voice-call webhook 使用共享的预认证请求体配置文件64 KB / 5 秒),
且在签名校验前还会施加每个 IP 的进行中请求数量上限。
voice-call webhook 使用共享的预认证 body 配置文件64 KB / 5 秒),
在签名校验前对每个 IP 的进行中请求数量设置上限。
使用稳定公主机的示例:
使用稳定公主机的示例:
```json5
{
@ -314,11 +404,11 @@ voice-call webhook 使用共享的预认证请求体配置文件64 KB / 5 秒
}
```
## 通话 TTS
## 用于通话 TTS
Voice Call 会使用核心 `messages.tts` 配置来为通话提供
流式语音。你可以在插件配置下用**相同的结构**
进行覆盖——它会与 `messages.tts` 深度合并。
流式语音。你可以在插件配置下用**相同的结构**
对其进行覆盖——它会与 `messages.tts` 深度合并。
```json5
{
@ -336,11 +426,11 @@ Voice Call 会使用核心 `messages.tts` 配置来为通话提供
说明:
- 插件配置中的旧版 `tts.<provider>` 键(`openai`、`elevenlabs`、`microsoft`、`edge`)会在加载时自动迁移到 `tts.providers.<provider>`。在提交的配置中,优先使用 `providers` 结构。
- **Microsoft speech 会被语音通话忽略**(电话音频需要 PCM当前 Microsoft 传输层不提供电话场景所需的 PCM 输出)。
- 插件配置中的旧版 `tts.<provider>` 键(`openai`、`elevenlabs`、`microsoft`、`edge`)会在加载时自动迁移到 `tts.providers.<provider>`。在提交的配置中,优先使用 `providers` 结构。
- **Microsoft speech 会被语音通话忽略**(电话音频需要 PCM当前的 Microsoft 传输层不暴露电话用 PCM 输出)。
- 启用 Twilio 媒体流时,会使用核心 TTS否则通话会回退到提供商原生语音。
- 如果 Twilio 媒体流已经处于活状态Voice Call 不会回退到 TwiML `<Say>`。如果该状态下电话 TTS 不可用,则播放请求会失败,而不是混用两播放路径。
- 当电话 TTS 回退到次级提供商时Voice Call 会记录一条带有提供商链(`from`、`to`、`attempts`)的警告,便于调试。
- 如果 Twilio 媒体流已经处于活状态Voice Call 不会回退到 TwiML `<Say>`。如果该状态下电话 TTS 不可用,则播放请求会失败,而不是混用两播放路径。
- 当电话 TTS 回退到次级提供商时Voice Call 会记录一条带有提供商链(`from`、`to`、`attempts`)的警告日志,便于调试。
### 更多示例
@ -359,7 +449,7 @@ Voice Call 会使用核心 `messages.tts` 配置来为通话提供
}
```
对通话覆盖为 ElevenLabs其他地方仍保留核心默认值):
为通话覆盖为 ElevenLabs在其他地方保留核心默认值):
```json5
{
@ -384,7 +474,7 @@ Voice Call 会使用核心 `messages.tts` 配置来为通话提供
}
```
通话覆盖 OpenAI 模型(深度合并示例):
通话覆盖 OpenAI 模型(深度合并示例):
```json5
{
@ -415,14 +505,15 @@ Voice Call 会使用核心 `messages.tts` 配置来为通话提供
{
inboundPolicy: "allowlist",
allowFrom: ["+15550001234"],
inboundGreeting: "Hello! How can I help?",
inboundGreeting: "你好!我可以怎么帮你?",
}
```
`inboundPolicy: "allowlist"` 是一种低保障的来电号码筛选机制。插件会对提供商提供的 `From` 值进行标准化,并将其与 `allowFrom` 进行比较。
Webhook 校验可以验证提供商投递与载荷完整性,但
不能证明 PSTN/VoIP 来电号码的实际归属权。请将 `allowFrom` 视为
来电显示筛选,而不是强身份验证。
`inboundPolicy: "allowlist"` 是一种低保障的来电号码筛选机制。插件会
对提供商提供的 `From` 值进行规范化,并将其与 `allowFrom` 进行比较。
Webhook 校验可以验证提供商投递和负载完整性,但
无法证明 PSTN / VoIP 来电号码的归属权。请将 `allowFrom` 视为
来电显示过滤,而不是强来电身份认证。
自动响应使用智能体系统。可通过以下项进行调优:
@ -432,52 +523,52 @@ Webhook 校验可以验证提供商投递与载荷完整性,但
### 语音输出约定
对于自动响应Voice Call 会向系统提示词追加一个严格的语音输出约定:
对于自动响应Voice Call 会向 system prompt 追加一个严格的语音输出约定:
- `{"spoken":"..."}`
随后 Voice Call 会以防御性方式提取语音文本:
随后Voice Call 会以防御性方式提取语音文本:
- 忽略被标记为推理/错误内容的载
- 解析直接 JSON、带围栏的 JSON或内联 `"spoken"` 键。
- 回退到纯文本,并移除可能属于规划/元信息的前导段落。
- 忽略被标记为推理 / 错误内容的载。
- 解析直接 JSON、围栏 JSON 或内联 `"spoken"` 键。
- 回退为纯文本,并移除可能属于规划 / 元信息的开头段落。
这样可以让语音播放聚焦于面向来电者的文本,并避免将规划文本泄露到音频中。
### 对话启动行为
对于`conversation` 通话,首条消息处理与实时播放状态绑定:
对于呼 `conversation` 通话,首条消息处理与实时播放状态绑定:
- 仅当初始问候正在主动播放时,打断队列和自动响应才会被抑制
- 如果初始播放失败,通话会返回 `listening` 状态,且初始消息会保留在队列中以供重试。
- 对于 Twilio 流式传输,初始播放会在流连接建立后立即开始,不会额外延迟。
- 仅当初始问候正在主动播放时,才会抑制打断队列清空和自动响应。
- 如果初始播放失败,通话会返回`listening`,初始消息会保留在队列中等待重试。
- 对于 Twilio 流式传输,初始播放会在流连接时立即开始,不会有额外延迟。
### Twilio 流断开宽限期
当 Twilio 媒体流断开时Voice Call 会等待 `2000ms`,然后才自动结束通话:
当 Twilio 媒体流断开时Voice Call 会等待 `2000ms` 后再自动结束通话:
- 如果流在这段时间内重新连接,自动结束会被取消
- 如果宽限期结束后仍未重新注册流,为防止通话卡在活跃状态,系统会结束该通话
- 如果流在这段时间内重新连接,则会取消自动结束。
- 如果宽限期结束后仍没有重新注册流,则会结束通话,以防止通话卡在活动状态
## CLI
```bash
openclaw voicecall call --to "+15555550123" --message "Hello from OpenClaw"
openclaw voicecall start --to "+15555550123" # alias for call
openclaw voicecall start --to "+15555550123" # `call` 的别名
openclaw voicecall continue --call-id <id> --message "Any questions?"
openclaw voicecall speak --call-id <id> --message "One moment"
openclaw voicecall dtmf --call-id <id> --digits "ww123456#"
openclaw voicecall end --call-id <id>
openclaw voicecall status --call-id <id>
openclaw voicecall tail
openclaw voicecall latency # summarize turn latency from logs
openclaw voicecall latency # 从日志汇总轮次延迟
openclaw voicecall expose --mode funnel
```
`latency` 会从默认的 voice-call 存储路径读取 `calls.jsonl`。使用
`--file <path>` 可指向其他日志文件,使用 `--last <n>` 可将分析范围限制为
最后 N 条记录(默认 200。输出包括轮次延迟监听等待时间的
p50/p90/p99 摘要
`--file <path>` 可指向其他日志,使用 `--last <n>` 可将分析限制为
最后 N 条记录(默认 200。输出包括轮次延迟监听等待时间的
p50 / p90 / p99。
## 智能体工具
@ -492,19 +583,19 @@ p50/p90/p99 摘要。
- `end_call`callId
- `get_status`callId
此仓库提供了对应的 Skills 文档:`skills/voice-call/SKILL.md`
此仓库提供了对应的 skill 文档,位于 `skills/voice-call/SKILL.md`
## Gateway 网关 RPC
- `voicecall.initiate``to?`、`message`、`mode?`
- `voicecall.continue``callId`、`message`
- `voicecall.speak``callId`、`message`
- `voicecall.speak``callId`
- `voicecall.dtmf``callId`、`digits`
- `voicecall.end``callId`
- `voicecall.status``callId`
## 相关内容
- [文本转语音](/zh-CN/tools/tts)
- [Talk 模式](/zh-CN/nodes/talk)
- [语音唤醒](/zh-CN/nodes/voicewake)
- [Text-to-speech](/zh-CN/tools/tts)
- [Talk mode](/zh-CN/nodes/talk)
- [Voice wake](/zh-CN/nodes/voicewake)

View File

@ -1,78 +1,77 @@
---
read_when:
- 你正在寻找媒体能力概览
- 决定配置哪个媒体提供商
- 寻找媒体能力概览
- 决定配置哪个媒体提供商
- 了解异步媒体生成的工作方式
summary: 媒体生成、理解和语音能力的统一落地页
summary: 用于媒体生成、理解和语音能力的统一落地页
title: 媒体概览
x-i18n:
generated_at: "2026-04-23T23:05:08Z"
generated_at: "2026-04-24T09:19:17Z"
model: gpt-5.4
provider: openai
source_hash: 469fb173ac3853011b8cd4f89f3ab97dd7d14e12e4e1d7d87e84de05d025a593
source_hash: 39848c6104ebd4feeb37b233b70f3312fa076b535c3b3780336729eb9fdfa4e6
source_path: tools/media-overview.md
workflow: 15
---
# 媒体生成与理解
OpenClaw 可以生成图像、视频和音乐,理解入媒体(图像、音频、视频),并通过文本转语音将回复朗读出来。所有媒体能力都由工具驱动:智能体会根据对话决定何时使用它们,而每个工具只有在至少配置了一个后端提供商时才会出现。
OpenClaw 可以生成图像、视频和音乐,理解入媒体(图像、音频、视频),并通过文本转语音将回复朗读出来。所有媒体能力都由工具驱动:智能体会根据对话决定何时使用它们,并且每个工具仅在至少配置了一个后端提供商时才会出现。
## 能力
## 能力
| 能力 | 工具 | 提供商 | 作用 |
| -------------------- | ---------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| 图像生成 | `image_generate` | ComfyUI、fal、Google、MiniMax、OpenAI、Vydra、xAI | 根据文本提示或参考图像创建或编辑图像 |
| 视频生成 | `video_generate` | Alibaba、BytePlus国际版、ComfyUI、fal、Google、MiniMax、OpenAI、Qwen、Runway、Together、Vydra、xAI | 根据文本、图像或现有视频创建视频 |
| 音乐生成 | `music_generate` | ComfyUI、Google、MiniMax | 根据文本提示创建音乐或音频轨道 |
| 文本转语音TTS | `tts` | ElevenLabs、Microsoft、MiniMax、OpenAI、xAI | 将出站回复转换为语音音频 |
| 媒体理解 | (自动) | 任意具备视觉/音频能力的模型提供商,外加 CLI 回退 | 总结入站图像、音频和视频 |
| 图像生成 | `image_generate` | ComfyUI, fal, Google, MiniMax, OpenAI, Vydra, xAI | 根据文本提示词或参考内容创建或编辑图像 |
| 视频生成 | `video_generate` | Alibaba, BytePlus, ComfyUI, fal, Google, MiniMax, OpenAI, Qwen, Runway, Together, Vydra, xAI | 根据文本、图像或现有视频创建视频 |
| 音乐生成 | `music_generate` | ComfyUI, Google, MiniMax | 根据文本提示词创建音乐或音轨 |
| 文本转语音TTS | `tts` | ElevenLabs, Google, Microsoft, MiniMax, OpenAI, xAI | 将发出的回复转换为语音音频 |
| 媒体理解 | (自动) | 任何支持视觉/音频的模型提供商,以及 CLI 回退方案 | 总结传入的图像、音频和视频 |
## 提供商能力矩阵
下表展示了各提供商在整个平台上支持哪些媒体能力。
下表展示了各提供商在整个平台上支持哪些媒体能力。
| 提供商 | 图像 | 视频 | 音乐 | TTS | STT / 转 | 媒体理解 |
| ---------- | ----- | ----- | ----- | --- | ------------------- | ------------------- |
| Alibaba | | 是 | | | | |
| BytePlus(国际版) | | 是 | | | | |
| ComfyUI | 是 | 是 | 是 | | | |
| Deepgram | | | | | 是 | |
| ElevenLabs | | | | 是 | 是 | |
| fal | 是 | 是 | | | | |
| Google | 是 | 是 | 是 | | | 是 |
| Microsoft | | | | 是 | | |
| MiniMax | 是 | 是 | 是 | 是 | | |
| Mistral | | | | | 是 | |
| OpenAI | 是 | 是 | | 是 | 是 | 是 |
| Qwen | | 是 | | | | |
| Runway | | 是 | | | | |
| Together | | 是 | | | | |
| Vydra | 是 | 是 | | | | |
| xAI | 是 | 是 | | 是 | 是 | 是 |
| 提供商 | 图像 | 视频 | 音乐 | TTS | STT / 转写 | 实时语音 | 媒体理解 |
| ---------- | ----- | ----- | ----- | --- | ------------------- | -------------- | ------------------- |
| Alibaba | | 是 | | | | | |
| BytePlus | | 是 | | | | | |
| ComfyUI | 是 | 是 | 是 | | | | |
| Deepgram | | | | | 是 | | |
| ElevenLabs | | | | 是 | 是 | | |
| fal | 是 | 是 | | | | | |
| Google | 是 | 是 | 是 | | | 是 | 是 |
| Microsoft | | | | 是 | | | |
| MiniMax | 是 | 是 | 是 | 是 | | | |
| Mistral | | | | | 是 | | |
| OpenAI | 是 | 是 | | 是 | 是 | 是 | 是 |
| Qwen | | 是 | | | | | |
| Runway | | 是 | | | | | |
| Together | | 是 | | | | | |
| Vydra | 是 | 是 | | | | | |
| xAI | 是 | 是 | | 是 | 是 | | 是 |
<Note>
媒体理解会使用你在提供商配置中注册的任意具备视觉能力或音频能力的模型。上表重点标出了具备专门媒体理解支持的提供商;大多数拥有多模态模型的 LLM 提供商Anthropic、Google、OpenAI 等)在被配置为当前回复模型时,也可以理解入媒体。
媒体理解会使用你在提供商配置中注册的任何支持视觉或音频的模型。上表重点列出了具有专门媒体理解支持的提供商;大多数带有多模态模型的 LLM 提供商Anthropic、Google、OpenAI 等)在被配置为当前活动回复模型时,也可以理解入媒体。
</Note>
## 异步生成如何工作
## 异步生成的工作方式
视频和音乐生成会作为后台任务运行,因为提供商处理通常需要 30 秒到几分钟不等。当智能体调用 `video_generate``music_generate`OpenClaw 会将请求提交给提供商,立即返回一个任务 ID并在任务账本中跟踪该作业。作业运行期间智能体会继续响应其他消息。当提供商完成处理后OpenClaw 会唤醒智能体,以便它将生成完成的媒体发回原始渠道。图像生成和 TTS 是同步的,会在回复过程中内联完成。
视频和音乐生成会作为后台任务运行,因为提供商处理通常需要 30 秒到数分钟。当智能体调用 `video_generate``music_generate`OpenClaw 会将请求提交给提供商,立即返回任务 ID并在任务账本中跟踪该作业。作业运行期间智能体会继续响应其他消息。当提供商完成处理后OpenClaw 会唤醒智能体,以便它将生成完成的媒体发回原始渠道。图像生成和 TTS 是同步的,会在回复过程中内联完成。
在配置后Deepgram、ElevenLabs、Mistral、OpenAI 和 xAI 都可以通过批`tools.media.audio` 路径转录入站音频。Deepgram、ElevenLabs、Mistral、OpenAI 和 xAI 也会注册 Voice Call 流式 STT 提供商,因此实时电话音频可以被转发到选定的供应商,而无需等待录音完成。
完成配置后Deepgram、ElevenLabs、Mistral、OpenAI 和 xAI 都可以通过批处理 `tools.media.audio` 路径转写传入音频。Deepgram、ElevenLabs、Mistral、OpenAI 和 xAI 还会注册 Voice Call 流式 STT 提供商,因此实时电话音频可以直接转发给所选供应商,而无需等待录音完成。
OpenAI 映射到 OpenClaw 的图像、视频、批量 TTS、批量 STT、Voice Call
流式 STT、实时语音和记忆嵌入能力面。xAI 当前映射到 OpenClaw 的图像、视频、搜索、代码执行、批量 TTS、批量 STT 和 Voice Call 流式 STT 能力面。xAI Realtime 语音是上游能力但在共享实时语音契约能够表示它之前OpenClaw 不会注册它。
Google 映射到 OpenClaw 的图像、视频、音乐、批处理 TTS、后端实时语音和媒体理解功能面。OpenAI 映射到 OpenClaw 的图像、视频、批处理 TTS、批处理 STT、Voice Call 流式 STT、后端实时语音和记忆嵌入功能面。xAI 目前映射到 OpenClaw 的图像、视频、搜索、代码执行、批处理 TTS、批处理 STT 和 Voice Call 流式 STT 功能面。xAI Realtime voice 是上游能力但在共享的实时语音契约能够表示它之前OpenClaw 不会注册该能力。
## 快速链接
- [图像生成](/zh-CN/tools/image-generation) -- 生成和编辑图像
- [视频生成](/zh-CN/tools/video-generation) -- 文本生成视频、图像生成视频和视频视频
- [音乐生成](/zh-CN/tools/music-generation) -- 创建音乐和音
- [视频生成](/zh-CN/tools/video-generation) -- 文本生成视频、图像生成视频和视频生成视频
- [音乐生成](/zh-CN/tools/music-generation) -- 创建音乐和音轨
- [文本转语音](/zh-CN/tools/tts) -- 将回复转换为语音音频
- [媒体理解](/zh-CN/nodes/media-understanding) -- 理解入站图像、音频和视频
- [媒体理解](/zh-CN/nodes/media-understanding) -- 理解传入的图像、音频和视频
## 相关
## 相关内容
- [图像生成](/zh-CN/tools/image-generation)
- [视频生成](/zh-CN/tools/video-generation)