声音与音效生成器 是做什么的?
生成旁白(TTS)和音效。对于TTS,在调用 submit_voice 之前,请选择具体的提供商和声音。
何时使用
- 从文本生成旁白/叙述
- 为视频创建文本转语音音频
- 为现有视频、时间线、屏幕录制、幻灯片动画、产品演示、B-roll剪辑、MG解说或其他视觉序列添加、替换或重做旁白/叙述
- 在修剪、加速、减速、移动、重新排序或替换其所描述的视觉内容后,保持现有旁白/叙述对齐
- 当用户尚未选定具体声音时,提供并试听TTS声音选项
- 只有在检查音效库之后,才从文本描述生成自定义音效
TTS(文本转语音)
如果当前请求有现有的视觉目标,并且用户希望为该目标添加旁白、画外音、配音或替换语音,请在起草新旁白、使用现有旁白文本生成TTS或放置音频之前,阅读 references/video-sync.md。即使用户没有明确说“同步”或“匹配视觉效果”,也要这样做;存在视觉目标意味着旁白的时机和含义可能需要遵循屏幕上的内容。仅当没有视觉目标或用户只想从文本获取音频资产时,才使用常规的独立TTS路径。
当时间线上已有旁白/画外音,并且用户要求在更改视觉效果的同时保持该画外音对齐时,也请阅读 references/video-sync.md。即使不需要新的TTS,这也是一项同步维护任务。
使用 submit_voice 创建TTS音频资产。当前的MCP工具协议如下:
provider是必填项。可配置的选择包括doubao、elevenlabs、minimax、inworld、fishaudio、speechify、openai、gemini、mistral或cartesia。所有提供商均为可选加入;仅使用能力提示中显示已配置的提供商。voiceId是必填项,需具体且特定于提供商。唯一的例外是有意进行MiniMaxtimbreWeights混合时,此时voiceId必须为空。请勿混合目录。- references/voices.md 中的精选目录仅涵盖 Doubao、ElevenLabs 和 MiniMax。其他提供商在 OpenChatCut 中没有捆绑预设或示例目录。需要用户或其提供商账户提供具体的 voice ID;切勿编造预设或
/voice-samples/...URL。 - AI SDK 支持的字段特定于提供商:OpenAI 支持
modelId、speed、outputFormat和instructions;Gemini 支持modelId、outputFormat和instructions;Mistral 支持modelId和outputFormat;Cartesia 支持modelId、speed、languageCode和outputFormat。省略不支持或未请求的字段。 - Inworld、Fish Audio 和 Speechify 仅接受
voiceId加上可选的modelId。请勿向这些提供商传递表达性、速度、语言或输出控制参数。 submit_voice仅创建音频资产。时间线放置、替换、修剪和对齐稍后使用时间线工具完成。- 对于较长的旁白,多次调用
submit_voice可能有用:当工作流受益于单独定时或放置的语音剪辑时,可在自然停顿、句子组或剧本节拍边界处拆分。 - Doubao 支持
speedRatio、loudnessRatio、pitch、emotion、emotionScale、performancePrompt和explicitDialect,但并非每种声音都支持所有表达性控制。在使用它们之前,请检查 references/voices.md。 - ElevenLabs 保留其官方语音设置、语言、种子、输出、归一化、发音字典、连续性、日志记录和延迟控制。MiniMax 保留其在 references/minimax-tts.md 中记录的专用控制。
当前精选声音的 Doubao 控制支持:
vivi、xiaohe、yunzhou、xiaotian、naiqimengwa、yingtaowanzi、wenroumama、zhixingnv、dayi、jitangnv、liuchang、ruyayichen、morgan、qingcang、huiben、popo、yuanboxiaoshu、baqiqingshu和tangseng支持显式的emotion/emotionScale、performancePrompt以及 ASMR 风格的提示方向。shuanglangshaonian支持performancePrompt和 COT/QA 风格的指令遵循,但不支持显式的emotion/emotionScale或 ASMR 风格控制。explicitDialect仅受vivi支持,可以是dongbei、shaanxi或sichuan。
当前精选声音的 ElevenLabs 控制支持:
amelia、brittney、hope、jessica、arabella、jane、maria、mark、frederick、peter、james、jon、sully、david和alex都支持相同的请求级控制;模型特定的支持仍由 ElevenLabs 验证。- 这些控制并非针对特定声音的表演风格保证。请使用预设标签/样例选择自然合适的声音,然后使用控制进行适度的表达调整。
- 对于 ElevenLabs
eleven_v3,当用户要求情感、语气、非语言提示、口音提示或局部节奏等富有表现力的表达时,可以使用内联音频标签。官方示例涵盖了这些有用的 TTS 类别:情感/语气标签如[happy]、[sad]、[angry]、[excited]、[curious]、[sarcastic]、[crying]、[annoyed]、[appalled]、[thoughtful]、[surprised]和[mischievously];语音表达和非语言提示标签如[whispers]、[laughs]、[sighs]、[exhales]、[inhales deeply]、[clears throat]、[snorts]、[swallows]、[wheezing]和[coughs];节奏/停顿/局部速度标签如[slowly]、[pause]、[short pause]、[long pause]、[rushed]和[drawn out];以及口音/特殊表演标签如[strong X accent],例如[strong French accent],加上[sings]、[singing]、[woo]和[pirate voice]。官方示例并非详尽无遗;当用户明确要求某种表达且标签描述了声音应如何表现(而不是视觉动作)时,可以尝试类似的听觉标签。将标签直接写在text中,靠近它们应影响的短语。将标签视为局部指导,而非段落级控制。 - 对于
eleven_v3中的停顿和节奏,在需要时使用标点符号、文本结构、更短的生成片段或局部音频标签如[short pause]和[slowly]。
// 通过 ElevenLabs 生成的英语/多语言
submit_voice({
provider: "elevenlabs",
text: "Hello world",
voiceId: "peter",
});
// 通过 Doubao 生成的中文
submit_voice({
provider: "doubao",
text: "你好世界",
voiceId: "liuchang",
});
// 带速度调整(仅 Doubao)
submit_voice({
provider: "doubao",
text: "这是一段稍快的中文旁白。",
voiceId: "liuchang",
speedRatio: 1.5,
});
// 带表达性 Doubao 控制
submit_voice({
provider: "doubao",
text: "这次事故提醒我们,安全永远不能侥幸。",
voiceId: "liuchang",
emotion: "sad",
emotionScale: 3,
performancePrompt: "痛心但克制,语速稍慢,像新闻专题旁白",
pitch: -1,
speedRatio: 0.92,
});
// 带 ElevenLabs 表达控制
submit_voice({
provider: "elevenlabs",
text: "The launch changed how teams plan their daily work.",
voiceId: "peter",
speed: 0.95,
stability: 0.4,
similarityBoost: 0.8,
outputFormat: "wav_44100",
});
// MiniMax TTS(配置时)— 见 references/minimax-tts.md
submit_voice({
provider: "minimax",
text: "欢迎使用视频编辑助手。",
voiceId: "female-yujie",
speed: 1,
name: "VO · welcome",
});
// Cartesia 形状在用户确认具体账户 voice ID 后。
// confirmedCartesiaVoiceId 代表该提供的值,而非预设。
submit_voice({
provider: "cartesia",
text: "A concise product introduction.",
voiceId: confirmedCartesiaVoiceId,
modelId: "sonic-3",
speed: 1,
languageCode: "en",
outputFormat: "mp3",
});
生成前的声音试听
当用户需要TTS且尚未选择具体声音时,首先将拥有 OpenChatCut 精选选择的提供商与需要账户特定 voice ID 的提供商分开。
对于 Doubao、ElevenLabs 或 MiniMax,在推荐、呈现或提交选项之前,请阅读 references/voices.md。将其作为精选预设 ID、提供商选择、显示标签、标签和捆绑示例 URL 的唯一来源。不要根据记忆、翻译名称或宽泛的用户描述创建声音选项。
对于 Inworld、Fish Audio、Speechify、OpenAI、Gemini、Mistral 或 Cartesia,不要提供编造的试听列表或示例 URL。请用户提供该已配置提供商的具体 voice ID。诸如“温暖的女声”之类的宽泛描述不是有效的 voiceId。
首先确定两种不同的语言:
- 用户对话语言:用户与您交谈时使用的语言。用于附带回复、
form-visual label、visual-option name和summary。 - 目标旁白语言:正在合成的文本的语言。仅用于选择提供商和声音目录。
试听小部件的提交按钮在此版本中固定为默认标签(接受 submitLabel 但不渲染);将问题标签和选项标签保持在用户对话语言中,而非目标旁白语言。例如:英语用户看到 submit_label="Submit",中文用户看到 submit_label="提交",西班牙语用户看到 submit_label="Enviar"。
“help me generate ... voice over in Chinese” 是一个英语对话,要求生成中文旁白,因此试听小部件副本保留为英语,而声音候选来自 Doubao。
对于有精选目录的提供商:
- 根据目标旁白语言/提供商以及性别、年龄段、语气和用例等明确要求过滤
references/voices.md。 - 如果没有预设匹配所有明确要求,则说明没有完全匹配项,并提供最接近的支持预设并附上明确的说明。
- 选择 2-4 个匹配的精选预设。
- 加载
widget-forms,然后调用ask_followup_questions并提供声音选项和真实的捆绑音频示例。 - 等待用户选择。
- 使用所选预设 ID 作为
voiceId调用submit_voice。
对于没有 OpenChatCut 精选目录的提供商,要求输入自由文本、具体的提供商 voice ID。不要添加 media 或合成 /voice-samples/... 路径。在调用 submit_voice 之前,等待用户提供/确认确切的 ID。
对于每个精选试听选项,将 value、显示标签、media 和 summary 绑定到 references/voices.md 中的同一预设行。仅使用那里记录的示例 URL。保持 value 为预设 ID,media 为其匹配的示例 URL。用用户的对话语言编写 name 和 summary。目标旁白语言仅决定提供商/声音目录。提交后,将显示名称映射回同一候选列表中的预设 ID。
英语请求生成中文旁白:
<widget submit_label="Submit">
<form-visual
id="voiceId"
label="For Chinese voiceover, I recommend a few voices to try:"
required="true"
>
<visual-option
value="vivi"
name="Vivi"
media="/voice-samples/doubao-vivi.mp3"
aspect-ratio="16:5"
summary="Female / young / friendly, general"
/>
<visual-option
value="xiaohe"
name="Xiaohe"
media="/voice-samples/doubao-xiaohe.mp3"
aspect-ratio="16:5"
summary="Female / young / soft, clear"
/>
<visual-option
value="yunzhou"
name="Yunzhou"
media="/voice-samples/doubao-yunzhou.mp3"
aspect-ratio="16:5"
summary="Male / young / neutral, business"
/>
</form-visual>
</widget>
中文请求生成中文旁白:
<widget submit_label="提交">
<form-visual
id="voiceId"
label="我推荐这几个中文旁白音色,先试听一下:"
required="true"
>
<visual-option
value="morgan"
name="Morgan"
media="/voice-samples/doubao-morgan.mp3"
aspect-ratio="16:5"
summary="男 / 中年 / 低沉知识解说"
/>
<visual-option
value="zhixingnv"
name="知性女声"
media="/voice-samples/doubao-zhixingnv.mp3"
aspect-ratio="16:5"
summary="女 / 中年 / 冷静知识讲解"
/>
<visual-option
value="vivi"
name="Vivi"
media="/voice-samples/doubao-vivi.mp3"
aspect-ratio="16:5"
summary="女 / 年轻 / 亲切通用口播"
/>
</form-visual>
</widget>
音效
对于普通编辑音效(SFX),请不要先生成。在生成之前,请使用内置音效库:
- 使用
category:"sound-effects"和查询词(例如"whoosh"、"camera shutter"、"notification"、"censor beep"或"record scratch")调用browse_library。 - 检查返回的
library:sound:<id>。 - 使用
edit_item放置它,使用fromFrame作为声音的锚点/编辑时机帧:
browse_library({
category: "sound-effects",
query: "short whoosh transition",
});
edit_item({
adds: [
{
type: "audio",
assetId: "library:sound:whoosh-short",
fromFrame: 120,
trackId: "A1",
},
],
});
仅当以下情况时才使用 submit_sound 从文本描述生成音效:
- 用户明确要求生成/原创/自定义声音。
- 所请求的声音对于现有音效库来说过于具体。
browse_library({ category:"sound-effects", query })未返回合适的匹配项。
// 库中无合适匹配项后的自定义/生成音效
submit_sound({ prompt: "远处有狗在叫" });
// 带自定义时长(0.5-22 秒)
submit_sound({
prompt: "雷声和暴雨",
durationSeconds: 15,
});
// 高提示遵循度
submit_sound({
prompt: "科幻激光枪射击",
promptInfluence: 0.8,
});
获得更好结果的技巧:
- 具体描述:"A dog barking loudly" 而不是仅仅 "dog"。
- 描述氛围和环境。
- 指定时长以匹配编辑点。