chore(i18n): refresh zh-CN translations
This commit is contained in:
parent
6c038d2f7e
commit
fe98fd0058
@ -2,20 +2,20 @@
|
||||
read_when:
|
||||
- 你想在 OpenClaw 中使用 Google Gemini 模型
|
||||
- 你需要 API 密钥或 OAuth 认证流程
|
||||
summary: Google Gemini 设置(API 密钥 + OAuth、图像生成、媒体理解、网络搜索)
|
||||
summary: Google Gemini 设置(API 密钥 + OAuth、图像生成、媒体理解、TTS、Web 搜索)
|
||||
title: Google(Gemini)
|
||||
x-i18n:
|
||||
generated_at: "2026-04-12T10:03:27Z"
|
||||
generated_at: "2026-04-16T06:26:12Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 64b848add89061b208a5d6b19d206c433cace5216a0ca4b63d56496aecbde452
|
||||
source_hash: ec2d62855f5e80efda758aad71bcaa95c38b1e41761fa1100d47a06c62881419
|
||||
source_path: providers/google.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Google(Gemini)
|
||||
|
||||
Google 插件通过 Google AI Studio 提供对 Gemini 模型的访问,以及通过 Gemini Grounding 提供图像生成、媒体理解(图像/音频/视频)和网络搜索。
|
||||
Google 插件通过 Google AI Studio 提供对 Gemini 模型的访问,同时支持通过 Gemini Grounding 实现图像生成、媒体理解(图像/音频/视频)、文本转语音和 Web 搜索。
|
||||
|
||||
- 提供商:`google`
|
||||
- 认证:`GEMINI_API_KEY` 或 `GOOGLE_API_KEY`
|
||||
@ -24,10 +24,10 @@ Google 插件通过 Google AI Studio 提供对 Gemini 模型的访问,以及
|
||||
|
||||
## 入门指南
|
||||
|
||||
选择你偏好的认证方式,并按照设置步骤操作。
|
||||
选择你偏好的认证方式,并按照设置步骤进行操作。
|
||||
|
||||
<Tabs>
|
||||
<Tab title="API 密钥">
|
||||
<Tab title="API key">
|
||||
**最适合:** 通过 Google AI Studio 进行标准的 Gemini API 访问。
|
||||
|
||||
<Steps>
|
||||
@ -36,7 +36,7 @@ Google 插件通过 Google AI Studio 提供对 Gemini 模型的访问,以及
|
||||
openclaw onboard --auth-choice gemini-api-key
|
||||
```
|
||||
|
||||
或直接传入密钥:
|
||||
或者直接传入密钥:
|
||||
|
||||
```bash
|
||||
openclaw onboard --non-interactive \
|
||||
@ -64,13 +64,13 @@ Google 插件通过 Google AI Studio 提供对 Gemini 模型的访问,以及
|
||||
</Steps>
|
||||
|
||||
<Tip>
|
||||
环境变量 `GEMINI_API_KEY` 和 `GOOGLE_API_KEY` 都可接受。使用你已经配置好的那个即可。
|
||||
环境变量 `GEMINI_API_KEY` 和 `GOOGLE_API_KEY` 都受支持。使用你已经配置好的那个即可。
|
||||
</Tip>
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Gemini CLI(OAuth)">
|
||||
**最适合:** 通过 PKCE OAuth 复用已有的 Gemini CLI 登录,而不是单独使用 API 密钥。
|
||||
<Tab title="Gemini CLI (OAuth)">
|
||||
**最适合:** 通过 PKCE OAuth 复用现有的 Gemini CLI 登录,而不是使用单独的 API 密钥。
|
||||
|
||||
<Warning>
|
||||
`google-gemini-cli` 提供商是非官方集成。一些用户报告称,以这种方式使用 OAuth 时会遇到账户限制。请自行承担使用风险。
|
||||
@ -78,13 +78,13 @@ Google 插件通过 Google AI Studio 提供对 Gemini 模型的访问,以及
|
||||
|
||||
<Steps>
|
||||
<Step title="安装 Gemini CLI">
|
||||
本地 `gemini` 命令必须可在 `PATH` 上使用。
|
||||
本地 `gemini` 命令必须在 `PATH` 中可用。
|
||||
|
||||
```bash
|
||||
# Homebrew
|
||||
brew install gemini-cli
|
||||
|
||||
# or npm
|
||||
# 或 npm
|
||||
npm install -g @google/gemini-cli
|
||||
```
|
||||
|
||||
@ -113,14 +113,14 @@ Google 插件通过 Google AI Studio 提供对 Gemini 模型的访问,以及
|
||||
(或使用 `GEMINI_CLI_*` 变体。)
|
||||
|
||||
<Note>
|
||||
如果 Gemini CLI OAuth 请求在登录后失败,请在 Gateway 网关主机上设置 `GOOGLE_CLOUD_PROJECT` 或 `GOOGLE_CLOUD_PROJECT_ID`,然后重试。
|
||||
如果在登录后 Gemini CLI OAuth 请求失败,请在 Gateway 网关主机上设置 `GOOGLE_CLOUD_PROJECT` 或 `GOOGLE_CLOUD_PROJECT_ID`,然后重试。
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
如果在浏览器流程开始前登录就失败,请确认本地 `gemini` 命令已安装并且位于 `PATH` 上。
|
||||
如果在浏览器流程启动前登录就失败,请确认本地 `gemini` 命令已安装并且位于 `PATH` 中。
|
||||
</Note>
|
||||
|
||||
仅支持 OAuth 的 `google-gemini-cli` 提供商是一个独立的文本推理接口。图像生成、媒体理解和 Gemini Grounding 仍然使用 `google` 提供商 id。
|
||||
仅限 OAuth 的 `google-gemini-cli` 提供商是一个独立的文本推理接口。图像生成、媒体理解和 Gemini Grounding 仍然使用 `google` 提供商 id。
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
@ -132,15 +132,16 @@ Google 插件通过 Google AI Studio 提供对 Gemini 模型的访问,以及
|
||||
| 聊天补全 | 是 |
|
||||
| 图像生成 | 是 |
|
||||
| 音乐生成 | 是 |
|
||||
| 文本转语音 | 是 |
|
||||
| 图像理解 | 是 |
|
||||
| 音频转录 | 是 |
|
||||
| 音频转写 | 是 |
|
||||
| 视频理解 | 是 |
|
||||
| 网络搜索(Grounding) | 是 |
|
||||
| Web 搜索(Grounding) | 是 |
|
||||
| 思考/推理 | 是(Gemini 3.1+) |
|
||||
| Gemma 4 模型 | 是 |
|
||||
|
||||
<Tip>
|
||||
Gemma 4 模型(例如 `gemma-4-26b-a4b-it`)支持思考模式。OpenClaw 会将 `thinkingBudget` 重写为 Google 支持的 `thinkingLevel`,以适配 Gemma 4。将 thinking 设置为 `off` 会保持禁用思考,而不是映射为 `MINIMAL`。
|
||||
Gemma 4 模型(例如 `gemma-4-26b-a4b-it`)支持思考模式。OpenClaw 会将 `thinkingBudget` 重写为 Google 支持的 `thinkingLevel`,用于 Gemma 4。将 thinking 设置为 `off` 会保持思考关闭,而不是映射到 `MINIMAL`。
|
||||
</Tip>
|
||||
|
||||
## 图像生成
|
||||
@ -167,12 +168,12 @@ Gemma 4 模型(例如 `gemma-4-26b-a4b-it`)支持思考模式。OpenClaw 会
|
||||
```
|
||||
|
||||
<Note>
|
||||
有关共享工具参数、提供商选择和故障切换行为,请参阅 [Image Generation](/zh-CN/tools/image-generation)。
|
||||
参见 [图像生成](/zh-CN/tools/image-generation),了解共享工具参数、提供商选择和故障转移行为。
|
||||
</Note>
|
||||
|
||||
## 视频生成
|
||||
|
||||
内置的 `google` 插件还会通过共享的 `video_generate` 工具注册视频生成功能。
|
||||
内置的 `google` 插件还通过共享的 `video_generate` 工具注册了视频生成功能。
|
||||
|
||||
- 默认视频模型:`google/veo-3.1-fast-generate-preview`
|
||||
- 模式:文生视频、图生视频,以及单视频参考流程
|
||||
@ -194,17 +195,17 @@ Gemma 4 模型(例如 `gemma-4-26b-a4b-it`)支持思考模式。OpenClaw 会
|
||||
```
|
||||
|
||||
<Note>
|
||||
有关共享工具参数、提供商选择和故障切换行为,请参阅 [Video Generation](/zh-CN/tools/video-generation)。
|
||||
参见 [视频生成](/zh-CN/tools/video-generation),了解共享工具参数、提供商选择和故障转移行为。
|
||||
</Note>
|
||||
|
||||
## 音乐生成
|
||||
|
||||
内置的 `google` 插件还会通过共享的 `music_generate` 工具注册音乐生成功能。
|
||||
内置的 `google` 插件还通过共享的 `music_generate` 工具注册了音乐生成功能。
|
||||
|
||||
- 默认音乐模型:`google/lyria-3-clip-preview`
|
||||
- 也支持 `google/lyria-3-pro-preview`
|
||||
- 提示词控制:`lyrics` 和 `instrumental`
|
||||
- 输出格式:默认 `mp3`,在 `google/lyria-3-pro-preview` 上还支持 `wav`
|
||||
- 输出格式:默认 `mp3`,另外在 `google/lyria-3-pro-preview` 上支持 `wav`
|
||||
- 参考输入:最多 10 张图像
|
||||
- 基于会话的运行会通过共享的任务/状态流程分离执行,包括 `action: "status"`
|
||||
|
||||
@ -223,19 +224,59 @@ Gemma 4 模型(例如 `gemma-4-26b-a4b-it`)支持思考模式。OpenClaw 会
|
||||
```
|
||||
|
||||
<Note>
|
||||
有关共享工具参数、提供商选择和故障切换行为,请参阅 [Music Generation](/zh-CN/tools/music-generation)。
|
||||
参见 [音乐生成](/zh-CN/tools/music-generation),了解共享工具参数、提供商选择和故障转移行为。
|
||||
</Note>
|
||||
|
||||
## 文本转语音
|
||||
|
||||
内置的 `google` 语音提供商使用 Gemini API 的 TTS 路径和 `gemini-3.1-flash-tts-preview`。
|
||||
|
||||
- 默认语音:`Kore`
|
||||
- 认证:`messages.tts.providers.google.apiKey`、`models.providers.google.apiKey`、`GEMINI_API_KEY` 或 `GOOGLE_API_KEY`
|
||||
- 输出:常规 TTS 附件使用 WAV,Talk/电话场景使用 PCM
|
||||
- 原生语音便笺输出:此 Gemini API 路径不支持,因为 API 返回的是 PCM 而不是 Opus
|
||||
|
||||
要将 Google 用作默认 TTS 提供商:
|
||||
|
||||
```json5
|
||||
{
|
||||
messages: {
|
||||
tts: {
|
||||
auto: "always",
|
||||
provider: "google",
|
||||
providers: {
|
||||
google: {
|
||||
model: "gemini-3.1-flash-tts-preview",
|
||||
voiceName: "Kore",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Gemini API TTS 支持在文本中使用富表现力的方括号音频标签,例如 `[whispers]` 或 `[laughs]`。如果你想让这些标签不出现在可见的聊天回复中,但仍发送给 TTS,请将它们放在 `[[tts:text]]...[[/tts:text]]` 块内:
|
||||
|
||||
```text
|
||||
Here is the clean reply text.
|
||||
|
||||
[[tts:text]][whispers] Here is the spoken version.[[/tts:text]]
|
||||
```
|
||||
|
||||
<Note>
|
||||
限制为 Gemini API 的 Google Cloud Console API 密钥可用于此提供商。这不是单独的 Cloud Text-to-Speech API 路径。
|
||||
</Note>
|
||||
|
||||
## 高级配置
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="直接复用 Gemini 缓存">
|
||||
对于直接的 Gemini API 运行(`api: "google-generative-ai"`),OpenClaw 会将已配置的 `cachedContent` 句柄透传给 Gemini 请求。
|
||||
对于直接的 Gemini API 运行(`api: "google-generative-ai"`),OpenClaw 会将配置好的 `cachedContent` 句柄传递给 Gemini 请求。
|
||||
|
||||
- 可使用 `cachedContent` 或旧版 `cached_content` 配置按模型或全局参数
|
||||
- 如果两者同时存在,`cachedContent` 优先
|
||||
- 使用 `cachedContent` 或旧版 `cached_content`,按模型或全局配置参数
|
||||
- 如果两者都存在,则 `cachedContent` 优先
|
||||
- 示例值:`cachedContents/prebuilt-context`
|
||||
- Gemini 的缓存命中用量会从上游的 `cachedContentTokenCount` 规范化为 OpenClaw 的 `cacheRead`
|
||||
- Gemini 缓存命中用量会从上游的 `cachedContentTokenCount` 规范化为 OpenClaw `cacheRead`
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -260,13 +301,13 @@ Gemma 4 模型(例如 `gemma-4-26b-a4b-it`)支持思考模式。OpenClaw 会
|
||||
|
||||
- 回复文本来自 CLI JSON 的 `response` 字段。
|
||||
- 当 CLI 将 `usage` 留空时,用量会回退到 `stats`。
|
||||
- `stats.cached` 会被规范化为 OpenClaw 的 `cacheRead`。
|
||||
- 如果 `stats.input` 缺失,OpenClaw 会根据 `stats.input_tokens - stats.cached` 推导输入 token 数。
|
||||
- `stats.cached` 会被规范化为 OpenClaw `cacheRead`。
|
||||
- 如果缺少 `stats.input`,OpenClaw 会根据 `stats.input_tokens - stats.cached` 推导输入 token 数。
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="环境和守护进程设置">
|
||||
如果 Gateway 网关以守护进程形式运行(launchd/systemd),请确保 `GEMINI_API_KEY` 对该进程可用(例如在 `~/.openclaw/.env` 中,或通过 `env.shellEnv`)。
|
||||
如果 Gateway 网关以守护进程方式运行(launchd/systemd),请确保 `GEMINI_API_KEY` 对该进程可用(例如在 `~/.openclaw/.env` 中,或通过 `env.shellEnv` 提供)。
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
@ -274,7 +315,7 @@ Gemma 4 模型(例如 `gemma-4-26b-a4b-it`)支持思考模式。OpenClaw 会
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="模型选择" href="/zh-CN/concepts/model-providers" icon="layers">
|
||||
选择提供商、模型引用和故障切换行为。
|
||||
选择提供商、模型引用和故障转移行为。
|
||||
</Card>
|
||||
<Card title="图像生成" href="/zh-CN/tools/image-generation" icon="image">
|
||||
共享图像工具参数和提供商选择。
|
||||
|
||||
@ -3,48 +3,50 @@ read_when:
|
||||
- 为回复启用文本转语音
|
||||
- 配置 TTS 提供商或限制
|
||||
- 使用 `/tts` 命令
|
||||
summary: 用于出站回复的文本转语音(TTS)
|
||||
summary: 用于外发回复的文本转语音(TTS)
|
||||
title: 文本转语音
|
||||
x-i18n:
|
||||
generated_at: "2026-04-12T22:42:45Z"
|
||||
generated_at: "2026-04-16T06:26:25Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: ad79a6be34879347dc73fdab1bd219823cd7c6aa8504e3e4c73e1a0554c837c5
|
||||
source_hash: de7c1dc8831c1ba307596afd48cb4d36f844724887a13b17e35f41ef5174a86f
|
||||
source_path: tools/tts.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# 文本转语音(TTS)
|
||||
|
||||
OpenClaw 可以使用 ElevenLabs、Microsoft、MiniMax 或 OpenAI 将出站回复转换为音频。
|
||||
OpenClaw 可以使用 ElevenLabs、Google Gemini、Microsoft、MiniMax 或 OpenAI 将外发回复转换为音频。
|
||||
它适用于 OpenClaw 能发送音频的任何地方。
|
||||
|
||||
## 支持的服务
|
||||
|
||||
- **ElevenLabs**(主要或回退提供商)
|
||||
- **Microsoft**(主要或回退提供商;当前内置实现使用 `node-edge-tts`)
|
||||
- **MiniMax**(主要或回退提供商;使用 T2A v2 API)
|
||||
- **OpenAI**(主要或回退提供商;也用于摘要)
|
||||
- **ElevenLabs**(主提供商或回退提供商)
|
||||
- **Google Gemini**(主提供商或回退提供商;使用 Gemini API TTS)
|
||||
- **Microsoft**(主提供商或回退提供商;当前内置实现使用 `node-edge-tts`)
|
||||
- **MiniMax**(主提供商或回退提供商;使用 T2A v2 API)
|
||||
- **OpenAI**(主提供商或回退提供商;也用于摘要)
|
||||
|
||||
### Microsoft 语音说明
|
||||
|
||||
当前内置的 Microsoft 语音提供商通过 `node-edge-tts` 库使用 Microsoft Edge 的在线神经网络 TTS 服务。它是托管服务(不是本地服务),使用 Microsoft 的端点,并且不需要 API 密钥。
|
||||
`node-edge-tts` 提供语音配置选项和输出格式,但并非所有选项都受该服务支持。使用 `edge` 的旧版配置和指令输入仍然有效,并会被规范化为 `microsoft`。
|
||||
内置的 Microsoft 语音提供商当前通过 `node-edge-tts` 库使用 Microsoft Edge 的在线神经网络 TTS 服务。它是托管服务(不是本地服务),使用 Microsoft 端点,并且不需要 API 密钥。
|
||||
`node-edge-tts` 提供了语音配置选项和输出格式,但并非所有选项都受到该服务支持。使用 `edge` 的旧版配置和指令输入仍然有效,并会被标准化为 `microsoft`。
|
||||
|
||||
由于这一路径是一个未公布 SLA 或配额的公共 Web 服务,请将其视为尽力而为的服务。如果你需要有保障的限制和支持,请使用 OpenAI 或 ElevenLabs。
|
||||
由于这一路径是一个未公布 SLA 或配额的公共 Web 服务,请将其视为尽力而为的服务。如果你需要有保证的限制和支持,请使用 OpenAI 或 ElevenLabs。
|
||||
|
||||
## 可选密钥
|
||||
|
||||
如果你想使用 OpenAI、ElevenLabs 或 MiniMax:
|
||||
如果你想使用 OpenAI、ElevenLabs、Google Gemini 或 MiniMax:
|
||||
|
||||
- `ELEVENLABS_API_KEY`(或 `XI_API_KEY`)
|
||||
- `GEMINI_API_KEY`(或 `GOOGLE_API_KEY`)
|
||||
- `MINIMAX_API_KEY`
|
||||
- `OPENAI_API_KEY`
|
||||
|
||||
Microsoft 语音**不**需要 API 密钥。
|
||||
|
||||
如果配置了多个提供商,将优先使用所选提供商,其他提供商作为回退选项。
|
||||
自动摘要使用已配置的 `summaryModel`(或 `agents.defaults.model.primary`),因此如果你启用摘要,该提供商也必须完成身份验证。
|
||||
如果配置了多个提供商,将优先使用所选提供商,其他提供商则作为回退选项。
|
||||
自动摘要使用已配置的 `summaryModel`(或 `agents.defaults.model.primary`),因此如果你启用了摘要,该提供商也必须已完成认证。
|
||||
|
||||
## 服务链接
|
||||
|
||||
@ -58,9 +60,9 @@ Microsoft 语音**不**需要 API 密钥。
|
||||
|
||||
## 默认启用吗?
|
||||
|
||||
不是。自动 TTS 默认**关闭**。可通过配置中的 `messages.tts.auto` 启用,或使用 `/tts on` 在本地启用。
|
||||
否。自动 TTS 默认**关闭**。可在配置中通过 `messages.tts.auto` 启用,或在本地通过 `/tts on` 启用。
|
||||
|
||||
当未设置 `messages.tts.provider` 时,OpenClaw 会按注册表自动选择顺序挑选第一个已配置的语音提供商。
|
||||
当未设置 `messages.tts.provider` 时,OpenClaw 会按注册表自动选择顺序选取第一个已配置的语音提供商。
|
||||
|
||||
## 配置
|
||||
|
||||
@ -80,7 +82,7 @@ TTS 配置位于 `openclaw.json` 的 `messages.tts` 下。
|
||||
}
|
||||
```
|
||||
|
||||
### OpenAI 作为主要提供商,ElevenLabs 作为回退提供商
|
||||
### OpenAI 为主,ElevenLabs 为回退
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -121,7 +123,7 @@ TTS 配置位于 `openclaw.json` 的 `messages.tts` 下。
|
||||
}
|
||||
```
|
||||
|
||||
### Microsoft 作为主要提供商(无需 API 密钥)
|
||||
### Microsoft 为主(无 API 密钥)
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -144,7 +146,7 @@ TTS 配置位于 `openclaw.json` 的 `messages.tts` 下。
|
||||
}
|
||||
```
|
||||
|
||||
### MiniMax 作为主要提供商
|
||||
### MiniMax 为主
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -168,6 +170,28 @@ TTS 配置位于 `openclaw.json` 的 `messages.tts` 下。
|
||||
}
|
||||
```
|
||||
|
||||
### Google Gemini 为主
|
||||
|
||||
```json5
|
||||
{
|
||||
messages: {
|
||||
tts: {
|
||||
auto: "always",
|
||||
provider: "google",
|
||||
providers: {
|
||||
google: {
|
||||
apiKey: "gemini_api_key",
|
||||
model: "gemini-3.1-flash-tts-preview",
|
||||
voiceName: "Kore",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Google Gemini TTS 使用 Gemini API 密钥路径。此处可以使用限制为 Gemini API 的 Google Cloud Console API 密钥,它与内置 Google 图像生成提供商所使用的密钥类型相同。解析顺序为 `messages.tts.providers.google.apiKey` -> `models.providers.google.apiKey` -> `GEMINI_API_KEY` -> `GOOGLE_API_KEY`。
|
||||
|
||||
### 禁用 Microsoft 语音
|
||||
|
||||
```json5
|
||||
@ -184,7 +208,7 @@ TTS 配置位于 `openclaw.json` 的 `messages.tts` 下。
|
||||
}
|
||||
```
|
||||
|
||||
### 自定义限制 + prefsPath 路径
|
||||
### 自定义限制 + prefs 路径
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -199,7 +223,7 @@ TTS 配置位于 `openclaw.json` 的 `messages.tts` 下。
|
||||
}
|
||||
```
|
||||
|
||||
### 仅在收到入站语音消息后才用音频回复
|
||||
### 仅在收到入站语音消息后以音频回复
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -233,26 +257,26 @@ TTS 配置位于 `openclaw.json` 的 `messages.tts` 下。
|
||||
|
||||
- `auto`:自动 TTS 模式(`off`、`always`、`inbound`、`tagged`)。
|
||||
- `inbound` 仅在收到入站语音消息后发送音频。
|
||||
- `tagged` 仅在回复包含 `[[tts:key=value]]` 指令或 `[[tts:text]]...[[/tts:text]]` 块时发送音频。
|
||||
- `tagged` 仅当回复包含 `[[tts:key=value]]` 指令或 `[[tts:text]]...[[/tts:text]]` 块时发送音频。
|
||||
- `enabled`:旧版开关(Doctor 会将其迁移到 `auto`)。
|
||||
- `mode`:`"final"`(默认)或 `"all"`(包含工具/分块回复)。
|
||||
- `provider`:语音提供商 id,例如 `"elevenlabs"`、`"microsoft"`、`"minimax"` 或 `"openai"`(会自动回退)。
|
||||
- `mode`:`"final"`(默认)或 `"all"`(包括工具/分块回复)。
|
||||
- `provider`:语音提供商 id,例如 `"elevenlabs"`、`"google"`、`"microsoft"`、`"minimax"` 或 `"openai"`(会自动回退)。
|
||||
- 如果 `provider` **未设置**,OpenClaw 会按注册表自动选择顺序使用第一个已配置的语音提供商。
|
||||
- 旧版 `provider: "edge"` 仍然可用,并会被规范化为 `microsoft`。
|
||||
- 旧版 `provider: "edge"` 仍然可用,并会被标准化为 `microsoft`。
|
||||
- `summaryModel`:用于自动摘要的可选低成本模型;默认为 `agents.defaults.model.primary`。
|
||||
- 接受 `provider/model` 或已配置的模型别名。
|
||||
- `modelOverrides`:允许模型输出 TTS 指令(默认开启)。
|
||||
- `allowProvider` 默认为 `false`(提供商切换需要主动启用)。
|
||||
- `providers.<id>`:由提供商拥有的设置,按语音提供商 id 分组。
|
||||
- `modelOverrides`:允许模型发出 TTS 指令(默认开启)。
|
||||
- `allowProvider` 默认为 `false`(切换提供商需显式启用)。
|
||||
- `providers.<id>`:按语音提供商 id 键控的提供商自有设置。
|
||||
- 旧版直接提供商块(`messages.tts.openai`、`messages.tts.elevenlabs`、`messages.tts.microsoft`、`messages.tts.edge`)会在加载时自动迁移到 `messages.tts.providers.<id>`。
|
||||
- `maxTextLength`:TTS 输入的硬性上限(字符数)。如果超出,`/tts audio` 会失败。
|
||||
- `timeoutMs`:请求超时时间(毫秒)。
|
||||
- `prefsPath`:覆盖本地偏好设置 JSON 路径(提供商/限制/摘要)。
|
||||
- `apiKey` 值会回退到环境变量(`ELEVENLABS_API_KEY`/`XI_API_KEY`、`MINIMAX_API_KEY`、`OPENAI_API_KEY`)。
|
||||
- `maxTextLength`:TTS 输入的硬上限(字符数)。超过时,`/tts audio` 会失败。
|
||||
- `timeoutMs`:请求超时(毫秒)。
|
||||
- `prefsPath`:覆盖本地 prefs JSON 路径(提供商/限制/摘要)。
|
||||
- `apiKey` 值会回退到环境变量(`ELEVENLABS_API_KEY`/`XI_API_KEY`、`GEMINI_API_KEY`/`GOOGLE_API_KEY`、`MINIMAX_API_KEY`、`OPENAI_API_KEY`)。
|
||||
- `providers.elevenlabs.baseUrl`:覆盖 ElevenLabs API 基础 URL。
|
||||
- `providers.openai.baseUrl`:覆盖 OpenAI TTS 端点。
|
||||
- 解析顺序:`messages.tts.providers.openai.baseUrl` -> `OPENAI_TTS_BASE_URL` -> `https://api.openai.com/v1`
|
||||
- 非默认值会被视为与 OpenAI 兼容的 TTS 端点,因此接受自定义模型名和声音名。
|
||||
- 非默认值会被视为兼容 OpenAI 的 TTS 端点,因此接受自定义模型名和语音名。
|
||||
- `providers.elevenlabs.voiceSettings`:
|
||||
- `stability`、`similarityBoost`、`style`:`0..1`
|
||||
- `useSpeakerBoost`:`true|false`
|
||||
@ -262,46 +286,48 @@ TTS 配置位于 `openclaw.json` 的 `messages.tts` 下。
|
||||
- `providers.elevenlabs.seed`:整数 `0..4294967295`(尽力保证确定性)
|
||||
- `providers.minimax.baseUrl`:覆盖 MiniMax API 基础 URL(默认 `https://api.minimax.io`,环境变量:`MINIMAX_API_HOST`)。
|
||||
- `providers.minimax.model`:TTS 模型(默认 `speech-2.8-hd`,环境变量:`MINIMAX_TTS_MODEL`)。
|
||||
- `providers.minimax.voiceId`:声音标识符(默认 `English_expressive_narrator`,环境变量:`MINIMAX_TTS_VOICE_ID`)。
|
||||
- `providers.minimax.voiceId`:语音标识符(默认 `English_expressive_narrator`,环境变量:`MINIMAX_TTS_VOICE_ID`)。
|
||||
- `providers.minimax.speed`:播放速度 `0.5..2.0`(默认 1.0)。
|
||||
- `providers.minimax.vol`:音量 `(0, 10]`(默认 1.0;必须大于 0)。
|
||||
- `providers.minimax.pitch`:音高偏移 `-12..12`(默认 0)。
|
||||
- `providers.microsoft.enabled`:允许使用 Microsoft 语音(默认 `true`;无需 API 密钥)。
|
||||
- `providers.google.model`:Gemini TTS 模型(默认 `gemini-3.1-flash-tts-preview`)。
|
||||
- `providers.google.voiceName`:Gemini 预置语音名称(默认 `Kore`;也接受 `voice`)。
|
||||
- `providers.google.baseUrl`:覆盖 Gemini API 基础 URL。仅接受 `https://generativelanguage.googleapis.com`。
|
||||
- 如果省略 `messages.tts.providers.google.apiKey`,TTS 可以在回退到环境变量之前复用 `models.providers.google.apiKey`。
|
||||
- `providers.microsoft.enabled`:允许使用 Microsoft 语音(默认 `true`;无 API 密钥)。
|
||||
- `providers.microsoft.voice`:Microsoft 神经网络语音名称(例如 `en-US-MichelleNeural`)。
|
||||
- `providers.microsoft.lang`:语言代码(例如 `en-US`)。
|
||||
- `providers.microsoft.outputFormat`:Microsoft 输出格式(例如 `audio-24khz-48kbitrate-mono-mp3`)。
|
||||
- 有效值请参见 Microsoft Speech 输出格式;并非所有格式都受内置的 Edge 后端传输支持。
|
||||
- 有效值请参见 Microsoft Speech 输出格式;并非所有格式都受内置的基于 Edge 的传输支持。
|
||||
- `providers.microsoft.rate` / `providers.microsoft.pitch` / `providers.microsoft.volume`:百分比字符串(例如 `+10%`、`-5%`)。
|
||||
- `providers.microsoft.saveSubtitles`:在音频文件旁写入 JSON 字幕。
|
||||
- `providers.microsoft.proxy`:Microsoft 语音请求的代理 URL。
|
||||
- `providers.microsoft.timeoutMs`:请求超时覆盖值(毫秒)。
|
||||
- `edge.*`:相同 Microsoft 设置的旧版别名。
|
||||
- `edge.*`:同一组 Microsoft 设置的旧版别名。
|
||||
|
||||
## 模型驱动的覆盖(默认开启)
|
||||
## 模型驱动的覆盖项(默认开启)
|
||||
|
||||
默认情况下,模型**可以**为单条回复输出 TTS 指令。
|
||||
当 `messages.tts.auto` 为 `tagged` 时,必须有这些指令才会触发音频。
|
||||
默认情况下,模型**可以**为单条回复发出 TTS 指令。
|
||||
当 `messages.tts.auto` 为 `tagged` 时,必须使用这些指令才会触发音频。
|
||||
|
||||
启用后,模型可以输出 `[[tts:...]]` 指令来覆盖单条回复的声音,
|
||||
还可以选择附带一个 `[[tts:text]]...[[/tts:text]]` 块,用于提供仅应出现在
|
||||
音频中的表现性标签(笑声、歌唱提示等)。
|
||||
启用后,模型可以发出 `[[tts:...]]` 指令来覆盖单条回复的语音设置,还可以选择性提供一个 `[[tts:text]]...[[/tts:text]]` 块,用于写入只应出现在音频中的表现性标记(笑声、唱歌提示等)。
|
||||
|
||||
除非设置了 `modelOverrides.allowProvider: true`,否则 `provider=...` 指令会被忽略。
|
||||
`provider=...` 指令会被忽略,除非设置 `modelOverrides.allowProvider: true`。
|
||||
|
||||
示例回复载荷:
|
||||
|
||||
```
|
||||
给你。
|
||||
Here you go.
|
||||
|
||||
[[tts:voiceId=pMsXgVXv3BLzUgSXRplE model=eleven_v3 speed=1.1]]
|
||||
[[tts:text]](笑)再把这首歌读一遍。[[/tts:text]]
|
||||
[[tts:text]](laughs) Read the song once more.[[/tts:text]]
|
||||
```
|
||||
|
||||
可用的指令键(启用时):
|
||||
|
||||
- `provider`(已注册的语音提供商 id,例如 `openai`、`elevenlabs`、`minimax` 或 `microsoft`;需要 `allowProvider: true`)
|
||||
- `voice`(OpenAI 声音)或 `voiceId`(ElevenLabs / MiniMax)
|
||||
- `model`(OpenAI TTS 模型、ElevenLabs model id 或 MiniMax 模型)
|
||||
- `provider`(已注册的语音提供商 id,例如 `openai`、`elevenlabs`、`google`、`minimax` 或 `microsoft`;需要 `allowProvider: true`)
|
||||
- `voice`(OpenAI 语音)、`voiceName` / `voice_name` / `google_voice`(Google 语音)或 `voiceId`(ElevenLabs / MiniMax)
|
||||
- `model`(OpenAI TTS 模型、ElevenLabs model id 或 MiniMax 模型)或 `google_model`(Google TTS 模型)
|
||||
- `stability`、`similarityBoost`、`style`、`speed`、`useSpeakerBoost`
|
||||
- `vol` / `volume`(MiniMax 音量,0-10)
|
||||
- `pitch`(MiniMax 音高,-12 到 12)
|
||||
@ -309,7 +335,7 @@ TTS 配置位于 `openclaw.json` 的 `messages.tts` 下。
|
||||
- `languageCode`(ISO 639-1)
|
||||
- `seed`
|
||||
|
||||
禁用所有模型覆盖:
|
||||
禁用所有模型覆盖项:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -339,43 +365,44 @@ TTS 配置位于 `openclaw.json` 的 `messages.tts` 下。
|
||||
}
|
||||
```
|
||||
|
||||
## 按用户偏好设置
|
||||
## 每用户偏好设置
|
||||
|
||||
Slash 命令会将本地覆盖写入 `prefsPath`(默认:
|
||||
Slash 命令会将本地覆盖项写入 `prefsPath`(默认:
|
||||
`~/.openclaw/settings/tts.json`,可通过 `OPENCLAW_TTS_PREFS` 或
|
||||
`messages.tts.prefsPath` 覆盖)。
|
||||
|
||||
存储的字段:
|
||||
存储字段:
|
||||
|
||||
- `enabled`
|
||||
- `provider`
|
||||
- `maxLength`(摘要阈值;默认 1500 个字符)
|
||||
- `summarize`(默认 `true`)
|
||||
|
||||
这些值会覆盖该主机上的 `messages.tts.*`。
|
||||
这些设置会覆盖该主机上的 `messages.tts.*`。
|
||||
|
||||
## 输出格式(固定)
|
||||
|
||||
- **Feishu / Matrix / Telegram / WhatsApp**:Opus 语音消息(ElevenLabs 使用 `opus_48000_64`,OpenAI 使用 `opus`)。
|
||||
- 48 kHz / 64 kbps 是语音消息的不错折中方案。
|
||||
- 48 kHz / 64 kbps 是适合语音消息的折中方案。
|
||||
- **其他渠道**:MP3(ElevenLabs 使用 `mp3_44100_128`,OpenAI 使用 `mp3`)。
|
||||
- 44.1 kHz / 128 kbps 是语音清晰度的默认平衡点。
|
||||
- **MiniMax**:MP3(`speech-2.8-hd` 模型,32 kHz 采样率)。原生不支持语音便签格式;如果你需要有保障的 Opus 语音消息,请使用 OpenAI 或 ElevenLabs。
|
||||
- 44.1 kHz / 128 kbps 是语音清晰度的默认平衡方案。
|
||||
- **MiniMax**:MP3(`speech-2.8-hd` 模型,32 kHz 采样率)。原生不支持语音便笺格式;如果你需要有保证的 Opus 语音消息,请使用 OpenAI 或 ElevenLabs。
|
||||
- **Google Gemini**:Gemini API TTS 返回原始 24 kHz PCM。OpenClaw 会将其封装为 WAV 作为音频附件返回,并为 Talk/电话场景直接返回 PCM。此路径不支持原生 Opus 语音便笺格式。
|
||||
- **Microsoft**:使用 `microsoft.outputFormat`(默认 `audio-24khz-48kbitrate-mono-mp3`)。
|
||||
- 内置传输接受 `outputFormat`,但该服务并不提供所有格式。
|
||||
- 内置传输支持 `outputFormat`,但并非所有格式都可从该服务获取。
|
||||
- 输出格式值遵循 Microsoft Speech 输出格式(包括 Ogg/WebM Opus)。
|
||||
- Telegram `sendVoice` 接受 OGG/MP3/M4A;如果你需要有保障的 Opus 语音消息,请使用 OpenAI/ElevenLabs。
|
||||
- 如果配置的 Microsoft 输出格式失败,OpenClaw 会使用 MP3 重试。
|
||||
- Telegram `sendVoice` 接受 OGG/MP3/M4A;如果你需要有保证的 Opus 语音消息,请使用 OpenAI/ElevenLabs。
|
||||
- 如果配置的 Microsoft 输出格式失败,OpenClaw 会重试使用 MP3。
|
||||
|
||||
OpenAI/ElevenLabs 输出格式会按渠道固定(见上文)。
|
||||
OpenAI/ElevenLabs 的输出格式按渠道固定(见上文)。
|
||||
|
||||
## 自动 TTS 行为
|
||||
|
||||
启用后,OpenClaw 会:
|
||||
|
||||
- 如果回复已包含媒体或 `MEDIA:` 指令,则跳过 TTS。
|
||||
- 跳过过短的回复(少于 10 个字符)。
|
||||
- 在启用时,使用 `agents.defaults.model.primary`(或 `summaryModel`)为长回复生成摘要。
|
||||
- 跳过非常短的回复(少于 10 个字符)。
|
||||
- 如果启用,会使用 `agents.defaults.model.primary`(或 `summaryModel`)对较长回复进行摘要。
|
||||
- 将生成的音频附加到回复中。
|
||||
|
||||
如果回复超过 `maxLength` 且摘要已关闭(或摘要模型没有 API 密钥),则会跳过音频,并发送普通文本回复。
|
||||
@ -383,24 +410,24 @@ OpenAI/ElevenLabs 输出格式会按渠道固定(见上文)。
|
||||
## 流程图
|
||||
|
||||
```
|
||||
回复 -> 是否启用 TTS?
|
||||
否 -> 发送文本
|
||||
是 -> 是否有媒体 / MEDIA: / 内容过短?
|
||||
是 -> 发送文本
|
||||
否 -> 长度 > 限制?
|
||||
否 -> TTS -> 附加音频
|
||||
是 -> 是否启用摘要?
|
||||
否 -> 发送文本
|
||||
是 -> 生成摘要(summaryModel 或 agents.defaults.model.primary)
|
||||
-> TTS -> 附加音频
|
||||
Reply -> TTS enabled?
|
||||
no -> send text
|
||||
yes -> has media / MEDIA: / short?
|
||||
yes -> send text
|
||||
no -> length > limit?
|
||||
no -> TTS -> attach audio
|
||||
yes -> summary enabled?
|
||||
no -> send text
|
||||
yes -> summarize (summaryModel or agents.defaults.model.primary)
|
||||
-> TTS -> attach audio
|
||||
```
|
||||
|
||||
## Slash 命令用法
|
||||
|
||||
只有一个命令:`/tts`。
|
||||
启用详情请参见 [Slash 命令](/zh-CN/tools/slash-commands)。
|
||||
启用详情见 [Slash 命令](/zh-CN/tools/slash-commands)。
|
||||
|
||||
Discord 说明:`/tts` 是 Discord 的内置命令,因此 OpenClaw 会在那里注册 `/voice` 作为原生命令。文本形式的 `/tts ...` 仍然可用。
|
||||
Discord 说明:`/tts` 是 Discord 内置命令,因此 OpenClaw 会在那里将 `/voice` 注册为原生命令。文本形式的 `/tts ...` 仍然可用。
|
||||
|
||||
```
|
||||
/tts off
|
||||
@ -414,22 +441,22 @@ Discord 说明:`/tts` 是 Discord 的内置命令,因此 OpenClaw 会在那
|
||||
|
||||
说明:
|
||||
|
||||
- 命令要求发送者已获授权(允许列表/owner 规则仍然适用)。
|
||||
- 命令需要授权发送者(allowlist/owner 规则仍然适用)。
|
||||
- 必须启用 `commands.text` 或原生命令注册。
|
||||
- 配置 `messages.tts.auto` 接受 `off|always|inbound|tagged`。
|
||||
- `/tts on` 会将本地 TTS 偏好写为 `always`;`/tts off` 会将其写为 `off`。
|
||||
- 如果你想使用 `inbound` 或 `tagged` 作为默认值,请使用配置。
|
||||
- 如果你想使用 `inbound` 或 `tagged` 默认值,请使用配置。
|
||||
- `limit` 和 `summary` 存储在本地偏好中,而不是主配置中。
|
||||
- `/tts audio` 会生成一次性音频回复(不会将 TTS 切换为开启)。
|
||||
- `/tts audio` 会生成一次性音频回复(不会切换 TTS 为开启状态)。
|
||||
- `/tts status` 包含最近一次尝试的回退可见性:
|
||||
- 成功回退:`Fallback: <primary> -> <used>` 加上 `Attempts: ...`
|
||||
- 失败:`Error: ...` 加上 `Attempts: ...`
|
||||
- 成功回退:`Fallback: <primary> -> <used>` 加 `Attempts: ...`
|
||||
- 失败:`Error: ...` 加 `Attempts: ...`
|
||||
- 详细诊断:`Attempt details: provider:outcome(reasonCode) latency`
|
||||
- OpenAI 和 ElevenLabs API 失败现在会包含已解析的提供商错误详情和请求 id(如果提供商返回),这些信息会显示在 TTS 错误/日志中。
|
||||
|
||||
## 智能体工具
|
||||
|
||||
`tts` 工具可将文本转换为语音,并返回一个用于回复投递的音频附件。当渠道是 Feishu、Matrix、Telegram 或 WhatsApp 时,音频会作为语音消息而不是文件附件发送。
|
||||
`tts` 工具可将文本转换为语音,并返回用于回复投递的音频附件。当渠道是 Feishu、Matrix、Telegram 或 WhatsApp 时,音频会作为语音消息而不是文件附件发送。
|
||||
|
||||
## Gateway 网关 RPC
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user