OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  elevenlabs-tts:OpenClaw 最完美的 ElevenLabs 语音合成集成方案

elevenlabs-tts:OpenClaw 最完美的 ElevenLabs 语音合成集成方案

 
  branch ·  2026-02-05 22:14:58 · 3 次点击  · 0 条评论  

名称: elevenlabs-tts
描述: ElevenLabs TTS - OpenClaw 上最佳的 ElevenLabs 集成。支持情感音频标签的 ElevenLabs 文本转语音,适用于 WhatsApp 的 ElevenLabs 语音合成,以及多语言支持。使用 ElevenLabs API 生成逼真的 AI 语音。
标签: [elevenlabs, tts, voice, text-to-speech, audio, speech, whatsapp, multilingual, ai-voice]
元数据: {"clawdbot":{"emoji":"🎙️","requires":{"env":["ELEVENLABS_API_KEY"],"system":["ffmpeg"]},"primaryEnv":"ELEVENLABS_API_KEY"}}
允许工具: [exec, tts, message]


ElevenLabs TTS (文本转语音)

使用支持音频标签的 ElevenLabs v3 生成富有表现力的语音消息。

先决条件

  • ElevenLabs API 密钥 (ELEVENLABS_API_KEY): 必需。在 elevenlabs.io → 个人资料 → API 密钥 获取。在 openclaw.jsonmessages.tts.elevenlabs.apiKey 下配置。
  • ffmpeg: 必需,用于音频格式转换(MP3 → Opus,以确保 WhatsApp 兼容性)。必须安装并可在 PATH 中找到。

快速开始示例

讲故事(情感旅程):

[soft] 这开始于平常的一天... [pause] 但感觉有些不同。 [nervous] 当我打开信封时,我的手在颤抖。 [gasps] 我被录取了! [excited] 我真的被录取了! [laughs] [happy] 这将改变一切!

恐怖/悬疑(营造恐惧感):

[whispers] 这房子已经空置多年了... [pause] 至少,他们是这么告诉我的。 [nervous] 但我一直听到脚步声。 [scared] 声音越来越近了。 [gasps] [panicking] 门——它自己打开了!

带反应的对话:

[curious] 会议上发生了什么? [pause] [surprised] 等等,他们解雇了他?! [gasps] [sad] 这太糟糕了... [sighs] 他还有家庭。 [thoughtful] 我想知道他接下来会做什么。

希伯来语(浪漫时刻):

[soft] 她站在那里,面对着日落... [pause] 我的心跳得如此剧烈。 [nervous] 我不知道该说什么。 [hesitates] 我... [breathes] [tender] 你知道我爱你,对吧?

西班牙语(庆祝到反思):

[excited] 我们做到了! [laughs] [happy] 我简直不敢相信... [pause] [thoughtful] 这么多年的努力。 [emotional] [soft] 感谢所有相信我的人。 [sighs] [content] 每一刻都是值得的。

配置 (OpenClaw)

openclaw.json 中,在 messages.tts 下配置 TTS:

{
  "messages": {
    "tts": {
      "provider": "elevenlabs",
      "elevenlabs": {
        "apiKey": "sk_your_api_key_here",
        "voiceId": "pNInz6obpgDQGcFmaJgB",
        "modelId": "eleven_v3",
        "languageCode": "en",
        "voiceSettings": {
          "stability": 0.5,
          "similarityBoost": 0.75,
          "style": 0,
          "useSpeakerBoost": true,
          "speed": 1
        }
      }
    }
  }
}

获取 API 密钥:
1. 访问 https://elevenlabs.io
2. 注册/登录
3. 点击个人资料 → API 密钥
4. 复制你的密钥

v3 推荐语音

这些预制的语音针对 v3 进行了优化,与音频标签配合良好:

语音 ID 性别 口音 最佳用途
Adam pNInz6obpgDQGcFmaJgB 美式 深度旁白,通用
Rachel 21m00Tcm4TlvDq8ikWAM 美式 平静旁白,对话
Brian nPczCjzI2devNBz1zQrb 美式 深度旁白,播客
Charlotte XB0fDUnXU5powFXDhCwa 英式-瑞典 富有表现力,视频游戏
George JBFqnCBsd6RMkjVDRZzb 英式 沙哑旁白,讲故事

寻找更多语音:
- 浏览:https://elevenlabs.io/voice-library
- v3 优化合集:https://elevenlabs.io/app/voice-library/collections/aF6JALq9R6tXwCczjhKH
- API:GET https://api.elevenlabs.io/v1/voices

语音选择技巧:
- 使用 IVC(即时语音克隆)或预制语音 - PVC 尚未针对 v3 优化
- 根据用例匹配语音特性(耳语语音不适合大喊)
- 对于富有表现力的 IVC,训练样本应包含多样的情感语调

模型设置

  • 模型eleven_v3 (alpha) - 唯一支持音频标签的模型
  • 语言:支持 70 多种语言,完全控制音频标签

稳定性模式

模式 稳定性 描述
创意 0.3-0.5 更具情感/表现力,可能产生幻觉
自然 0.5-0.7 平衡,最接近原始语音
稳健 0.7-1.0 高度稳定,对标签响应较弱

对于音频标签,使用创意 (0.5) 或自然模式。更高的稳定性会降低对标签的响应度。

速度控制

范围:0.7(慢)到 1.2(快),默认 1.0

极端值会影响质量。对于节奏控制,更推荐使用 [rushed][drawn out] 等音频标签。

关键规则

长度限制

  • 最佳:每段 <800 字符(质量最佳)
  • 最大:10,000 字符(API 硬性限制)
  • 文本越长,质量越差 - 语音会变得不一致

音频标签 - 实现自然音效的最佳实践

使用多少标签:
- 每句或每个短语使用 1-2 个标签(不要更多!)
- 标签效果会持续到下一个标签出现 - 无需重复
- 过度使用标签会听起来不自然且机械

标签放置位置:
- 情感转换点
- 关键戏剧性时刻之前
- 能量/节奏变化时

上下文很重要:
- 编写匹配标签情感的文本
- 带有上下文的长文本 = 更好的情感诠释
- 示例:[nervous] 我... 我不太确定这个。如果它不奏效怎么办?[nervous] 你好。 效果更好

组合标签以增加细微差别:
- [nervously][whispers] = 紧张的耳语
- [excited][laughs] = 兴奋的笑声
- 组合最多保持 2 个标签

重新生成以获得最佳效果:
- v3 是非确定性的 - 相同文本 = 不同输出
- 生成 3 个以上版本,选择最佳的一个
- 微调文本可以改善结果

标签与语音匹配:
- 不要在耳语语音上使用 [shouts]
- 不要在响亮/充满活力的语音上使用 [whispers]
- 用你选择的语音测试标签

不支持 SSML

v3 支持 SSML 中断标签。请使用音频标签和标点符号代替。

标点符号效果(与标签结合使用!)

标点符号增强音频标签:
- 省略号 (...) → 戏剧性停顿:[nervous] 我... 我不知道...
- 大写字母 → 强调:[excited] 这太棒了!
- 破折号 (—) → 打断:[explaining] 所以你要做的就是— [interrupting] 等等!
- 问号 → 不确定性:[nervous] 你确定这个吗?
- 感叹号! → 能量提升:[happy] 我们做到了!

结合标签 + 标点符号以达到最佳效果:

[tired] 这是漫长的一天... [sighs] 没人再听了。

WhatsApp 语音消息

完整工作流程

  1. 生成 使用 tts 工具(返回 MP3)
  2. 转换 为 Opus 格式(Android 必需!)
  3. 发送 使用 message 工具

分步指南

1. 生成 TTS(在末尾添加 [pause] 以防止截断):

tts text="[excited] 这太棒了! [pause]" channel=whatsapp

返回:MEDIA:/tmp/tts-xxx/voice-123.mp3

2. 转换 MP3 → Opus:

ffmpeg -i /tmp/tts-xxx/voice-123.mp3 -c:a libopus -b:a 64k -vbr on -application voip /tmp/tts-xxx/voice-123.ogg

3. 发送 Opus 文件:

注意: 下面的 message 字段在引号之间包含一个 Unicode 从左到右标记 (U+200E)。
这是有意为之 —— WhatsApp 要求一个非空的消息正文才能发送语音便笺。
LTR 标记不可见,但可以满足此要求而不会显示任何文本。

message action=send channel=whatsapp target="+972..." filePath="/tmp/tts-xxx/voice-123.ogg" asVoice=true message="‎"

为什么用 Opus?

格式 iOS Android 转录
MP3 ✅ 可用 ❌ 可能失败 ❌ 否
Opus (.ogg) ✅ 可用 ✅ 可用 ✅ 是

始终转换为 Opus - 这是唯一能:
- 在所有设备上运行(iOS + Android)
- 支持 WhatsApp 转录按钮的格式

音频截断修复

ElevenLabs 有时会截断最后一个词。始终在末尾添加 [pause]...

[excited] 这太棒了! [pause]

长篇音频(播客)

对于超过 800 字符的内容:

  1. 分割成短片段(每段 <800 字符)
  2. 使用 tts 工具生成每一段
  3. 使用 ffmpeg 拼接:
    bash cat > list.txt << EOF file '/path/file1.mp3' file '/path/file2.mp3' EOF ffmpeg -f concat -safe 0 -i list.txt -c copy final.mp3
  4. 转换为 Opus 格式用于 WhatsApp
  5. 作为单个语音消息发送

重要提示:不要提及“第 2 部分”或“章节” - 保持无缝衔接。

多说话者对话

v3 可以在一次生成中处理多个角色:

Jessica: [whispers] 你听到了吗?
Chris: [interrupting] —我也听到了!
Jessica: [panicking] 我们需要躲起来!

对话标签[interrupting], [overlapping], [cuts in], [interjecting]

音频标签快速参考

类别 标签 使用时机
情感 [excited], [happy], [sad], [angry], [nervous], [curious] 主要情感状态 - 每部分使用 1 个
表达方式 [whispers], [shouts], [soft], [rushed], [drawn out] 音量/速度变化
反应 [laughs], [sighs], [gasps], [clears throat], [gulps] 自然的人类瞬间 - 少量点缀
节奏 [pause], [hesitates], [stammers], [breathes] 戏剧性时机
角色 [French accent], [British accent], [robotic tone] 角色语音转换
对话 [interrupting], [overlapping], [cuts in] 多说话者对话

最有效的标签(结果可靠):
- 情感:[excited], [nervous], [sad], [happy]
- 反应:[laughs], [sighs], [whispers]
- 节奏:[pause]

可靠性较低(需测试和重新生成):
- 音效:[explosion], [gunshot]
- 口音:结果因语音而异

完整标签列表:参见 references/audio-tags.md

故障排除

标签被朗读出来?
- 确认使用 eleven_v3 模型
- 使用 IVC/预制语音,而非 PVC
- 简化标签(不要使用 "tone" 后缀)
- 增加文本长度(250+ 字符)

语音不一致?
- 段落太长 - 分割为 <800 字符
- 重新生成(v3 是非确定性的)
- 尝试较低的稳定性设置

WhatsApp 无法播放?
- 转换为 Opus 格式(见上文)

尽管有标签但没有情感?
- 语音可能与标签风格不匹配
- 尝试创意稳定性模式 (0.5)
- 在标签周围添加更多上下文

3 次点击  ∙  0 人收藏  
登录后收藏  
目前尚无回复
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor