问题
做语音翻译最头疼的不是翻译质量,是延迟。
用户说了一句话,等 3 秒才看到译文——这 3 秒在对话场景里是致命的。对方以为你没听懂,又重复一遍,然后两边的译文同时弹出来,对话节奏全乱。
我花了一个月把端到端延迟从 3 秒压到 300 毫秒。把踩过的坑记录下来。
延迟从哪来
语音翻译的延迟分四段:
1. 采集延迟:麦克风采集 + 音频编码,约 50~100ms。这段基本是硬件决定,优化空间不大。 2. 语音识别(ASR)延迟:音频进、文字出。这是大头。 3. 翻译延迟:源语言文本进、目标语言文本出。 4. 渲染延迟:译文显示到屏幕上。这段通常 <50ms,可以忽略。
ASR + 翻译占了总延迟的 90% 以上。优化重点在这两块。
ASR 的延迟优化
ASR 延迟分两种模式:
离线识别:等用户说完一句话再识别。优点是准确率高,缺点是"说完再等"——用户闭嘴后还要等 1~2 秒才出结果。
流式识别:边说边识别,每 200~300ms 返回一次中间结果。优点是延迟低,缺点是中间结果可能修正(你看到译文变来变去)。
我的做法:用流式识别做实时预览,最终结果等句子结束后的稳定输出。用户看到的是"先快后准"——先出一个大概译文,句子结束后修正为最终版。
另一个坑:端点检测。怎么判断用户"说完了"?声音停了 500ms 就认为说完?还是 800ms?太短会切断犹豫,太长增加延迟。实测 600ms 是个甜点,但不同场景要调。
翻译的延迟优化
翻译延迟主要看模型大小和输入长度。
模型选择:大模型翻译质量好但慢,小模型快但质量差。我的策略是短句(<20 字)用小模型直翻,长句走大模型。短句占日常对话的 70%,整体延迟降一半。
增量翻译:别等 ASR 出完整句子再翻译。ASR 每返回一段中间结果就先翻一段,最后拼接。用户看到的是"边说边译",体感延迟接近零。
术语缓存:高频术语(人名、专业术语)缓存翻译结果,下次直接命中,省掉模型推理。
一个反直觉的发现
优化到最后,最大的瓶颈不是算法,是网络。模型部署在云端,一次请求来回 100~200ms。如果用户网络不稳定,延迟波动能到 ±500ms。
我的妥协:核心模型走边缘节点(CDN 就近接入),非核心模型走中心云。延迟稳定性提升一个量级。
判断标准
拿到一个语音翻译工具,别只看它宣传的"准确率"。问三个问题:
1. 端到端延迟多少毫秒?(<500ms 可用,<300ms 优秀) 2. 是流式还是离线?(流式体感好) 3. 网络波动时延迟稳定性如何?(比平均延迟更重要)
做翻译工具的人,对延迟有执念。关注我,分享更多语音技术实战。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。