Voiceover

根据脚本生成带情感、语速控制的语音旁白,支持多种语气和音色。

已扫描
适合谁
内容创作者、视频制作人员
不适合谁
需要多角色对话的用户、希望克隆特定人声的用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @runware/voiceover

Skill 说明

命令、参数、文件名以原文为准

语音旁白与叙述

将文字脚本转化为自然流畅的口语音频,实现精准的情感表达、语速控制、重音处理和声音选择,适用于视频旁白、广告、有声书或 IVR 提示音。核心在于使用方括号 [bracket] 内的指令标签来引导每一行的朗读方式,而不仅仅是文字本身。

输入信息收集

  • 脚本内容:需要朗读的完整文本。(若未提供,请主动询问。)
  • 声音选择:预设声音 ID,或“选择一个合适的”。如需自定义或克隆声音,请参考 voice-cloning
  • 演绎说明:明确情绪基调、能量水平、语速节奏及目标受众(如平静的有声书、活泼的广告、中性的 IVR、紧急提示等)。这些将决定方括号标签的使用。
  • 应用场景:视频旁白、广告、有声书章节、IVR/电话提示音。不同场景影响整体语气,以及是否允许填充词和非语言表达。
  • 可选参数:语言类型;以及源文本是否为原始 LLM 输出,需进行规范化处理(如数字、日期、缩写等)。

支持模型

  • 默认情感丰富叙述模型:Fish Audio S2.1 Pro (fishaudio:s2.1@pro)

领先的多语言 TTS 模型,支持丰富的方括号标签控制情感与副语言特征,覆盖 80+ 种语言,支持快速流式传输。是通用旁白任务的最佳选择。

  • 对话式 / 实时播报模型:Inworld Realtime TTS-2 (inworld:tts@2)

支持自由形式的自然语言指令标签,并内置 settings.textNormalization 功能,可直接处理原始文本生成清晰语音。适用于智能助手、IVR、客服系统等场景。

  • 预设高端音色:Qwen3-TTS CustomVoice (alibaba:qwen@3-tts-1.7b-customvoice)

提供九种预设声音,通过 positivePrompt 添加风格提示。已针对 Runware 进行优化。

  • 流式对话风格 TTS:Dia2 2B (runware:dia2@2b)

支持实时流式传输,包含非语言表达和说话人标记。已针对 Runware 进行优化。

  • 调用前请确认模型状态为 live,并通过 runware-modelsrunware-run 检查其具体字段。切勿硬编码过时模型。

工作流程

  1. 解析模型结构(使用 runware-run),确认字段名称。标准结构为 audioInference,包含 speech.textspeech.voice(部分模型支持 speech.language)。
  2. 将脚本放入 speech.text,并在每行前插入对应的 [bracket] 方括号指令标签,标签应紧贴所作用的文本之前。
  3. 若输入为原始 LLM 输出(含数字、日期、货币符号 $1,249.99、缩写等),启用文本规范化功能以确保发音准确:在 Inworld TTS-2 中设置 settings.textNormalization: true
  4. 异步调用 audioInference,并轮询 getResponse 直至完成。音频生成是耗时操作,不可阻塞同步调用。
  5. audioURL 获取结果,回听音频,核对演绎效果是否符合需求,对表现不佳的片段进行重试。

技巧指南

  • 方向标签具有延续性,向前生效

放置在文本前的 [bracket] 标签会持续影响后续内容,直到遇到下一个标签或输入结束。无需关闭或重置。当情绪变化时,直接添加新标签即可:

[speak cheerfully] Great news, the build passed! [lower voice, more serious] But we need to talk about the memory leak.

  • 书写舞台说明,而非关键词

“像深夜里向亲密朋友倾诉”比“亲密”更有效。模型对描述性语言响应更好。可在单个标签中叠加多个维度:情绪 + 语速 + 音量 + 表达方式,例如:

[say sadly with deliberate pauses in a low voice and hushed style]

而仅写“sad”则无法产生真实效果。

  • 核心标签 vs 自由表达

Fish S2.1 Pro 提供一组稳定的核心标签(如 [excited][sad][whisper][laughs][angry][surprised]),也接受任意描述性短语(如 [whispers sweetly][laughing nervously])。建议优先使用核心标签保证一致性,仅在需要细微差别时使用自由表达。

  • 副语言用于时间与质感控制

在合适位置插入具体的音频事件。Fish S2.1 Pro 支持括号内提示:(break)(long-break)(breath)(sigh)(laugh)(cough),但需设置 settings.normalize: false 才能生效。Inworld TTS-2 使用内联非语言表达:[laugh][sigh][breathe][clear throat][cough][yawn]。应放置在人类实际发声的位置。

  • 无需标签也可实现文本控制

大写单词可强调(I told you NOT to do that),部分大写可强调音节(AbsoLUTEly)。标点符号影响朗读节奏:句号为完整停顿,逗号为短暂停顿,省略号表示犹豫拖长。每句最多强调一两个词。

  • 处理 LLM 输出时务必规范化

LLM 输出常包含数字、日期、货币、Markdown 格式。启用 settings.textNormalization: true(Inworld)可将 $1,249.99 展开为“一千二百四十九美元九十九美分”,将 3:45 PM 展开为“三点四十五分 PM”。也可在 LLM 系统提示中要求其输出口语化文本并禁止使用 Markdown(参见 TTS-2 的 LLM 系统提示指南)。日期规范化可能存在歧义,关键场景建议手动处理。

  • 根据用途匹配填充词

“Uh”、“um”、“well”等填充词可让旁白更有人味,但在专业 IVR 或客服系统中会显得不连贯。用于非正式叙述时可保留,用于正式旁白则应剔除。

  • 避免内容冲突

标签必须与内容一致。在悲伤段落使用 [sound happy] 会造成矛盾,降低语音质量。保持每个标签内部逻辑统一。例如 [whisper][very loud] 明显冲突。

  • 专用于特殊发音的覆盖机制

Fish S2.1 Pro 支持使用 CMU Arpabet 语音标注,在 <|phoneme_start|><|phoneme_end|> 之间指定发音,适用于同音异义词、品牌名、专业术语等。此功能需配合 settings.normalize: false 使用。仅在模型确实发音错误时才启用。

  • 多人对话场景请使用其他技能

本技能不适用于多角色对话。如需多说话人音频,请参考 dialogue-audio。如需非预设声音(如特定人物或品牌声音克隆),请参考 voice-cloning

内联标签模式

  • 情感与引导标签具有延续性。 在文本前放置 [bracket] 标签,将对后续内容持续生效,直到遇到下一个标签或输入结束。仅在情绪发生变化时添加新标签,而非每句话都添加。
  • 非语言表达按位置插入。 Fish 使用 (cue) 括号(如 (break)(breath)(sigh)),需设置 settings.normalize: false。Inworld 使用内联的 [non-verbal] 方括号(如 [laugh][sigh][breathe])。应根据人类自然表达的位置进行放置。
  • 文本标准化开关。 Inworld 的 settings.textNormalization: true 会将原始数字、日期和价格展开为口语化表达。Fish 的 settings.normalize(默认为 true)在使用 (cues)<|phoneme|> 覆盖时必须设为 false,否则这些标记会被移除。
  • 参考 references/examples.md 获取完整示例(情感广告配音、已归一化的解说、品牌IVR语音)。

重要参数

  • speech.text: 语音脚本,包含内联的 [bracket] 引导标签及任何非语言表达提示。必填。
  • speech.voice: 语音ID或预设名称。不同语音对相同引导标签的响应强度不同,因此应先选定语音,再调整标签以适配。
  • speech.language: 在模型支持的语言场景中(如 Qwen、部分 Inworld 地区)设置,以确保发音准确。
  • settings.textNormalization(Inworld TTS-2):true 表示将原始文本中的数字、日期、缩写展开为口语形式。
  • settings.normalize(Fish S2.1 Pro):使用 (cues)<|phoneme|> 覆盖时必须设为 false,否则这些标记会被过滤掉。
  • positivePrompt(Qwen CustomVoice):可选的风格/情绪提示,例如 "用极大的热情说话"。
  • 请以实时 Schema(runware-run)为准确认字段名。不同模型的括号标签与非语言表达语法存在差异,切勿直接将一种模型的提示迁移到另一种模型,务必核对。

质量标准

  • 语音读出符合需求:情绪、语速与能量匹配使用场景(如平静有声书、活泼广告、中性IVR)。
  • 引导标签正确延续,仅在脚本情绪变化处切换,避免每句都加标签(过度标注会导致语音不自然、抖动)。
  • 数字、日期、价格和缩写均以清晰口语方式读出,而非直接念出原始符号(需开启归一化或预先展开)。
  • 标签不自相矛盾。非语言表达与音素覆盖仅在 Fish 模型关闭归一化时使用。强调应适度,避免滥用。
  • 音频为异步生成,从 audioURL 读取。若出现误读、语速过快或情绪不符,需重试相关片段。

相关技能

runware-run, runware-models, runware-prompting; dialogue-audio(单次生成多角色对话)、voice-cloning(自定义或克隆声音)、talking-avatar(用语音驱动面部动画)、ugc-ad(在完整广告中嵌入语音配音)。

R
@runware

已收录 2 个 Skill

相关推荐