做过实时语音 Agent 的工程师,多半见过 AI 自己跟自己吵架的荒诞场面。用户开着手机免提,AI 客服刚播报完前半句,扬声器里的声音漏进麦克风,语音识别(STT)模型以为用户在抢话,瞬间触发打断机制把 AI 自己闭了嘴。2026 年 11 月 3 日,Soniox 发布 STT v6(包含实时模型 stt-rt-v6 与异步模型 stt-async-v6),给出了一个直接的解法,把 Agent 正在说的话作为文本同步喂回给 STT 模型。这套机制既能过滤残余回声,也能帮模型听懂用户的简短回答,但它高度依赖毫秒级的音字同步管道,且在首字响应速度上付出了明显代价。

为什么得把 AI 自己说的话喂回给耳朵

实时语音交互落地时,有两个长期卡脖子的工程痛点。第一个是免提或车载外放场景下的残余回声自打断,客户端的声学回声消除(AEC)一旦漏掉一点尾音,Agent 就会误判成用户插话。第二个是短语歧义,当用户顺着话头回答单字或专有名词时,传统 STT 根本不知道上一句问了什么,只能盲猜。

Soniox STT v6 在实时模型中新增了 enable_agent_text_input: true 参数。开启后,开发者可以通过同一个 WebSocket 连接,把呼叫者的麦克风音频和 Agent 的播报文本一起发给模型。模型拿到文本后干两件事:一是把文本当作上文,校准简短或模糊回答的识别率;二是拿着这份文本去比对音频流,把 AEC 没滤干净的 Agent 自身播报声从转录结果里剔除,同时保留识别用户真实打断的能力。

账单结构也跟着变了。Soniox 实时转录定价约为 0.12 美元/音频小时,异步转录约为 0.10 美元/音频小时,底层实际按 Token 结算。而新增的 Agent 输入文本要单独按实时输入文本计费,价格是 4 美元/百万 Token,好在只对实际送达模型的文本收费。

  • 提醒.Soniox 官方文档明确要求客户端必须保持开启底层声学回声消除(AEC),文本回声过滤只是清理残余回声的最后一道防线,关掉底层 AEC 会直接导致系统失灵。

700 毫秒滑动窗口里的工程硬约束

很多初级开发者看到这个功能,第一反应是把大模型生成的整段回复直接塞给 STT。真这么干,回声过滤基本就废了。

Soniox STT v6 音字同步与回声过滤管线 1. TTS 词级时间戳 结合客户端播放回执 拒绝整段文本塞入 2. 提前 500ms-1s LiveKit 默认提前 700ms 同 WebSocket 逐词喂入 3. 残余回声剔除 底层 AEC 先行降噪 识别短语上下文 4. 打断瞬间截断 立即关闭当前片段 停发未播放文本省钱 注:若所用 TTS 不支持词级时间戳,系统将回退到无时间戳文本并抛出警告,回声过滤精度随之下降。

官方工程规范要求,Agent 文本必须比实际音频播放提前 500 毫秒至 1 秒发送,并且严格跟着用户耳朵听到的进度走。一旦用户在半途真打断了 AI,系统必须立刻关闭当前文本片段,停止发送还没播出来的词。这既是为了保证上下文准确,也是为了防止多交未播放文本的 Token 费。

开源社区的反应印证了这套管道的复杂度。就在发布当天(2026 年 11 月 3 日),实时多模态框架 LiveKit Agents 提交了 PR #8350 跟进集成。翻看源码能看清真实的实现门槛:当开启 enable_echo_cancellation 时,框架必须调用语音合成(TTS)的词级时间戳,配合客户端播放进度报告,以默认提前 700 毫秒的窗口逐词向 Soniox 喂入文本。如果开发者选用的 TTS 拿不出词级时间戳,框架只能回退到无时间戳模式并抛出警告。


跑分罗生门与三条技术路线的分野

模型好不好用,最终得拉到流媒体基准测试里看延迟和准确率。但语音赛道的厂商跑分向来水深,最常见的障眼法就是拿自家新版去打对手的旧版。

先厘清两个极易混淆的口径。Soniox 官网挂着的 260 毫秒中位数、305 毫秒 P95 和 313 毫秒 P99 最终片段延迟,其实是旧版 v5 的历史成绩,官方并未公布 v6 的对应延迟数据。而在竞争对手官网上,AssemblyAI 宣称其 Universal-3.6 Pro 词错率(WER)仅 5.19%、优于 Soniox Realtime 的 6.83% 和 Flux English 的 13.50%,那是 2026 年 8 至 9 月基于旧版 Soniox 跑的数据;Deepgram 官网自称 Flux English 词错率 9.05%,拉来垫背的更是早期的 Soniox RT v4。

把版本拉齐到同一时间线,看第三方机构 Speko 的实时流媒体基准测试,真实的技术取舍就藏不住了:

实时语音模型词错率 (WER)最终转录耗时首 Token 耗时核心交互控制路线
Soniox STT v68.6%555 毫秒1110 毫秒同步文本输入 + 残余回声过滤
AssemblyAI Universal-3.6 Pro7.2%589 毫秒775 毫秒Voice Focus 人声隔离 + 上一轮 agent_context
Deepgram Flux English12.8%773 毫秒641 毫秒显式轮次事件(提前触发与取消生成)
Deepgram Flux Multilingual14.1%654 毫秒506 毫秒显式轮次事件(多语言低首字延迟)
终稿最快不等于打断最快,1110 毫秒的首字延迟才是暗礁。

这张表戳破了指标全能的幻觉。Soniox v6 从语音结束到拿到最终转录结果只需 555 毫秒,全场最快;但它从语音开始到吐出首个转录 Token 却高达 1110 毫秒,比 Deepgram 慢了约一半。在实时语音 Agent 里,决定打断(Barge-in)敏捷度的往往是首 Token 延迟,首字出得慢,AI 停嘴就慢。

Speko 基准测试:首 Token 延迟与最终转录耗时对照(毫秒) Soniox STT v6 终稿 555ms (最快) 首字 1110ms AssemblyAI 3.6 Pro 终稿 589ms 首字 775ms Deepgram Flux (英) 终稿 773ms 首字 641ms Deepgram Flux (多语) 终稿 654ms 首字 506ms (最快)

这组数字背后,是三家基础设施厂商在语音 Agent 时代的路线分野。《孙子兵法》讲“备前则后寡,备后则前寡”,架构取舍向来如此。

AssemblyAI 押注低词错率(7.2%)与声学前端,靠 Voice Focus 做人声隔离,只支持把上一轮回复作为静态的 agent_context 传入。Deepgram Flux 牺牲了一部分准确率,换取 506 至 641 毫秒的极速首字响应,并提供 StartOfTurn、EagerEndOfTurn(提前触发大模型草稿生成)和 TurnResumed(用户继续说话时取消生成)等显式事件,走的是抢跑式轮次控制路线。Soniox v6 则把筹码压在了当前轮次的动态文本对齐与快速终稿上。

当用户复述 AI 的原话时会发生什么

回看通讯史,早期的长途电话网为了对付回声,搞出过粗暴的回声抑制器:一旦检测到一端在说话,就强行掐断另一端的反向通路。结果两个人同时开口时,线路就会陷入吞字和死锁。今天的语音 Agent 把战场从模拟电路搬进了神经网络,但双讲(Double-talk)的幽灵依然在游荡。

我更在意的是 Soniox 这套机制在极端边缘场景下的表现。目前行业里还没有针对双讲、免提外放回声以及复述场景的第三方受控基准测试。试想一个每天都在发生的客服场景:AI 播报“您的尾号是 8848 吗”,用户为了确认,紧跟着复述了一遍“对,8848”。

此时,700 毫秒滑动窗口里的 Agent 文本正好包含了这串数字,麦克风里也传来了同样的发音。基于文本感知的回声过滤模型,究竟会聪明地识别出这是用户的真声确认,还是会把它当成扬声器漏出来的残余回声直接吞掉?

  • 结论.语音 AI 基建的竞争已经从静态转写准确率转向了实时交互控制,选型时不只要看终稿延迟,更要算清首字延迟与工程管道改造的隐性成本。

对于正在搭建语音 Agent 的工程团队,与其听信厂商榜单,不如等 LiveKit 等框架合并 PR 后,拿自己真实的免提外放录音和复述测试用例跑一遍。毕竟,不让 AI 自言自语很容易,难的是别把真人的话也当成回声给滤掉了。