多语言与语码转换语音智能体

11 分钟读完

V10
实战手册 · 语音与实时智能体

多语言语音智能体:语言是一次路由决策,不是一次翻译。

给语音智能体加上第二种语言,坏掉的是识别而不是生成——而那个标准解法"每通电话锁定一种语言",恰恰会被双语来电者的第一句话打破。语码转换边界处的词错误率,通常比单语基线高出几十个百分点,弱一些的模型还要糟得多;而落在转换段里的词,又格外集中于人名、地址与订单号——正是你准备传给工具的那些。最后那句回答会听起来无比流畅,只是带着一个错误的参数。

STEP 1

故障发生在模型的上游,在最初几百毫秒里。

团队把多语言支持当成生成问题来规划:模型能用西班牙语回答吗?能,而那根本不是难的地方。所有真正的困难都在模型之前那一层——音频必须在任何人知道说了什么之前,就被判给某种语言。

  • 总得有东西来决定这是哪种语言,而它决定得很早。级联式技术栈必须从开头的音频里挑一个识别目标——在足够证据出现之前——因为流式转写不可能等一句话说完,那会摧毁延迟预算
  • 猜错不是得到一份稍差的转写,而是得到一份不同的转写。被约束到错误语言的识别不会返回不确定性;它返回的是来自错误词表、自信而合乎语法的词。下游模型于是对着一句来电者从未说过的、看着挺合理的话开始推理——这就是幻听所描述的失败模式,只不过这次幻觉是由语言层提供的。
  • 口音与双语性直接攻击的就是这个检测器。习惯性双语者的音位特征混合了两种语言,而这恰恰是语言识别器所依赖的信号。最可能发生语码转换的说话人,正是检测器最不擅长的那批人,而这个相关性不是你靠调阈值能绕开的巧合。
  • "先检测再路由"要花掉一次你没有的往返。把识别语言做成识别之前的独立一趟,会在每一轮的开头加上延迟——而那正是来电者容忍度最低、轮替机制本已在花预算的位置。

把它讲白,再从这里开始设计:在多语言语音智能体里,语言决策是一次在时间压力下、基于不完整证据作出的路由决策,而且它位于模型所做的一切之上游。把它当成一个地区设置项,就是一个技术栈最终拥有出色西班牙语生成、却架在一份被当作英语识别的转写之上的过程。

STEP 2

按轮锁定语言是标准解法,而语码转换正是打破它的东西。

常见架构是检测出一种语言、按会话或按轮锁定,并因此拿到一大块准确率收益。它对只说一种语言的来电者效果很好。它在那批"当初就是为他们加这功能"的人身上失败。

  • 轮次之间是容易的情况。一位用西班牙语作答、接着用英语追问的来电者,靠每轮重新检测就能处理。稍贵一些,结构上没问题。
  • 句子内部才是难的情况,而且是常见的那种。产品名、地名、专业词汇与数字,经常在一句其余部分单语的句子里保留在第二种语言里。单一锁定的识别目标对这段嵌入毫无表示能力,只会用自己词表里最接近的东西替换掉它。
  • 损伤集中在边界处。错误围着转换点扎堆,而不是均匀铺开,而流式解码器还可能在那里卡住或截断——这比单纯的替换更糟,因为丢掉一个词留下的是一句语法完整、却少了一条约束的句子。
  • 负担得起的话,端到端多语言识别器是结构性答案。原生地处理语言流动性、不需要事先锁定路由,这消掉的是整整一类失败,而不是把它调小。代价是真实存在的——通常是更大的模型、有时更高的首 token 时间、更小的可选厂商集合——而这笔权衡值得刻意评估,而不是被默认值一路带过。
  • 不得不路由时,基于一个窗口路由,并允许修正。在比第一个音位更长的片段上做检测,并允许证据到齐后修订转写。然后确保智能体不会依据修订前的文本行动——在那些依据部分转写就触发工具调用的技术栈里,这是一个真实存在的 bug。
STEP 3

丢掉的那些词,正是你准备传给工具的那些。

这是应当改变你评测策略的那个论点。聚合词错误率在这里是很差的向导,因为它把每个词一视同仁,而错误并非一视同仁地分布。

  • 实体扎堆在转换段里。来电者切换语言,恰恰是为了那些翻译不了的东西——一个人名、一条街道、一个品牌、一个型号。它们是整句话里信息量最高、冗余度最低的词,所以识别器的语言模型无法靠上下文把它们修回来。
  • 5% 的词错误率可以与 30% 的实体错误率并存,而后者才是决定工具调用成不成的那个数。像评估语音智能体主张的那样直接量实体错误率,并按"该实体是否落在转换段内"拆开看。
  • 下游的流畅把这一切都藏了起来。模型收到一句看着干净的话、正确地推理、然后给出一个关于错误账号的自信答案。trace 里没有任何一处看起来坏了。这正是多语言回归总由客户而非看板发现的具体原因。
  • 在做出任何变更之前,靠耳朵确认实体。把人名或号码复述一遍并拿到确认,是转写出错时唯一还管用的廉价控制,而它只花一轮。把它用在参数上,不是意图上——模式见语音中的工具调用与状态
  • 取值空间已知时,就约束识别。如果订单号有固定形态,或城市只可能是你服务的那两百个之一,用它做偏置或校验,能在不碰识别器的前提下把大部分损失捞回来。对一个闭集做自由形式识别,是一个你选择不去解的已解问题。
STEP 4

输出侧:一个嗓音、一种语言,以及一条你必须写下来的策略。

合成有它自己的约束,讨论得更少是因为后果没那么灾难性——但它决定了在一位双语听者耳中,这个智能体听起来称不称职。

  • 多数合成引擎无法在一句话中途令人信服地切换语言。为某种语言构建的嗓音,会用自己的音位库去念另一种语言的词,而这就是"一个会说我的语言的智能体"与"一个把我的语言念坏了的智能体"之间可听见的差别。
  • 所以你必须逐轮显式选择作答语言。默认"跟着识别器最后判定的语言走",意味着一次检测错误会变成一次可听见的语言切换,而这对来电者的刺激远大于一个略微出错的词。宁可稳定:跟随来电者的主导语言,只在信号清晰且持续时才改。
  • 专有名词保留在它自己的语言里,并接受那个口音。一条街名或一个品牌被换成来电者的语言来念,往往反而让他认不出来。在一句其余单语的句子里混合发音,正是人类双语者的做法,也是正确的目标——哪怕引擎做得不完美。
  • 每种语言用一个嗓音,并在整通电话里保持稳定。中途换音色会被读作"转接给了另一个人",并重置来电者关于"我在跟谁说话"的心理模型。
  • 本地化的是披露,不只是内容。你所在法域要求智能体说明自己是自动系统的那句话,必须用来电者真正在说的语言、在开头说出来,而且必须为每一种支持的语言进入你的测试套件——那句话有多重,见外呼语音智能体
STEP 5

数字、日期与地址,是每种语言各自独立的归一化问题。

就算转写完美无缺,从口语形式到工具参数的这座桥仍然是随地区而异的,而它通常只按第一种语言写过一次,然后被重复使用。

  • 口语数字的映射并不统一。位数分组、小数分隔符,以及各语言特有的量级——lakh、万、milliard——都需要按地区解析。一个假定千与百万的归一化器,会无声地产出一个差两个数量级的数值。
  • 日期恰恰在最要命的地方有歧义。日-月还是月-日是一次抛硬币,而大约一半时候它会解析成一个合法日期,所以这个错误从不抛异常。从来电者的地区而不是从模型的习惯去解析它,并对任何有后果的日期靠耳朵确认。
  • 地址的结构不同,不只是写法不同。字段顺序、邮编形态、哪些成分是必填,全都不一样。一个照着某一个国家调好的地址解析器,在其他国家会悄悄退化。
  • 货币与单位需要一个转写之外的真值来源。在一通双语电话里,"两千"需要的币种来自账号,而不是来自这句话所用的语言。
  • 在边界处归一化一次,并把两种形式都记下来。在 trace 里把原始识别文本与归一化后的参数并排保留。当某次工具调用后来被发现是错的,唯一能分辨"识别失败"与"归一化失败"的办法就是两者都有;只保留解析值的 trace 让这个诊断无法进行。

对人员配置的一个现实推论:这不是翻译工作。给语音智能体加一种语言,需要一个能听音频、能判断转写与音频是否对得上、并能告诉你错误来自哪一边的人。一份翻译好的提示词文件,若没有这个人,只是这份工作里便宜的那一半,而且是本来就没坏的那一半——这一点多语言与跨语言智能体在文本栈上也讲过。

STEP 6

用真实的双语音频做评测,并按语言分开上报。

上面的每一种失败,对多数团队搭出来的那个测试集都是不可见的,因为那个测试集是合成的、单语的、干净的。修好评测,才是把这一页变成一项可执行计划的关键。

  • 黄金集要从真人录音里来,包括双语说话人。TTS 生成的测试音频不会自然地语码转换、不带双语者的音位特征,并且会让一个在生产中会崩的技术栈顺利通过。录音是唯一能真正触发那一层的输入。
  • 每个指标都按语言上报,绝不只看聚合值。被最大语种主导的合并成功率,会在某个小语种崩掉时纹丝不动。语言是一个路由键;把它当作每张看板上的一个维度,就像按客户的单位经济模型对待租户那样。
  • 把语码转换切片做成独立套件。不是在主集里塞几个例子——而是一个具名切片、配自己的阈值,因为当厂商更新模型时,它会独立于其他切片发生回归。
  • 把语言决策与转写分开评分。记录检测器选了什么、依据什么证据、是否修订过。检测准确率是一等指标,而且它是能预测其他指标的那一个。
  • 上线前为每种语言定好升级路径。如果智能体无法可靠地服务某种语言,转给一位会说这门语言的人是一个正当答案,而且远好过服务得很糟。刻意决定它——移交设计见打断与移交
  • 厂商每次更新模型都重新建立基线。各语言的识别质量在版本之间是独立变动的,而一次改善了你主力语种的变更,可能让某个次要语种回归。这就是检测质量回归在多语言场景下的具体形态。

加一种语言之前,先录三十通双语说话人的真实通话,并测量语码转换段上的实体错误率。这一个数字就能告诉你,你是需要一个端到端多语言识别器,还是靠按轮路由就能活下来——而它是区分这两者的唯一证据。然后在每次会变更状态的工具调用前靠耳朵确认实体,把原始与归一化两种形式都留在 trace 里,并把语言作为一个维度放上每一张看板。生成质量是人人都会去测、也本来就没坏的那部分;而你的智能体以为自己听到了哪种语言,才是决定它会做什么的那部分。

相关:STT、TTS 与语音到语音讲底下的组件,实时智能体架构讲那次路由决策住在哪,多语言与跨语言智能体讲同一问题的检索那一半,电话与 PSTN 接入讲 8 kHz 通路为何让这一切更难。