先直接回答:T3PO 用在会议同传时,屏幕上文字是「只往后长」还是「回头改写」,不取决于译文质量,而取决于输出区域的写入方式。判断这件事不需要内部接口,只要盯住输出区本身——同一句话从出现到稳定,是单调变长,还是出现过整句替换、半句撤回。这个观察在接入当天就能跑完,结论直接决定它适合当实时字幕读,还是只能当会后整理稿用。
跑一段三到五轮、含句中停顿和换人的对话,用带时间戳的快照记录输出区域文本。若每一帧都是上一帧的前缀延长,说明写入是逐字追加,实时阅读基本成立;若旧文本被整句覆盖或半句被撤回,屏幕就会读到后来被推翻的内容,此时把 T3PO 输出定位为会后整理来源,实时画面另给稳定版或加人工复核。判断只依据文本写入行为,不评价译文好坏。
用一段多人会议式对话跑一遍,逐秒记录输出区域文本的变化
准备素材:一名主持加两名说话人,五轮左右,每轮一句长句、一句带数字的短句,句中留一次自然停顿。素材的作用是把追加、覆盖、回溯三类写入行为逼出来,不必覆盖口音和语速的全部分布。
别用秒表手抄,屏幕变化比手速快。最省事的做法是在输出容器上挂一个监听,每次文本变化就打一条时间戳和快照:
// 输出区域已渲染后再执行,sel 换成实际的输出容器选择器
const el = document.querySelector('sel');
let prev = '';
const t0 = performance.now();
new MutationObserver(() => {
const next = el.innerText;
if (next === prev) return;
const type = next.startsWith(prev) ? 'append'
: prev.startsWith(next) ? 'shrink'
: 'rewrite';
console.log((performance.now() - t0).toFixed(0) + 'ms', type, JSON.stringify(next.slice(-40)));
prev = next;
}).observe(el, { childList: true, subtree: true, characterData: true });
append 表示只在尾部追加;shrink 表示旧文本被削短,常见于半句被撤回;rewrite 表示中间用词或整句被改写。记录时不要只写「变了」,要写是这三类里的哪一类,否则后面没法判断能不能实时读。
逐条记录建议用四列,时间点取相对开跑时间,文本快照截尾二十到四十字即可,不必贴整屏。下表只示意填写格式,时间点和文本请替换成你实际跑出来的记录:
| 时间点 | 屏幕文本快照(尾部) | 变化类型 | 备注 |
|---|---|---|---|
| 1200ms | ……所以这个季度先聚焦 | append | 与上一帧构成前缀关系 |
| 1850ms | ……所以这一季度先聚焦华东 | rewrite | 「个季度」被替换成「一季度」 |
| 2400ms | ……所以这一季度 | shrink | 半句被撤回,屏幕短暂只剩前半段 |
让说话人在句中停顿两三秒,看已输出的内容有没有被重写
停顿是覆盖式写入最容易暴露的位置。让说话人念到「我们要把这个方案的……」后停两三秒再接着说,停顿期间和恢复后各取一次快照做对照:
| 阶段 | 屏幕文本 | 与前一状态的关系 |
|---|---|---|
| 停顿前 | ……我们要把这个方案的 | 基准状态 |
| 停顿中 | ……我们要把这个方案的 | 无变化,文本静止 |
| 恢复后 | ……我们要把这个方案的落地时间定在月底 | 在尾部追加,标为 append |
判读规则:停顿期间文本基本静止、恢复后只往后长,说明它倾向等语义完整再追加,屏幕滚动接近正常字幕;如果停顿后前文用词、断句被换掉,说明每段输出抵达后会被整体重译或重排,屏幕上的半句不能当真,读到一半被改写是常态。还有一类现象要单独记:停顿期间文本被清空,再从完整句重新出现,这属于整句覆盖,屏幕跳动比中间改写更明显,观感上更接近「换了一句话」。
在换人说话的瞬间观察译文有没有混入上一位说话人的内容
换人是串句高发点。做法是 A 说完整句后立刻换 B,中间不留长间隔,看输出区会不会把 A 的尾句和 B 的开头拼成同一条。记录按三列走,译文列填实际屏幕快照,标点和断句原样保留,方便看出拼接痕迹:
| 换人位置原文 | 对应译文片段 | 是否跨说话人合并 |
|---|---|---|
| A 尾句:那这部分我们下周再对。 | 按发生顺序贴出屏幕文本 | 是 / 否,若合并需标出对应位置 |
| B 首句:我先补充一个数据。 | 按发生顺序贴出屏幕文本 | 同上 |
如果出现合并,规避方式是在换人处留一个短静音,或等上一条输出稳定后再让下一位开口;若输出侧支持分条写入,按说话人分开投递,比事后人工切分省事。这里只是文本归属问题,不涉及译得对不对。
把观察结果分别映射到实时阅读和会后整理两个用途
| 用途 | 适用性判断 | 依据的观察现象 |
|---|---|---|
| 实时阅读(同传字幕、投屏) | 观察结果以 append 为主、停顿后不回溯、换人处不合并时才可用 | 第 1 节三类变化的构成,第 2 节停顿恢复后是否 rewrite |
| 会后整理(复制成稿、加人工校对) | 覆盖式写入也能用,且最终态通常比过程态干净 | 第 1 节末尾的稳定态快照,第 2 节恢复后的完整句 |
实时阅读这条线上,只要记录里出现过 shrink 或 rewrite,观众就会读到一个后来被推翻的半句,此时要么把字幕延迟一档再显示,要么安排人盯着输出区。需要说明的边界是:追加式写入并不等于译文立刻稳定,仍要留人工复核的余量。会后整理这条线上,动作是等整段结束、文本不再变化后再整体复制,不要在一句话还没稳定时摘录;风险边界是最终态仍可能保留串句或数字被改写的痕迹,人工过一遍不能省。
整理会让人误读的输出情况,列成使用禁区清单
- 半句先出现、随后被整句覆盖。现象:屏幕上先滚动出一句结论性的话,一秒左右被替换成另一句。规避:不要把它直接投给外部观众,投屏用延迟一档的稳定版,实时画面留给内部人员看。
- 停顿后前文被重写。现象:说话人停两秒再继续说,前面的人名或数字已经和恢复后的文本对不上。规避:人名、金额、代号不靠屏幕抄录,改用会后稿加人工核对。
- 换人位置译文合并。现象:上一位的尾句和下一位的首句被拼进同一条译文,看不出归属。规避:换人处留短间隔,或在输出侧按说话人分条写入。
- 输出区被清空后重排。现象:整段文字消失,再从完整句重新出现。规避:不希望屏幕跳动的场合,不给观众看实时中间态,用稳定版或录播。
- 数字与专有名词在改写中变形。现象:同一个数词在前后两次快照里写法不同。规避:会议纪要、合同编号这类需要精确记录的场合,只把它当线索,不作为记录依据。
这份清单的用法是:跑完前三节的观察,凡是命中其中一条的场景,就不要把它直接接进实时链路;只是拿来产出草稿、再由人整理的场合,命中后仍然可用,但要给校对留出时间。