Elevenlabs Toolkit

Polar Sponsor
爱发电 赞助
.NET 9.0

ElevenLabs语音API集成 — 语音合成、音效生成、音乐创作、语音转文字、声音隔离与流式传输。用于构建语音应用...

十一实验室工具包

功能概述

十一实验室工具包是一项面向实际任务的技能,主要用于通过 FastAPI 端点或独立的 Python 函数, 程序化访问所有 7 个十一实验室 API 能力;当使用此工具时;

核心要点

  • 当使用 : Gen 时使用 十一实验室。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;

结果检查与注意事项

若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。

ElevenLabs 工具包

通过 FastAPI 接口或独立 Python 函数,以编程方式访问全部 7 项 ElevenLabs API 功能。

何时使用此工具包 / 何时不应使用此工具包

在以下场景中使用 ElevenLabs:

  • 为视频、演示文稿或内容生成高质量旁白音频(尤其推荐使用 Rachel 或其他保持一致的角色音色)
  • 构建需要实时流式语音输出的语音交互型应用
  • 对音频文件执行语音转文字(STT/Scribe)
  • 根据文本描述生成环境音效或背景音乐
  • 从嘈杂录音中分离出清晰的人声

请勿在以下场景中使用 ElevenLabs:

  • 您需要快速/低成本且对音质无要求的 TTS —— 请改用 本地 TTS(见下文)
  • 您处于离线状态,或无法获取 API 密钥
  • 您正在批量生成大量测试音频,且不希望消耗角色配额

ElevenLabs vs 本地 TTS(kokoro / chatterbox)

评估维度 ElevenLabs 本地 TTS(kokoro/chatterbox)
音色质量 ★★★★★ — 自然、富有表现力 ★★★ — 效果良好,但存在机械感
成本 按字符数扣除月度配额 免费、无限制
延迟 约 300–800ms 的 API 往返耗时 约 50–200ms 的本地推理耗时
音色一致性 命名音色(如 Rachel 等)长期稳定 取决于具体模型
离线可用性 ❌ 需联网 + API 密钥 ✅ 完全本地运行
适用场景 最终旁白、正式发布内容 草稿、测试、大批量任务

经验法则:凡面向终端用户展示/播放的内容,请使用 ElevenLabs;草稿、测试及高吞吐量任务,请使用本地 TTS。

功能列表

工具 接口路径 功能说明
音色列表 GET /api/voices 浏览所有可用音色及其元数据
TTS POST /api/voice/tts 批量文本转语音(支持任意音色、任意语言)
TTS 流式输出 WS /api/voice/stream 基于 WebSocket 的实时流式 TTS 输出
音效生成 POST /api/voice/sfx 根据文本提示生成环境音效
音乐生成 POST /api/voice/music 根据描述生成背景音乐
STT(Scribe) POST /api/voice/stt 带语言自动识别的音频转文字
人声分离 POST /api/voice/isolate 从含噪音频中提取纯净人声

已知音色 ID

以下为 OpenClaw 工作流中已验证可用的音色。请优先使用这些 ID,而非调用 API 获取完整列表:

音色 音色 ID 适用场景
Rachel 21m00Tcm4TlvDq8ikWAM 默认旁白音色 — 清晰、温暖、美式英语
Adam pNInz6obpgDQGcFmaJgB 男性旁白,权威语气
Domi AZnzlk1XvdvUeBnXmlld 充满活力、适合对话场景
Bella EXAVITQu4vr4xnSDxMaL 柔和、轻柔的旁白风格

所有旁白任务的默认音色:除非明确指定其他音色,否则一律使用 Rachel(21m00Tcm4TlvDq8ikWAM)。

如需通过 API 获取当前完整音色列表:

curl -s -H "xi-api-key: $ELEVENLABS_API_KEY" https://api.elevenlabs.io/v1/voices | python3 -m json.tool

快速上手

import httpx

BASE = "http://localhost:8000"  # 您的 FastAPI 应用地址
KEY = os.environ["ELEVENLABS_API_KEY"]

# 获取音色列表
voices = httpx.get(f"{BASE}/api/voices").json()

# 生成语音
audio = httpx.post(f"{BASE}/api/voice/tts", json={
    "text": "Hello world",
    "voice_id": voices[0]["voice_id"],
    "model_id": "eleven_multilingual_v2"
}).content  # 返回原始音频字节

# 生成音效
sfx = httpx.post(f"{BASE}/api/voice/sfx", json={
    "prompt": "ocean waves on a quiet beach at night"
}).content

音频输出格式

TTS 和 SFX 接口返回原始音频字节(非 base64 编码,也非 JSON 格式)。

# 正确:.content 即为字节流
audio_bytes = response.content  # 类型:bytes

# 保存为文件
with open("output.mp3", "wb") as f:
    f.write(audio_bytes)

# 默认输出格式为 MP3
# 文件大小估算:标准质量下,每分钟语音约 1 MB

各接口返回内容说明:

接口路径 响应类型 处理方式
POST /api/voice/tts bytes(MP3) 直接写入 .mp3 文件
POST /api/voice/sfx bytes(MP3) 直接写入 .mp3 文件
POST /api/voice/music bytes(MP3) 直接写入 .mp3 文件
POST /api/voice/stt JSON {"text": "transcription...", "language": "en"}
POST /api/voice/isolate bytes(MP3) 直接写入 .mp3 文件
GET /api/voices JSON 返回 {voice_id, name, labels, ...} 字典列表

音色选择指南

  • 仅英文场景:使用 eleven_turbo_v2_5 — 更快,且无跨语言口音混杂问题
  • 多语言场景:使用 eleven_multilingual_v2 — 支持 29 种语言
  • 口音注意事项:多语言模型可能在不同语言间产生口音混杂。若英文音色听上去带有日语口音,请切换至 turbo 模型。

配额管理

ElevenLabs 对 TTS 按字符计费。关键实践建议:

  • 积极缓存 — 相同文本 + 相同音色 = 相同音频输出
  • 使用 prompt-cache 技能,在调用 TTS 前通过 SHA-256 去重
  • 一篇 6 场景儿童故事 ≈ 2,000 字符
  • 免费版:每月 10k 字符;入门版:30k;创作者版:100k。

集成方式

将 scripts/elevenlabs_api.py 复制到您的 FastAPI 应用中,并挂载路由:

from elevenlabs_api import router
app.include_router(router)

在环境中设置 ELEVENLABS_API_KEY。所有接口均具备完善的错误处理能力,并返回标准 HTTP 状态码。

若 FastAPI 服务未运行怎么办?

快速上手示例默认假设 http://localhost:8000 已就绪。若服务未启动:

# 调用前检查服务是否在线
import httpx

try:
    httpx.get("http://localhost:8000/health", timeout=2.0)
except httpx.ConnectError:
    # 服务未运行 — 先启动它
    import subprocess
    subprocess.Popen(["uvicorn", "elevenlabs_api:app", "--port", "8000"])
    import time; time.sleep(2)  # 留出端口绑定时间

或绕过 FastAPI 封装,直接调用 ElevenLabs 原生 API — scripts/elevenlabs_api.py 中的函数可作为独立模块导入:

from elevenlabs_api import generate_tts  # 若该模块导出了独立函数

错误处理:API 密钥与速率限制

缺失 API 密钥:

httpx.HTTPStatusError: 401 Unauthorized
{"detail": {"status": "unauthorized", "message": "Invalid API key"}}

→ 检查 ELEVENLABS_API_KEY 是否已设置:echo $ELEVENLABS_API_KEY
→ 从 1Password 获取密钥:op read "op://OpenClaw/ElevenLabs API Credentials/credential"

触发速率限制(429):

{"detail": {"status": "too_many_requests", "message": "Too many requests"}}

→ 等待后重试,并采用指数退避策略。ElevenLabs 免费版/入门版的速率限制按分钟计算。
→ 创作者版及以上版本限制大幅提高 — 请登录 ElevenLabs 控制台查看您的订阅等级。

配额耗尽:

{"detail": {"status": "quota_exceeded", "message": "Quota exceeded"}}

→ 当月字符配额已用完。请等待每月重置,或升级订阅等级。
→ 查看当前用量:curl -s -H "xi-api-key: $KEY" https://api.elevenlabs.io/v1/user/subscription

相关文件

  • scripts/elevenlabs_api.py — 包含全部 7 个接口的 FastAPI 路由实现

常见错误

  1. 将字节响应误当作 JSON 处理

    • ❌ 对 TTS 请求调用 response.json() → 触发 JSONDecodeError
    • ✅ 使用 response.content 获取原始字节,再写入 .mp3 文件
  2. 使用错误的音色 ID

    • ElevenLabs 音色 ID 是不可读的字符串,而非音色名称
    • ❌ "voice_id": "Rachel" → 返回 404 或错误音色
    • ✅ "voice_id": "21m00Tcm4TlvDq8ikWAM"(Rachel 的真实 ID)
  3. 未启用缓存即批量调用 TTS

    • 相同文本 + 相同音色始终生成相同音频 — 请避免重复生成已缓存结果
    • 否则将不必要地消耗字符配额
  4. 对纯英文内容使用多语言模型

    • eleven_multilingual_v2 在纯英文场景下更慢,且易出现口音失真
    • 纯英文任务请使用 eleven_turbo_v2_5
  5. 调用前未确认 FastAPI 服务已运行

    • 若忽略本地服务依赖,httpx.ConnectError 错误信息较难理解
    • 建议在调用接口前增加健康检查或自动启服逻辑

安全说明

本技能采用的部分模式可能被自动化安全扫描器标记:

  • base64:用于媒体类 API 响应中音频/二进制数据的编码(行业通用实践)
  • UploadFile:FastAPI 内置的文件上传参数,用于 STT/人声分离等接口
  • "system prompt":指代理指令配置,不涉及提示注入攻击

相关专题

更多
Uvicorn 报错与问题解决教程
Uvicorn 报错与问题解决教程

本专题汇总了Uvicorn服务器常见问题与报错解决的教程合集,涵盖启动失败、端口占用、模块导入错误、事件循环冲突及热重载失效等典型故障的排查思路。同时整理了多进程与Worker配置、SSL/HTTPS证书报错、跨域与代理配置等实战解决方案,助你快速定位并解决Uvicorn运行中的各类问题。

2026.11.02

0

14

Uvicorn使用教程
Uvicorn使用教程

本专题汇总了Uvicorn使用教程与启动运行指南,涵盖其作为Python ASGI服务器的定位与特点,以及命令行启动(uvicorn main:app --reload)、参数配置(host/port/workers)、程序内嵌运行与Gunicorn结合部署等核心用法。同时整理了热重载调试、日志配置与生产环境部署优化等技巧,助你快速掌握Uvicorn的运行与配置。

2026.11.02

0

17

Uvicorn安装配置教程
Uvicorn安装配置教程

本专题汇总了Uvicorn的安装配置教程与部署指南,涵盖通过pip安装Uvicorn、启动FastAPI/Starlette应用、开发模式热重载(--reload)及多进程工作模式配置等核心操作。同时整理了结合Gunicorn的生产部署方案、HTTPS与反向代理配置及性能调优技巧,助你快速完成Uvicorn服务的安装与上线部署。

2026.11.02

0

17

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

0

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

0

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习