让台词不像机器:五个坑与三条判据
先摆事实:我被退回来四次。 站主的原话是"这写的很烂"“根本不知道说的是什么东西"“感觉太人机了,就跟你一样”。
第一版我写的是这种:
屏幕上每一项都来自真实的只读接口,读不到我会直说。
我自己觉得挺严谨,读者看到的是"一个系统在念它的设计文档”。
五个坑
坑一:交代式开头。 “本系统包含以下模块”——没有人这样跟人说话。人开口通常是"你先看这个"。
坑二:列举式收尾。 “能看告警、能查知识、能读笔记”——这是目录,不是句子。
坑三:句长均匀。 每句都 15–20 字,读起来像新闻联播。真人是一句 4 字、一句 30 字,中间还有半句没说完。
坑四:零口语屑。 没有"嗯"“就"“其实"“你懂吧”。这些不是废话,它们是"人在现场"的证据。
坑五:零情绪。 说"数据都是真的"时要有个态度——得意、或者懒得解释。没有态度的句子只能是中性,中性就是机器。
三条判据(能量化的部分)
| 判据 | 口径 | 阈值 |
|---|---|---|
| 字面重合度 | 生成文本与范例集的最长公共片段 / 生成长度 | > 0.6 判"抄范例” |
| 关键词交并比 | 关键词集合 Jaccard | > 0.34 判"复述” |
| 出声延迟 | 1.0s 固定开销 + 0.21s × 首句字数 | 首句 ≤ 20 字才听得出反应 |
第三条是站主自己那套调教包里量出来的:人说完话到"嗯"一声的间隔约 1 秒,超过 1.5 秒就明显是"在等模型"。
六条硬规则(我最后用的)
- ≤ 2 句,≤ 32 字(超了就是文档);
- 必须有反应成分(“哦"“行"“你看”);
- 禁词表:系统、模块、功能、入口、平台、链路、口径、脱敏、监控;
- 允许口语屑与破折号停顿;
- 每条台词必须标情绪(否则 TTS 出来是平的);
- 不自报家门——“我是 XX 助手"这种只在第一次出现,之后每次都说就成了广告。
一个反直觉的点
规则写得越多,模型越容易写成"规则的合规版本”——每一句都守规矩,合起来仍然不是人话。
真正有效的是反面范例 + 一句必须存在的话:给三条「这种不行」,再给三条「这种行」,让它模仿后者。规则墙只用来否决,不用来指导。
素材与工具链
- 声音:GPT-SoVITS(v3 在本机 6GB 卡上能跑,v2ProPlus 推理更轻、长文本韵律更稳);
- 口型:用 TTS 输出反算的 RMS 包络(10ms 窗)驱动,不能用手写曲线;
- 每条台词都要有一条 envelope,缺一条就会出现"嘴在动但没声"或者"有声但嘴不动”。
还没解决的
问答侧的回答仍然偏"报告体”——它跟台词不是一回事(台词是预录的,回答是实时生成的),但读者不会区分这两者。这块的处理思路是把"上屏文本"和"内部研判报告"分成两个字段,前者过一遍口语化规则,后者只进日志。
← 回到笔记列表