Tobatsu · voiceover_align · test
Fish 的 `[方括号]` 标签是发声指令(不念、不进字幕)。我们让工作流 agent 照着 Mai 传的 `emotion_style` 给每段加合适标签 —— 而且偏起伏大、有张力,平淡的尽量不用;改词自愈时它还能改语速标签把音频卡进时间窗。真机俄语跑通,音频和成片在下面。
跟 ElevenLabs 一样用 [方括号],但 Fish 把它当发声指令 —— 不念出来、作用到下一个标签或句末,而且自动从字幕剥掉。覆盖面比 EL 广,还能写自然语言。
关键:节奏标签直接改语速 → 改音频时长,正好是我们 fit 自愈量的那个值。
Mai 传来的 timeline JSON 里每段有 emotion_style。agent 首次合成前读它,给段配一个合适的 Fish 标签,写进 script-overrides.json。
情绪取向:要起伏大、有张力,别平淡。 这是广告/营销配音,得有感染力。emotion_style 只当起点参考 —— 优先生动、对比强的情绪;[monotone] / [calm] / [a calm, steady tone] 这类平的避免。即使 emotion_style=calm 也往更暖、更活的读法带(但忠于该段语义:sad 仍是 sad,只是不平,不会被乱改成亢奋)。
段音频装不进时间窗时,runner 回 needs-rewrite.json(现带 provider:"fish" + Fish 专属 hint)。agent 不再只能改词:太长加 [speaking fast]、太短加 [speaking slowly]/[long pause],可单用也可配合改词。循环每轮重新量真实时长。
俄语 5 段,带 emotion_style,故意把 seg0/seg2 的时间窗卡死(装不下)逼出改词自愈。下面是产出。
字幕里看不到任何 [标签] —— 全被当发声指令剥掉了。
| 段 | emotion_style | agent 写的标签 | 类型 |
|---|---|---|---|
| 0 | excited | [excited][speaking fast] +精简 16→6 词 | 情绪 + 缩短(fit-via-tags) |
| 1 | calm | [cheerful] | calm→生动(没用平淡标签) |
| 2 | sad | [sad] | 情绪(语义忠实) |
| 3 | happy | [happy] | 情绪 |
| 4 | excited | [excited] | 情绪 |
[cheerful] —— 没用 [calm]/[monotone] 这类平的,正是"即使 json 写 calm 也尽量起伏大"[speaking fast] + 砍词(fit-via-tags 真用上)needs-rewrite.json 加 provider 字段;hint 对 Fish 自动追加语速标签杠杆指引。EL 的 hint 一字不变。| 物件 | 值 | 回滚 |
|---|---|---|
| skill mai-combo-runner-test | v31 → v32 | — |
| voiceover_align 工作流 prompt | v18(Fish voice 段 + 起伏大取向) | — |
| voiceover_align test tag | 2e17193d | 25878b04 |
| combo test tag | 03332ff8(没碰,仍 v31) | — |
只动 voiceover_align;combo 靠 snapshot 冻结隔离,完全不受影响。prod 全程没碰。