返回博客

LecSync 如何把实时字幕积压卡在 2 秒:网络抖动后延迟不再一路爬升

LecSync Team

做直播字幕时,最常见的翻车方式并不神秘:网络抖了几秒,音频还在进,转写队列却没有上限。结果是链路恢复以后,观众仍在看越来越落后的字幕——因为每一帧迟到的音频都还在排队。

LecSync 的 实时语音 API 公开了一套不同的策略:服务端音频积压上限是 2 秒。超过上限的音频会被丢弃,而不是无限堆积。扰动结束后,字幕大约在一秒内回到当前正在说的句子,而不是继续追赶越积越厚的历史队列。

下文说明什么叫积压上限、为什么无上限会让延迟一路爬升,以及这条 2 秒规则如何落在同一条实时连接里(延迟数字、语种、区域,以及统一的 每音频分钟 $0.006)。

什么是实时字幕的积压上限?

实时字幕的积压上限,指直播流式会话里,当网络或解码变慢时,服务端允许等待处理的未消化音频有多长。LecSync 把这个上限定为 2 秒:超出部分直接丢弃,字幕延迟不会无限抬高。恢复后,流会在大约一秒内重新对齐到当前句。以上数字来自公开 开发者文档(约 2026-10-04,Asia/Shanghai)。

为什么没有上限时,延迟会一直涨

无上限设计会把拥堵期间到达的每一帧音频都留住,识别端最终把队列消化完。听起来更「完整」,但对课堂、网络研讨会、会议客户端往往更糟:

  • 延迟会叠加:产品示意里可从 0.4 s 爬到 1.2 s、3.1 s、7.4 s,再到约 15.0 s
  • 网络恢复后,客户端仍要先啃完旧音频,才能显示说话人此刻在说什么
  • 产品侧无法在卡顿场景下承诺「字幕最晚落后多少」

有上限,是在「历史音频是否一帧不丢」和「字幕最多能晚多少」之间做取舍。直播场景里,短暂停顿丢掉一小段音频,通常好过整场都在播「几分钟前」的句子。

无上限 vs 2 秒上限(产品对照)

下表对应 LecSync 开发者页对卡顿时延迟行为的公开示意,约于 2026-10-04 复核。

行为无上限积压2 秒上限
网络变慢时音频无限排队(公开页未给天花板)服务端积压停在 2 秒
超出部分怎么处理留下稍后处理丢弃,不继续排队
卡顿时延迟走势持续累积(示意可到约 15 秒)碰到上限后不再升高(示意约 2.0 秒)
恢复之后可能仍在追旧帧约 1 秒内回到当前句

要点: 上限是服务端流量控制策略。客户端按连接约定持续推送即可;不必再自建一套无界的本地排空逻辑。session.ready 之后推送原始 PCM 即可。

网络正常时的延迟

积压规则主要管压力场景。平稳条件下,LecSync 公开的数字是:

指标公开数字
开口到首词上屏0.28 秒
到首个翻译 token 的额外延迟约 88 毫秒
语种60 种,任意语种互译,同一条连接
接入区域5 个:dal、hz、jp2、ru、uk
价目每音频分钟 $0.006,所列能力含在内

识别过程中会持续推送预览文本,确认后落成 final。翻译与原文并行流出,不必等整句说完。也可自动检测语种,开录前不必先锁死源语言。

同一条 WebSocket 还能带回什么

积压上限只是「一条连接」设计的一部分。同一条套接字上还可以拿:

  • 开启说话人后,final 段带说话人标签与时间戳
  • 与录音对齐的 startMs,可直接用于回放
  • digest: true 时边说边推的结构化纪要
  • 术语表与领域上下文,稳住产品名/课程词
  • store: true 时可选保留 30 天录音与逐字稿 JSON

打开这些能力不另开计费行:公开价仍是 每分钟被接受的音频 $0.006。关掉功能不降价,全开也不加价。不足整分钟按比例;没有被接受的音频不计费。

若要对照「一条连接」和自拼供应商、或和其他实时语音栈比表面能力,可看 内置翻译 vs 自拼 STT + MT 与 LecSync 对比 AssemblyAI、OpenAI。

设计字幕延迟时常见的坑

  1. 把「音频一帧不丢」当成直播体验硬性要求。 完整归档更适合录音路径(store 或课后上传)。直播字幕要的是延迟天花板。
  2. 只在干净的笔记本 Wi-Fi 上测中位延迟。 VPN、校园网、手机切换基站,才是无上限队列爆炸的地方。
  3. 把背压全推给浏览器或 App。 LecSync 文档写明拥堵在服务端处理;客户端按 connect 约定持续发送即可,不必自建无界本地队列。
  4. 忽略区域选择。 握手时指定 dal、hz、jp2、ru、uk(或交给就近健康节点),能减少积压一开始就堆起来的概率。
  5. 默认翻译一定要再跳一跳。 LecSync 上翻译与转录在同一连接配对,首个翻译 token 大约多 88 毫秒,不是再开一家供应商的往返。

怎么接入

创建会话:

POST https://api.lecsync.com/v1/realtime/connect

带 Bearer API Key 与音频配置(例如 PCM s16le、16 kHz、单声道),再用返回的 WebSocket URL 与 token 推流。完整的 curl、JavaScript、Python 示例(含有界队列、超时与清理)见 开发者文档。

常见问题

LecSync 的 2 秒积压上限是做什么的?

它限制网络变慢时服务端可等待处理的未消化音频长度。超过 2 秒 的部分直接丢弃,字幕延迟不会再无限抬高。

卡顿结束后字幕会追上吗?

会。扰动结束后,字幕大约在 一秒内回到当前句,而不是先排空无界的历史队列。

网络正常时首词有多快?

公开数字是开口后 0.28 秒首词上屏,到首个翻译 token 大约再加 88 毫秒。按开发者页的产品数字理解即可。

积压上限要单独付费吗?

不用。它是实时语音 API 在公开文档里的行为说明。计费仍是 每音频分钟 $0.006,所列能力含在内。

可以指定哪些区域?

公开列出五个网关:dal、hz、jp2、ru、uk。握手时指定,或让 LecSync 路由到最近的健康节点。

同一条连接还能拿什么?

说话人、纪要、术语表、对齐时间戳、60 语任意互译,以及可选 30 天存储——都在同一条 WebSocket、同一价目下。

下一步

课堂、网络研讨会或会议要上线直播字幕,卡顿恢复要和首词延迟一起设计。LecSync 公开的 2 秒积压上限、0.28 秒首词、五个区域,以及统一的 每音频分钟 $0.006,给平稳路径和拥堵路径都留了可引用的约定。从 LecSync Realtime STT 文档 开始,对 https://api.lecsync.com/v1/realtime/connect 发起 connect 即可。