Voices zh CN - on22s/Side-Story GitHub Wiki
选择与管理声音
**Voices(声音)**选项卡为脚本中的每位说话人分配声音。请先在 Editor 中挑选几句有代表性的台词试听,再渲染整本书。
修改会自动保存。离开页面或切换书籍前,请留意卡片筛选控件旁的状态,等到出现 saved(已保存)。如果看到 save failed — edits retained(保存失败,已保留修改),请保持选项卡打开,先解决保存问题。
选择声音类型
Custom voice(自定义声音)
这是最简单的起点。请选择九种预设之一:Aiden、Dylan、Eric、Ono_anna、Ryan、Serena、Sohee、Uncle_fu 或 Vivian。
角色风格字段用于描述稳定的特征,例如克制的语气或某种口音。应用会将这种风格与当前行的演绎指示结合起来。需要说出的文字应放在脚本的 **Text(文本)**字段中,而不是角色风格中。
Custom voice 支持本地或外部 TTS。在 **Setup(设置)**中设置合成语言,然后在 **Editor(编辑器)**中试听发音和演绎效果。
Clone voice(克隆声音)
克隆声音使用参考音频及其准确转录文本。可以从 **Uploaded Voices(已上传声音)**或 **Designed Voices(已设计声音)**中选择,也可以使用 **Upload(上传)**添加自己的参考音频。
使用外部 TTS 时,已配置的服务器还会收到用于克隆的参考音频和转录文本。在使用私人录音前,请检查该目标地址。
普通的克隆生成不会像 Custom 或 LoRA 生成那样应用脚本中的演绎指示。如果你需要逐句遵循指示,请测试其他声音类型,不要假设修改 **Delivery(演绎指示)**就会改变克隆声音的情绪。
**Custom path...(自定义路径……)**可用于指定运行应用的机器上已有的参考文件。浏览器所在电脑上的路径,并不会自动在远程或 Docker 安装中可用。导入到库中的参考文件更便于跟踪和验证。
Built-in LoRA voice(内置 LoRA 声音)与 LoRA voice(LoRA 声音)
这两种类型将适配器与本地 TTS 模型配合使用,把学习到的声音身份与角色风格、当前行的演绎指示结合起来。
- **Built-in LoRA voice(内置 LoRA 声音)**从附带的目录中选择。灰显并标记为 **(not downloaded)(未下载)**的条目,需要先在 **Training(训练)**中下载权重。
- **LoRA voice(LoRA 声音)**从可用适配器中选择,也包括你自己训练的适配器。
目录中列出某项,并不代表其权重已经安装。在决定用于整本书前,请先试听未参与训练的测试台词。训练新的适配器是可选步骤;详见可选声音工具。
Voice Design(声音设计)
输入 Base voice description(基础声音描述)。每一行的演绎指示都会附加到该描述后,本地 VoiceDesign 模型据此生成该行的声音。
如果希望制作可复用的参考音频,请打开 Designer(设计器):
- 输入 **Voice Description(声音描述)**和 Sample Text(示例文本)。
- 点击 **Generate Preview(生成预览)**并试听。
- 输入 Voice Name(声音名称),然后选择 Save Voice(保存声音)。
- 返回 Voices(声音),选择 Clone voice(克隆声音),再选择已保存的设计参考音频。
Voice Design 需要本地 TTS。直接使用 Voice Design,与将设计好的参考音频用于克隆,是不同的生成路径;无论选择哪一种,都应先试听。
Character ensemble(角色合声)
选择要一起说话的角色。应用会分别使用各成员已分配的声音生成片段,再以最长片段为基准对齐并混合。效果更接近合声,而不是完全同步的齐声。
请先配置成员的声音。外部 TTS 可以使用由受支持的 Custom/Clone 成员组成的合声;它无法让仅限本地的 LoRA 或 Voice Design 成员在外部服务器上工作。
安全地导入参考片段
只导入你有权使用的录音和声音。应用会要求你确认,但它不会代你证明所有权或使用许可。
- 在说话人卡片上,选择 Clone voice → Upload(克隆声音 → 上传),然后选择 WAV、MP3、FLAC 或 OGG 音频。
- 在 **Import reference clip(导入参考片段)**中,填写 Exact transcript of the clip(片段的准确转录文本)。应逐字记录音频中实际说出的内容,而不是摘要,也不是希望克隆声音之后说出的台词。
- 如果有相关信息,请添加 Source title(来源标题)、**Source URL(来源网址)**和 Rights basis(权利依据)。这些是可选的来源记录字段;填写完整有助于后续检查。
- 仅在确实拥有相应权利时,勾选 I have the right to use this voice(我有权使用此声音),然后点击 Import(导入)。
- 导入成功后,在目标说话人卡片的 **Uploaded Voices(已上传声音)**中选择新条目。生成测试台词前,使用参考音频播放控件试听,并检查 Reference Text(参考文本)。
请选择单一说话人清晰说出一个完整句子的干净录音。导入前移除无关的静音、音乐和其他人声。应用会将接受的输入转换为 24 kHz、单声道、16 位 WAV,并拒绝以下片段:
- 短于 3 秒或长于 30 秒
- 在峰值电平检查中接近空白或音量过低
- 削波程度超过允许阈值
- 大部分为静音
- 无法解码
请阅读具体的拒绝原因并修正录音。通过这些测量,并不证明转录文本准确、只有一位说话人,或声音在有声书中会符合预期。请同时试听参考音频和生成样本。
每次成功导入都会创建一个新的参考标识。如果应用提示导入成功,但列表刷新失败,请重新打开 Voices 或刷新列表后再尝试导入,以免产生重复副本。
生成角色设定
**Generate Personas(生成角色设定)**会向已配置的 LLM 请求角色描述和示例文本,然后使用 VoiceDesign 创建参考音频并分配克隆声音。这是可选功能:无需使用它,也能自行配置声音。
开始前:
- 首次使用时,可将 **Apply to(应用于)**设置为 Only characters without a voice yet(仅尚未分配声音的角色),以减少对已有配置的影响。
- **All characters (regenerate)(所有角色,重新生成)**会替换已有分配。如果界面提供 Save the current voices to the library first(先将当前声音保存到库),且你希望保留这些声音,请保持此项启用。
- **Context(上下文)**控制为每个角色提供的示例台词数量。
- **Advanced → Batch(高级 → 批次)**控制发现阶段的批次,并非 TTS 渲染的批大小设置。
完成后,请检查描述和参考音频。Persona 是角色描述;voice 是分配的声音。Approve persona(批准角色设定)、**Mark persona reviewed(标记角色设定已检查)**和 **Reject persona(拒绝角色设定)**控件,与对应的声音控件相互独立。请使用它们准确记录检查结果。
如果生成停止,**Manual persona recovery(手动恢复角色设定)**可让你选择 Recovery target(恢复目标),使用 Copy prompt(复制提示词),并粘贴 Persona JSON(角色设定 JSON)。**Validate & save(校验并保存)**会保存角色设定;**Validate & resume(校验并恢复)**还会请求继续运行。请确保显示的目标和说话人正确,并在恢复后检查结果。
**Suggest LoRA Voices(推荐 LoRA 声音)**是独立的 LLM 辅助匹配工具,用于已下载的 LoRA 声音。它使用相同的 **Apply to(应用于)**范围。在选择 **Apply all(全部应用)**前,请检查建议;使用 **Dismiss(忽略)**则不会应用这些建议。
别名、就绪状态与版本
通过别名共享声音
对于应使用另一个角色配置的标签,例如 DR. SMITH 和 SMITH,可使用 Alias of(别名指向)。生成时,别名会采用目标角色的声音配置;它不会改写原文。请避免循环别名链。如果标签确实代表不同的说话人,请为他们分配独立的声音。
将已检查的声音标记为就绪
**Ready(就绪)**开关是由用户单独设置的就绪标记。请在试听分配结果后再使用。逐一处理角色时,**Hide ready(隐藏已就绪)**可减少屏幕上的卡片数量。
Ready 不代表通过试听,也不等同于 Approve voice(批准声音)。在 M4B 和章节导出中,可选的 **Require ready(要求就绪)**检查会在所需声音分配尚未就绪时拒绝导出。它不验证每个音频块是否存在或是否正确。
保留备选版本与声音变化
**Version(版本)**可保存另一组声音设置。选择已保存版本会替换当前设置,因此如果之后想切换回来,请先保存现有设置。
当界面显示检测到的角色状态时,请在应用前检查各状态的卡片和 Voice changes(声音变化)。故事中的年龄或性别标签发生变化,并不自动意味着应改变声音。界面可能提供 Choose Main voice throughout(全程使用主声音),以保持声音一致。
在 **Editor(编辑器)**中,行控件 **Voice changes here(从此处改变声音)**可让你输入从该行起生效的角色风格变化。需要重新生成相关行才能听到效果。应用声音版本时间线后,受影响音频会变为 pending 状态,并可使用 **Render Pending(渲染待处理项)**重建。修改声音设置不会自动把现有音频和先前导出结果变成新的演绎。
制作第一本有声书时,请让 **Narrator selection(旁白选择)**保持 Global(全局)。其他模式会根据场景/角色焦点、章节版本或角色特征选择旁白。找不到匹配时会回退到主旁白。**Preview focus(预览焦点)**和 **Preview version(预览版本)**仅在 Voices 面板中测试选择结果;它们不会修改脚本或已渲染音频。
在多本书之间复用角色阵容
在 **Series Cast(系列角色阵容)**中:
- 选择一个阵容,或使用 **New(新建)**创建。
- 选择 Save to cast(保存到阵容),检查勾选的角色,然后选择 Save selected(保存所选项)。初始选择会优先包含至少有 25 行台词的角色及旁白;请检查,以免遗漏台词较少但反复出现的角色。
- 对旁白,按需要选择 **shared (whole series)(共享,整个系列)**或 this cast only (different narrator)(仅此阵容,使用不同旁白)。
- 在另一本书中,选择 Apply cast(应用阵容)。检查建议的匹配,尤其是模糊匹配的猜测,然后选择 Apply selected(应用所选项)。
应用阵容会覆盖所选角色当前的声音分配。**Apply to multiple books(应用到多本书)**会对选定的已保存书籍执行同样的操作,因此应用前请仔细检查书籍列表和映射关系。
保护未保存的声音修改
在浏览器存储可用时,应用会在当前浏览器保留尚未保存的声音草稿。**Recover edits(恢复修改)**可以为匹配的书籍版本恢复草稿。如果自草稿保存后,已保存的声音又发生了变化,请比较两者,不要盲目覆盖较新的工作。**Discard draft(丢弃草稿)**和 **Discard edits and reload(丢弃修改并重新加载)**会有意放弃未保存的改动。
浏览器草稿只是恢复辅助,不能替代备份。请保存脚本版本,并按照更新与备份的说明,备份应用数据、参考音频、适配器和角色阵容库。然后继续阅读渲染与导出。
来源
已对照发布的 main 提交 8c7a33cb310ab9264594a09ca27e48271585094f 核验:声音界面与保存行为、参考音频导入界面、参考音频校验,以及 TTS 能力。