给 Aunio 一段纯文本脚本,通常能拿到一条连续的人声轨,但离“能播的成品音频”还差几步:配乐、留白和整体响度这三件事,多数情况下不在脚本里自动解决,需要你在生成后手工补。脚本真正能决定的是“谁在说、说什么、大致什么语气、哪里该停”;停多久、什么时候进配乐、整轨多响,属于混音层的事。所以问题不是能不能出成品,而是你愿不愿意把脚本拆到足够细,再把后期那几步自己接上。
脚本负责内容和角色,配乐、留白时长和响度负责听感,这两层通常不在同一步完成。建议先把脚本按说话人拆段、标上语气和停顿提示,生成一条三分钟小样,记录实际停顿和语速偏差,再决定整期怎么调。风险边界:不同版本对停顿标记、音色选择的支持程度不一样,最终以返回的音频和配置项为准,不要假设写什么就一定生效什么。
把脚本按配音段落拆成带角色的结构
脚本能不能直接喂给 Aunio,关键看它有没有结构。把整段文字平铺进去,生成结果往往是一口气读下来,你后面很难定位哪句是哪个角色念的。建议先按配音段落拆开,每段带上四个字段:段落编号、说话人、语气提示、停顿标记。
# 段落 01 | 说话人: 主播 | 语气: 平稳偏快 | 停顿: 段末 800ms
主播: 先讲结论,这套流程能省掉一次返工。
# 段落 02 | 说话人: 嘉宾 | 语气: 放慢、偏重 | 停顿: 句间 300ms
嘉宾: 但我更关心的是,配乐什么时候进来。
# 段落 03 | 说话人: 主播 | 语气: 收束 | 停顿: 结尾 1500ms
主播: 这个放到后面单独说。
段落编号的作用是对日志和输出文件,出问题时能直接定位到第几段重生成;说话人决定音色选择;语气提示是给模型的软约束,通常只能影响取向,不能精确控制;停顿标记里的毫秒数是你的目标值,不是保证值。如果你的调用方式只吃纯文本,那就退一步:用空行分段、每段前加 [说话人] 前缀、用标点和换行表达停顿意图,一样能对上人,只是精度差一些。
标出脚本表达不了、只能生成后处理的部分
提前把预期划清楚,返工次数会少很多。下面三类内容,脚本里只能写意图,落地一般在生成之后。
- 配乐:脚本里能写“第 2 段后进配乐、第 4 段前淡出”,这是时间点意图。真正的电平、淡入淡出、人声出现时配乐是否自动退让,通常在混音环节做。人工介入位置在生成之后,别指望在段落文字里塞一句“配乐小声点”就生效。
- 留白:标点、换行、停顿标记能影响停顿,但最终时长受语速和模型自身节奏影响。建议生成后用波形或静音检测量一下段间实际静音时长,再决定是调标记还是手工剪。
- 响度:整轨响度统一和峰值控制,一般在最后一步用混音工具处理。例如常见的 loudnorm 处理可以这样跑,参数需要结合你的发布平台要求确认:
ffmpeg -i voice.wav -af loudnorm=I=-16:TP=-1.5:LRA=11 -ar 48000 voice_norm.wav
这三件事都放在生成之后,好处是改配乐不会动到人声,改响度不会动到脚本。
生成后按内容、语气、停顿、配乐的顺序检查
顺序不能乱,因为每一层都可能带着后面一层一起变。
- 内容:逐段核对人名、数字、专有名词有没有读错。不合格就回退到脚本改文字再重生成这段,不要靠反复重生成碰运气。
- 语气:听每段语气是否和你写的提示方向一致。不合格时回退点是语气提示或音色选择,此时不要动文字,否则前面的内容检查白做。
- 停顿:量段间静音和句间是否粘连。不合格时回退到停顿标记,或单独重生成这一段再接回去。
- 配乐:确认进点、出点是否压住人声。不合格只调配乐轨和闪避,不回动人声轨,也不回去改脚本。
反过来做——先铺配乐再改文字——你最后要把混音重做一遍,这是最常见的返工来源。
用一段三分钟脚本验证整套流程
不要拿整期节目试错。先写一段三分钟左右的脚本,覆盖几个关键场景就行:至少两个说话人、三种语气、长短停顿各一处、一次配乐进出、一个含数字或专有名词的句子。
跑完之后,需要记录的偏差项建议固定成几项,便于横向对照:
- 实际总时长 vs 预估总时长
- 每段段间静音实际毫秒数
- 哪些标点或标记没有产生预期停顿
- 语气提示是否被体现,哪段被忽略
- 配乐进出点是否与人声冲突
- 专有名词是否正确读出
结论外推的方式是:把生效的标记保留成模板,把没生效的标点或提示从模板里删掉,避免整期都带着无效写法;总时长按段数比例估,但留出裕量,因为语速偏差不是线性的;配乐时间点按内容段落锚定,而不是按绝对秒数,这样脚本增删段落时不会整体错位。三分钟小样能暴露的问题,整期基本都会遇到,先在小样上改完再铺开,比先做完再回头剪要省事。