ElevenLabs + AudioFX 是做什么的?
ElevenLabs 提供原始素材(根据提示生成的音效、从文本生成的语音、音乐);AudioFX 使其贴合场景(电话、收音机、水下、混响、精准切入)。sfx 是 node {{AUDIOFX_DIR}}/bin/sfx.mjs(完整效果目录请参考音效设计技能)。
1. 检查连接状态
sfx doctor
最后一行会说明是否找到了 ElevenLabs 密钥以及其来源(绝不会打印密钥本身)。CLI 和工作室会依次在环境变量、当前文件夹的 .env、AudioFX 仓库以及 ~/.audiofx/.env 中查找 ELEVENLABS_API_KEY。
如果没有密钥,请告知用户如何连接。切勿要求他们将密钥粘贴到聊天窗口中,也不要自己将密钥写入文件:
- 在 https://elevenlabs.io/app/settings/api-keys 创建一个 API 密钥(任何套餐均可;免费套餐也支持音效和预制语音)。
- 方式一:在项目中运行
npx -y @elevenlabs/cli@latest onboard init(它会写入一个.env);方式二:用户自行将ELEVENLABS_API_KEY=...添加到~/.audiofx/.env。 - 再次运行
sfx doctor。无需重启。
其他连接方式(可选)
- 托管 MCP:让 Claude 直接调用 ElevenLabs 工具。在 Claude(网页或桌面)中:设置 → 连接器 → 添加自定义连接器,地址填写
https://api.elevenlabs.io/v1/mcp并登录。在 Claude Code 中:运行claude mcp add --transport http elevenlabs https://api.elevenlabs.io/v1/mcp,然后/mcp进行身份验证。该连接器的目录版本可能受限,不支持音乐生成。 - 官方技能(包含 ElevenLabs API 的 TTS、音效、音乐、智能体):运行
npx skills add elevenlabs/skills。
sfx generate 是视频工作中最直接的路径:它一次完成生成、保存副本以备复用以及应用效果,无需 MCP。
2. 一步生成并处理
sfx generate <sfx|voice|music> "<提示词>" <输出文件> [处理步骤...]
| 类型 | 调用的模型 | 选项 |
|---|---|---|
sfx | 音效 (eleven_text_to_sound_v3) | --duration 0.5–30秒(默认由模型决定),--loop,--influence 0–1(默认 0.3) |
voice | 文本转语音 (eleven_v4) | --voice <ID>(默认 George,预制语音),--model <ID> |
music | 音乐 | --duration 3–600秒,--instrumental |
- 在处理链真正执行之前,会进行验证,因此步骤中的拼写错误会免费失败。
- 每次生成的结果还会保存为
~/.audiofx/generated/<类型>-<提示词>-<时间>.mp3,并附带一个.json提示词文件。它会首先出现在工作室的素材库(“已生成”)中,这样用户可以在不重复付费的情况下尝试其他效果。若要复用,请使用sfx apply而不是重新生成。 - 如果没有指定处理步骤,原始生成的音频会直接写入输出文件(mp3 会直接复制,其他格式会转换为 48 kHz)。
- 如果语音出现
402 paid_plan_required错误,意味着使用的是语音库中的声音:请改用预制语音 ID,或请用户升级套餐。429表示速率限制:等待后重试一次。
3. 实用配方
一段经过电话、收音机或设备处理的 TTS 语音
sfx generate voice "嘿,是我。我在外面,开门吧。" call.wav voice-clean "telephone:noise=0.1"
sfx generate voice "这里是机长广播。" captain.wav "speaker:model=pa" "reverb:space=hall,mix=0.2"
sfx generate voice "四号单位,请回答。" radio.wav "walkie-talkie:drive=12"
TTS 语音本身是干净、近距离的:通过效果处理能让它们融入场景。对于需要保持在前景的旁白,只需使用 voice-clean 和 loudness,或者使用 trailer-voice 来获得史诗般的宣读效果。
一段在特定时刻切换为水下效果的音乐
假设画面在 12 秒时下潜,18 秒时上浮:
sfx generate music "欢快独立流行,明亮吉他,120 bpm" song.wav "underwater:depth=0.8@12-18" --duration 30 --instrumental --fade 0.35
其他基于时刻的音乐处理示例:"am-radio@0-8" --fade 1.2(从收音机中播放,然后展开),"filter-sweep:fromFreq=300,toFreq=18000,start=10,duration=2"(在 12 秒处为高潮做铺垫),"tape-stop:at=20,length=0.9"(喜剧式停顿)。
在剪辑点叠加音效
先生成音效,然后使用 layer 效果将其混入视频音频的剪辑点(此处为 6.0 秒):
sfx generate sfx "沉重的木门在石砌走廊中砰然关闭" door.wav "reverb:space=hall,mix=0.25" --duration 2
sfx apply mix.wav mix-door.wav "layer:file=door.wav,at=6,align=onset,level=-3"
align=onset 会测量生成声音的起音位置,并让该位置正好落在剪辑点上,从而避免生成结果中的前导静音导致延迟。生成的音效还会出现在工作室的“样本”选项卡中,用户可以在其中通过耳朵试听如何应用于某个时刻。对于合成的撞击声、上升音或嗖嗖声,音效设计技能中的电影效果更快且免费;关于声音库中的录音样本,请参见该技能中的“真实样本作为层”。
环境背景音
sfx generate sfx "窗户上的细雨声,远处城市交通声,无雷声" rain.wav "muffled:thickness=0.4" --duration 20 --loop
--loop 使结尾与开头衔接,因此背景音可以在长场景下循环播放(在 ffmpeg 中使用 -stream_loop,在 Remotion 中使用 <Loop>)。
复用用户已生成的音频
用户在 ElevenLabs 应用或使用 MCP 制作的音频只是一个文件:sfx apply <文件> <输出文件> <处理步骤...>。托管 MCP 返回的链接(位于 elevenlabsusercontent.com)大约在两小时后过期,因此请先下载文件,再处理本地副本。
提示音效的技巧
- 描述音源、动作、材质和空间:“玻璃瓶在混凝土地板上碎裂,小房间”比“打碎玻璃”效果更好。
- 每次只生成一种事件。将多个生成结果叠加,而不是要求一次生成整个场景。
- 对于你打算后续再处理的内容,先生成一个中性版本:生成干净的“电话铃声”,然后使用 AudioFX 的
speaker:model=phone或distance效果,这样同一个文件可以用于多个场景。 - 短音效(撞击声、咔嗒声、嗖嗖声)最好使用
--duration 1–3;环境音和背景音使用--loop和 10–30 秒长度。 --influence接近 1 时会严格遵循提示词;数值越低,模型发挥空间越大。
成本与注意事项
- 每次
sfx generate调用都会消耗用户的 ElevenLabs 积分。请先生成一次,复用以保存的文件,通过sfx apply或在工作室中更改效果。 - 不要未经询问就循环生成“挑最好的”:提供两到三个变体,让用户在
sfx studio中通过耳朵选择。 - 生成的语音不得未经真人同意模仿其声音。