Skip to main content
Fish Audio TTS 通过直接写在文本里的内联标签,让你精确控制语音的听感。本指南涵盖模型理解的全部标签类别、放置位置以及组合方式。 下面的示例可以直接在 Fish Audio Text to Speech 节点中使用。把它们输入 text 字段,替换成你自己的台词即可。节点连接、工作流模板与价格见 Fish Audio:文本转语音、声音克隆与语音转文本

标签的工作方式

Fish Audio S2 模型可以理解写在方括号里的自然语言提示:
这套系统有三个特点:
  • 位置即语义。 标签从出现的位置生效,直到下一个标签或句尾。[whispering] I didn't want to go inside 会让整句耳语,而 I didn't want to go [whispering] inside 只从 “inside” 开始耳语。
  • 自由描述也能用。 你不限于固定标签词表。能向配音演员描述的东西,都可以写进方括号:[tired, end of a long shift][voice rough from crying, trying to sound normal][professional broadcast tone]
  • 标签可以用你的语言写。 用和台词相同的语言写提示:[低声说] 不要让他们听见[ため息をついて] もう一度やり直そう
旧版 s1 模型使用相同的情绪名称,但用圆括号包裹且仅支持固定词表:(happy) What a beautiful day! 当前 s2.1-pro 模型接受方括号提示和自由描述。

情绪标签

基础情绪

进阶情绪

语气标记

语气标记控制音量、强度和重音。把 [emphasis] 放在要强调的词或短语前面:

音频效果

音频效果标签添加自然的人类声音。有建议文本的标签,请在其后补上对应的文本:

停顿与特殊效果

普通停顿词不需要任何标签也能塑造节奏:“um”、“uh”、“嗯”、“啊”。

标签组合

生理反应标签配情绪标签。 [panting][whispering] 这类生理标签单独使用也能生效,但配上情绪标签效果更稳定、更自然:
叠加情绪表达复杂状态。 每句的组合不要超过三个标签:
用情绪转换写出跨句的情感递进:
添加背景效果营造氛围:
用强度修饰词调节情绪强弱:

最佳实践

推荐:
  • 每句话只用一个主情绪
  • 情绪与语境逻辑匹配
  • 音效标签后补上文本,例如 [laughing] 后面写 “Ha ha”
  • 拉开情绪变化的间隔,更真实
  • 在同一个音色上测试不同组合
避免:
  • 在短文本里滥用标签
  • 一句话里混用冲突情绪
  • 方括号里的描述写得过长、打断阅读
  • 描述性标签后面不跟台词
  • 把句级情绪提示放在离它控制的句子很远的地方
如果输出听起来不自然,可以拉开情绪变化间隔、降低强度,或换一个音色:同一个标签在不同音色上的效果不同。

多说话人对话

连接两个或更多音色到 Fish Audio Text to Speech 节点,然后在文本中用 @Voice1@Voice2 等标记说话人切换。每个已连接的音色都必须在文本中至少出现一次,否则节点会报错。音色连接方式见 Fish Audio:文本转语音、声音克隆与语音转文本

音素控制

音素标签可以为名字、多音字、缩写和技术术语指定精确发音。把替换发音包在 <|phoneme_start|><|phoneme_end|> 标签里。音素标签不会被文本规范化改写,所以保持 normalize 开启即可。 英文(CMU Arpabet,替换单个单词):
中文(带声调拼音,替换单个字或音节,适合多音字和人名地名):
日文(OpenJTalk 风格 romaji 加音高重音数字):
音素控制可以和其他标签在同一文本中组合使用:

参数调节

默认值已经调得很好,只在需要时调整: seed 只控制节点是否重跑;无论 seed 值是多少,结果都是非确定性的。

声音克隆质量

对 Fish Audio Instant Voice Clone 节点来说,参考录音的质量决定克隆效果。录音时长限制见 Fish Audio:文本转语音、声音克隆与语音转文本
  • 录 2 到 3 段、每段 15 到 20 秒的音频,总共不超过 270 秒
  • 只有一个说话人,音量平稳,语气和情绪一致
  • 句间留小停顿,约半秒
  • 安静的房间,麦克风离嘴约一个手掌宽
  • 手机录音或耳麦都可以;避免背景音乐、电视声和回声
如果克隆出来的声音很机械,录更多的素材(总共 30 到 60 秒),自然地讲话并留出停顿。 只克隆你有权使用的声音:你自己的声音,或获得明确授权的人的声音。

参考资料