| name | elevenlabs-tts |
| description | 使用本地语音配置,从脚本或内联文本生成 ElevenLabs 文本转语音音频。当用户要 ElevenLabs、text-to-speech、TTS、旁白、配音、语音音频或语音生成时使用;语音名称、voice id、邮箱、所有者和账户特定默认值只从 skill 之外的本地配置载入。 |
ElevenLabs TTS
用本 skill 做 ElevenLabs 文本转语音生成。保持 skill 可复用且非个人化:
- 不要在 skill 中存储 API key、语音名称、voice id、邮箱、账户名、客户名或个人默认值。
- 从进程环境或最近的
.env 读取 ELEVENLABS_API_KEY。
- 从本 skill 之外的本地 JSON 配置读取账户特定的语音配置。
- 用请求级设置生成音频。除非用户明确要求,否则不要改动已保存的 ElevenLabs 账户或语音设置。
本地配置(Local Profiles)
按此顺序优先选用以下配置来源之一:
--config /path/to/profiles.json
ELEVENLABS_TTS_CONFIG=/path/to/profiles.json
local/elevenlabs/profiles.json
项目本地的配置文件在被 gitignore 时也可以,例如 config/local/elevenlabs-tts.json。
辅助脚本期望这种结构:
{
"default_profile": "default",
"profiles": {
"default": {
"voice_name": "Voice name from the local account",
"voice_id": "optional-direct-voice-id",
"voice_id_env": "OPTIONAL_ENV_VAR_WITH_VOICE_ID",
"model_id": "eleven_multilingual_v2",
"output_format": "mp3_44100_128",
"voice_settings": {
"stability": 0.5,
"similarity_boost": 1.0,
"style": 0.0,
"speed": 1.0,
"use_speaker_boost": true
},
"output_dir": "outputs/voiceovers",
"emails": []
}
}
}
emails、owners、aliases 和 notes 等字段仅用于本地路由/上下文。脚本会忽略未知的元数据字段。
工作流程
- 从
--profile、ELEVENLABS_TTS_PROFILE 或 default_profile 选择配置。
- 优先用辅助脚本:
python3 <skill-root>/scripts/generate_voice.py --text-file script.txt --profile default --output output.mp3
- 如果配置里有
voice_id,用它。如果有 voice_id_env,读那个环境变量。否则按 voice_name 在 ElevenLabs 搜索。
- 使用配置的
model_id、output_format 和 voice_settings,除非用户在本次生成中覆盖它们。
- 把生成的音频放到请求的目标位置。如果没给目标,就用配置的
output_dir,再退到 outputs/voiceovers/。
- 报告输出路径和任何重要警告。不要打印机密。
辅助脚本
内置脚本支持:
--text "..." 内联文本
--text-file path.txt 脚本文件
- 当
--text 和 --text-file 都没提供时读 stdin
--profile name 选择本地配置
--config path.json 选择本地配置文件
--voice-id、--voice-name、--model-id、--output-format 和 --settings-json 用于一次性覆盖
--output path.mp3 选择输出文件
--dry-run 打印解析后的请求 payload,而不调用文本转语音端点
--list-voices 列出匹配的 ElevenLabs 语音而不生成音频
API 说明
使用当前的 ElevenLabs 端点:
- 语音搜索:
GET https://api.elevenlabs.io/v2/voices
- 语音生成:
POST https://api.elevenlabs.io/v1/text-to-speech/:voice_id?output_format=...
以 xi-api-key 发送 API key。