ICML'26 Workshop | 韩英混说训好了,韩日混说能白拿吗?答案是:几乎不能

ICML’26 Workshop | 韩英混说训好了,韩日混说能白拿吗?答案是:几乎不能

原文:Towards Truly Multilingual ASR: Generalizing Code-Switching ASR to Unseen Language Pairs


1. 前言:一个绕不过去的组合爆炸

你有没有想过,为什么手机上的语音输入法在你「中英夹杂」的时候基本能跟上,但你换成「中日夹杂」或者「韩德夹杂」,它就彻底崩了?

不是因为后者更难念,而是因为没人给它喂过这种数据

code-switching(下文简称 CS,中文一般叫「语码转换」,说人话就是一句话里混着说两种语言)在多语言使用者里极其普遍——「这个 feature 我明天 push 一下」「今日の meeting は三点から」。但 CS-ASR 的数据集几乎只有一种:中英。少量有韩英、印英。剩下的语言对,公开数据基本是零。

而这个坑最要命的地方不是「缺数据」,是缺数据的规模随语言数平方增长

语言对组合爆炸

这张表列了三列:左列是你想支持的语言数 N,中列是对应需要覆盖的语言对数 C(N,2),右列用橙色条画出相对规模(后两行超出画布被截断了,我标了「截断」)。往下看:N=4 时才 6 个对,还能手工搞定;N=10 就是 45 个;到 N=50 是 1225 个;如果对标 Whisper 那个量级的 99 种语言,是 4851 个语言对

对比一下:单语数据的采集成本随 N 线性增长,混说数据随 N 平方增长。这就是 CS-ASR 落地的核心矛盾——你可以雇人录 99 种语言的单语音频,但你不可能雇人录 4851 种「混说」组合,何况混说本身还要求说话人真的双语流利。

所以自然会想到一个偷懒的办法:只买几个便宜的语言对,让模型自己「学会混说这件事」,然后推广到没见过的语言对上。

这篇 ICML 2026 Workshop on Machine Learning for Audio 的短文(作者 Gio Paik、Hyunseo Shin、Soungmin Lee,来自韩国 Theta One / Kitsch Labs / 首尔市立大学 / Georgia Tech)就是在系统地检验这个偷懒办法到底行不行。

结论我先放这儿:基本不行。 这是一篇结果为「负」的论文,但恰恰是这类文章值得看——它把「用现成的 model merging / domain generalization 就能解决 CS-ASR 扩展性」这条路给堵上了,并且给出了堵在哪里的证据。


2. 实验怎么设计的:三个「见过」,两个「没见过」

先交代下背景。作者选了四种语言:英语(EN)、韩语(KO)、日语(JA)、德语(DE),骨干模型是 WHISPER-MEDIUM

关键在于怎么划分 seen / unseen:

语言对划分

这张图里四个圆圈是四种语言(EN 蓝、KO 绿、JA 黄、DE 紫)。实线表示 seen(训练时见过的语言对),一共三条,全都连到 EN 上:

  • KO-EN:韩国 AI-Hub 的韩英混说数据集
  • JA-EN:JECS 日英混说语料
  • DE-EN:来自 UniCoM(Lee et al., 2025)的德英切分

虚线表示 unseen(训练时完全没见过,只用来测试):

  • KO-JA:没有公开数据集,作者自己造——找精通韩日双语的人撰写、录制、校验,攒了 450 条混说语句
  • KO-DE:也没有,作者拿 KO-EN 数据集里的英语片段,用 GPT-5.4 mini 翻成德语,再请两位精通韩德的研究生审校并录音,得到 387 条
  • JA-DE:这条虚线上写着「本文没评测」——作者只做了 KO-JA 和 KO-DE 两个 unseen 对

注意实线的形状:三条实线全部以 EN 为中心呈放射状,而两条 unseen 虚线都不碰 EN。这个结构就是全文的实验骨架——训练只看「X-英语」,测试要考「X-非英语」。如果 CS 能力真的是一种「通用的语言切换能力」,那从三个英语中心对里学到的东西,应该能迁移到不带英语的对上。

顺便一句名词解释,后面表格里全是它:MER(Mixed Error Rate,混合错误率)。CS 场景下没法统一用 WER 或 CER——英语部分按词算错误率(WER)合适,中日韩这类语言按字算(CER)才合理。MER 就是在一句话里按语言分段,各用各的粒度算,再合起来。越低越好,0.30 就是「大约三成的单位识别错了」。

训练细节(附录 A):单语言对微调用 batch size 8 跑 73 步;三个语言对合起来训以及 DG 实验用 batch size 9 跑 195 步;AdamW + cosine 衰减 + 10% 线性 warmup;merging 用的是 MergeKit;硬件是 RTX 4090。

这里要提前打个预防针:73 步、582 条日英训练数据(还是单说话人),unseen 测试集只有 450 / 387 条且每对只有两个说话人——这是个小规模探索性实验,不是大规模结论。作者自己在 Limitations 里也承认了。看数字的时候心里得有这个折扣。


3. 主结果表:一张表看完全部结论

论文只有一张主表,但信息量很足。先把它整体放出来,然后我们分块读:

各语言对的 MER 主结果表

先说怎么看这张表。 列方向被分成两大块:

  • 左半 SEEN:KO-EN、JA-EN、DE-EN 三列 + 它们的平均值 AVG.
  • 右半 UNSEEN:KO-DE、KO-JA 两列 + 平均值 AVG.

行方向被三条横向分节标题切成四段:最上面是微调基线,然后是 MODEL MERGING(内部再分 Task Arithmetic / TIES / DARE 三小组),最后是 DOMAIN GENERALIZATION(Fish / Fishr / GGA-L)。所有格子里的数字都是 MER,越小越好

第一行 WHISPER-MEDIUM 是没微调的原始模型,是所有对比的起点:SEEN 平均 0.33,UNSEEN 平均 0.41。这两个数是你后面判断「有没有进步」的锚点。

3.1 单语言对微调:确实有一点跨对迁移,但很有限

看表格最上面那一段的四行:

配置 KO-EN JA-EN DE-EN SEEN 平均 KO-DE KO-JA UNSEEN 平均
WHISPER-MEDIUM(原始) 0.26 0.56 0.15 0.33 0.39 0.44 0.41
KO-EN FT 0.12 0.23 0.12 0.16 0.35 0.46 0.40
JA-EN FT 0.14 0.28 0.13 0.18 0.38 0.31 0.35
DE-EN FT 0.14 0.31 0.12 0.19 0.38 0.35 0.36
三个对一起 FT 0.11 0.38 0.12 0.20 0.40 0.41 0.41

有几个地方值得盯:

第一,跨对迁移是真的存在,但幅度不大。 只在 KO-EN 上微调,JA-EN 从 0.56 掉到 0.23——这个提升很显眼,但要注意 JA-EN 的原始基线本来就烂到 0.56,属于「基数低所以随便动一下都涨」。反过来看 DE-EN 这一列:原始模型已经是 0.15 的好成绩,无论在哪个语言对上微调,都只在 0.12~0.13 之间晃,没有实质变化。也就是说,「在别的语言对上微调」这件事对本来就做得好的语言对帮助微乎其微。

第二,unseen 那一栏几乎不动。 原始模型 UNSEEN 平均 0.41,三个单语言对微调后分别是 0.40 / 0.35 / 0.36。最好的 JA-EN FT 也只把 0.41 降到 0.35。更刺眼的是 KO-EN FT 那一行的 KO-JA 格子:0.46,比原始模型的 0.44 还差。在韩英上练得再好(KO-EN 做到 0.12,全表最好水平之一),也不代表韩日会变好。

第三,最反直觉的一行是「三个对一起 FT」。 按常理,三个 CS 数据集全喂进去应该最强,结果它的 SEEN 平均是 0.20(比只用 KO-EN 的 0.16 还差),JA-EN 更是掉到 0.38(KO-EN FT 单独训都能到 0.23),UNSEEN 平均 0.41——跟没微调的原始模型完全一样。数据加得越多反而越退步,这就是典型的多任务干扰(task interference):三种语言对的目标输出分布互相打架,模型在参数空间里被拉向不同方向,最后谁也没学好。

这一行的失败正是后面所有 model merging 实验的动机——既然一起训会互相干扰,那就分别训好,再在参数空间里合并

3.2 Model Merging:三种方法,只有 TIES 稳

先补一下概念,这三种方法都属于 model merging(模型融合),核心思路是:把微调模型的参数减去预训练模型的参数,得到一个「任务向量」(task vector),然后对多个任务向量做算术运算再加回预训练模型上。

  • Task Arithmetic(Ilharco et al., 2023):最朴素的做法,几个任务向量直接加权求和。
  • TIES(Yadav et al., 2023):加之前先做两步清理——一是裁掉幅值小的参数改动(只保留重要的),二是解决符号冲突:同一个参数位置,模型 A 想往正方向改、模型 B 想往负方向改,TIES 会按幅值投票选一个方向,另一边直接丢掉,避免相加后互相抵消。
  • DARE(Yu et al., 2024):随机丢弃任务向量里的大部分元素,再把剩下的按比例放大以保持期望不变,然后合并。

看表格中间那一大块(MODEL MERGING)。我把关键行拉出来对比:

方法 合并配置 SEEN 平均 UNSEEN 平均
三个对一起 FT(上一节的基线) 0.20 0.41
Task Arithmetic KO-EN + JA-EN 0.20 0.45
Task Arithmetic KO-EN + JA-EN + DE-EN 0.56 0.77
TIES KO-EN + JA-EN 0.14 0.32
TIES KO-EN + JA-EN + DE-EN 0.14 0.34
DARE KO-EN + JA-EN 0.21 0.47
DARE KO-EN + JA-EN + DE-EN 0.55 0.77

TIES 是唯一稳定的。 它的四个合并配置(三个两两组合 + 一个三合一)在 SEEN 平均上分别是 0.14 / 0.15 / 0.16 / 0.14,波动极小,而且 0.14 比任何单语言对微调(最好 0.16)和三对联合微调(0.20)都好。UNSEEN 平均最好做到 0.32(KO-EN + JA-EN 那一行),是全表 unseen 最好成绩。这说明作者在正文里那句判断是站得住的:冲突感知的稀疏参数合并确实能把不同语言对的 CS 能力拼在一起而不严重打架

Task Arithmetic 和 DARE 在三模型合并时直接崩了。 看那两行加粗的:Task Arithmetic 三合一的 KO-EN 是 0.73、KO-JA 是 0.96;DARE 三合一是 0.74 和 0.96。MER 0.96 是什么概念?几乎每个单位都识别错了,等于模型报废。 而它们两两合并时还勉强可用(SEEN 平均 0.19~0.21)。为什么?因为这两种方法本质上是无条件相加:两个任务向量相加时冲突还能被幅值消化掉,三个一起加,符号冲突和幅值累积就把参数推出了预训练模型附近那个「能正常工作」的区域。TIES 之所以没崩,就是因为它在相加前做了裁剪和符号投票这两道闸。

顺便注意 DARE 和 Task Arithmetic 的数字有多接近(0.21/0.24/0.19 vs 0.20/0.24/0.18,三合一 0.55 vs 0.56)——DARE 的随机丢弃 + 重缩放在这个任务上几乎没起作用,它的行为退化成了 Task Arithmetic。

3.3 Domain Generalization:换个思路,同样不行

第二条路子是 domain generalization(DG,域泛化)。这类方法的做法是:训练时把每个语言对当成一个「域」,通过约束不同域之间的梯度,逼模型去学域之间共享的、不随域变化的机制,从而在没见过的域上也能工作。作者试了三个:

  • Fish(Shi et al., 2021):最大化不同域之间的梯度一致性。
  • Fishr(Rame et al., 2022):对齐不同域的梯度方差,用来约束损失曲面的形状。
  • GGA-L(Ballas & Diou, 2025):GGA 的轻量版,在训练早期做梯度对齐来抑制域过拟合。

结果在表格最下面那一段:

方法 SEEN 平均 KO-DE KO-JA UNSEEN 平均
三个对一起 FT(基线) 0.20 0.40 0.41 0.41
Fish 0.17 0.47 0.53 0.50
Fishr 0.18 0.35 0.31 0.33
GGA-L 0.17 0.45 0.40 0.42

三个方法里只有 Fishr 起了作用:UNSEEN 平均从基线 0.41 降到 0.33,提升 0.08。Fish 反而更差(0.50,比什么都不做还烂),GGA-L 基本没动(0.42)。

即使是 Fishr 的 0.33,也仍然不能用。对比一下:seen 语言对上微调后能做到 0.2 以下,unseen 上停在 0.3 以上——这个 gap 就是这篇论文没能填上的那道沟。0.33 的 MER 意味着每三个单位错一个,任何真实产品都接受不了。

作者对 DG 失效的解释很有意思,我觉得是全文最有价值的一段推理:常规 DG 方法假设「任务相关的机制在各域之间共享,变的只是域特有的表面差异」。比如图像分类里,「猫」的概念在照片域和素描域是同一个,变的只是风格。

但 CS-ASR 不满足这个假设。换语言对的时候,变的不只是输入的域,输出分布本身也变了——KO-EN 的目标是「韩文字 + 英文词」的混合序列,KO-JA 的目标是「韩文字 + 日文假名/汉字」的混合序列。这不是同一个任务换了个风格,这是换了个输出空间。所以拿 CV 那套 DG 方法直接套过来,从假设上就不匹配。


4. 参数层面看:CS 微调到底改了模型的哪里

除了刷指标,作者还做了一个我觉得比主表更有信息量的分析:CS 微调到底动了 Whisper 的哪些参数?

方法来自 Bandarkar et al. (2025)(那篇做 layer swapping 跨语言迁移的 ICLR 工作):把微调后的模型参数减去预训练参数,得到参数差(delta);对每个权重矩阵按行算 delta 的平均绝对值(MAV, Mean Absolute Value);然后统计有多少比例的行,其 MAV 超过了阈值 5×10⁻⁵。比例越高,说明这个模块被改动得越厉害。

4.1 KO-EN 微调模型:改动集中在高层

KO-EN 微调的逐层参数改动比例

这张图怎么看:

  • 左边一张是 Encoder,右边一张是 Decoder,两张图结构完全一样。
  • 纵轴 Layer 从下往上 0 → 23,也就是 Whisper-medium 的 24 层,下面是浅层(靠近输入的声学处理),上面是深层(语义/语言表示)
  • 横轴六列是每层里的六个权重矩阵attn.Wq / attn.Wk / attn.Wv / attn.Wo 是注意力的查询/键/值/输出投影,mlp.W1 / mlp.W2 是前馈网络的两个线性层。
  • 颜色就是那个「超过阈值的行占比」,右侧色条标了刻度:从下往上是黑(0)→ 深紫 → 紫红 → 橙红 → 橙 → 浅黄(100)。颜色越亮 = 改动越多,颜色越暗 = 参数基本没动。

现在看这张图最明显的规律:整体是「下暗上亮」的渐变。左图 Encoder 的最底部(Layer 0~2)的 attn.Wqattn.Wk 是接近纯黑的深色块,说明这些位置几乎没被微调改动;而顶部 Layer 20~23 整体是橙黄色,占比接近 80~100。右图 Decoder 同样是底部偏暗、顶部偏亮。

还有一个局部特征:左图 mlp.W1 那一列在 Layer 2~8 有一段特别深的紫黑色,比同层的注意力列还暗——说明 encoder 浅层的第一个前馈层被改得尤其少。

这个「下暗上亮」意味着什么?CS 适应主要发生在深层的语义和语言表示上,而不是浅层的低级声学处理。 这其实相当合理:混说的难点不在「听清声音」(浅层声学特征对所有语言是通用的),而在「判断当前这段声音该用哪种语言的字符去写下来」(深层的语言层面决策)。

4.2 JA-EN 和 DE-EN:同样的趋势,不同的强度

论文附录里给了另外两个语言对的同类图,正好可以横向对比。

JA-EN 微调模型:

JA-EN 微调的逐层参数改动比例

DE-EN 微调模型:

DE-EN 微调的逐层参数改动比例

三张图放一起看,坐标轴和色条完全一致,所以颜色可以直接横向比较:

  • 趋势一致:三张图都是「浅层暗、深层亮」,说明「CS 适应集中在高层」不是 KO-EN 的偶然现象,而是三个语言对共有的模式。
  • 强度差别很大:DE-EN 那张图整体明显更亮——大片是浅橙到浅黄,也就是说 DE-EN 微调改动了远远更多的参数行。JA-EN 居中,浅层(Layer 0~7)还有大片紫色。KO-EN 最暗。
  • DE-EN 图里有个抢眼的例外:Encoder 最底行 Layer 0 的 attn.Wq/attn.Wk/attn.Wv 三格是深紫色,跟它上方那一大片浅黄形成强烈反差——最底层的注意力投影几乎没动,但从 Layer 1 往上立刻全面变亮。
  • DE-EN 的 Decoder 右侧 mlp.W2 那一列从 Layer 0 一直到 19 都是偏暗的紫红色,跟左边五列的浅橙对比明显——这一列被改动得相对少。

这里有个值得琢磨的地方:DE-EN 改动的参数最多,但它在主表里的 MER 提升最少(DE-EN 从 0.15 只到 0.12)。反过来 KO-EN 改动最少,MER 提升最大(0.26 → 0.12)。所以「改动多」不等于「学到多」,很可能 DE-EN 那份数据(来自 UniCoM 的合成/拼接德英混说)本身分布和 Whisper 预训练差异大,逼着模型全身调整,但真正学到的 CS 能力并不多。这一点论文没展开,算是我自己的一点私货推测。

这个参数分析对前面的合并结果也是一个解释:如果三个语言对的改动都集中在高层同一批参数上,那它们在参数空间里的「地盘」是高度重叠的——重叠就意味着冲突。这正好解释了为什么无条件相加(Task Arithmetic / DARE)在三模型合并时会崩,而做符号投票的 TIES 能活下来。


5. 这篇工作的价值和局限

我觉得这篇短文的意义不在于提出了什么新方法(它没有),而在于干净地否证了一个很多人会有的直觉

先说贡献,作者自己列了三条:

  1. 系统检验了「CS 能力能否跨语言对泛化」这个问题;
  2. 展示了现成 model merging / DG 方法直接用在 CS-ASR 上的局限;
  3. 构建了第一个韩日和韩德 CS 语音评测集,并且韩日那份会开源(在 HuggingFace 上,thetaone-ai/Korean-Japanese-Code-Switching-Speech)。

第三条我认为是实际价值最高的。非英语中心的 CS 数据集几乎不存在,450 条虽然少,但至少让后续工作有了可比的评测基准。

再说局限,这些必须打折看待:

  • 绝对性能远达不到可用:merging 和 DG 最好把 unseen 平均 MER 压到 0.32,而 seen 上微调能做到 0.2 以下。差距明摆着。
  • 数据量小得可怜:JA-EN 训练集只有 582 条、单说话人;KO-JA 和 KO-DE 评测集每对只有两个说话人。说话人多样性和语言多样性都严重不足,这种规模下的结论只能当作趋势参考。
  • unseen 其实不够 unseen:所谓「没见过的语言对」,其组成语言(韩、日、德)在训练时全都单独见过。真正的「完全没见过的语言」(比如法语、中文)没有测。所以这篇文章测的是「语言对组合的泛化」,不是「语言的泛化」——后者更难。
  • 只测了 WHISPER-MEDIUM:更大的 Whisper 变体、以及现在流行的 audio LLM(把语音接进 LLM 那类架构)都没测。CS 这种任务很依赖语言建模能力,有 LLM 做 decoder 的模型表现可能完全不同。

作者给出的未来方向也很实在:分析模型里到底哪些组件负责 CS 行为;设计显式建模「语言对偏移」的 DG 目标(而不是套用假设不匹配的 CV 方法);以及扩充更多语言对的数据。


6. 我的几点 take

第一,负结果论文值得多看。 这篇文章告诉你的是「这条捷径走不通」。对做工程的人来说,这比又一篇「我们在中英 CS 上又降了 0.5 个点」有用得多——它省下了你自己踩坑的时间。作为研究 AI 方向的牛马,我特别怕的一件事就是花三个月验证了一个别人早已验证过是死路的方向。

第二,TIES > Task Arithmetic 这个结论有普适性。 这不是 ASR 特有的现象。只要你要合并的模型改动的是同一批参数,无条件相加就一定会遇到符号冲突,而模型数量越多,冲突累积越严重(三模型合并直接把 MER 推到 0.96 就是极端例子)。做 model merging,默认从 TIES 这类带冲突处理的方法开始,别从最朴素的加权平均开始。

第三,”换任务” 和 “换域” 得分清楚。 这篇文章里 DG 失效的原因分析我觉得可以推广:判断一个 DG / 迁移方法能不能用,先问一句「变化的只是输入分布,还是输出空间也变了?」输出空间变了的,本质上就是换任务,不是换域,套用域泛化方法基本无效。CS-ASR 的语言对切换属于后者。这个判据在很多跨领域迁移的场景都成立。

第四,回到那个组合爆炸。 这篇文章证明了「靠泛化白拿语言对」这条路暂时走不通,那剩下的路无非三条:合成数据(但现在的 TTS 造出来的混说语音声学上不自然)、真的花钱采集(成本平方增长)、或者从架构层面重新设计(比如让语言选择变成一个显式的、可组合的模块,而不是隐式糊在参数里)。我个人赌第三条——把「用哪种语言写下来」这个决策从参数里抽出来变成显式模块,才是不用为每个语言对付一遍钱的正解。这和我在 MoE 上的直觉是一致的:能力如果能被路由和组合,才有希望摆脱组合爆炸。

有做 CS-ASR 或者 model merging 的朋友,欢迎评论区聊聊——尤其是如果你在更大规模的数据上试过这套 merging,结论是否也一样。


扯一句题外话。这篇文章用的 TIES、DARE、Task Arithmetic,都属于「模型融合」这一类技术,而模型融合和剪枝、量化一样,本质上都是在已有模型的参数空间里做自动化的搜索和组合——只是搜索的对象从「网络结构」换成了「参数怎么合并」。我们把这个方向的相关积累整理成了《动手学 AutoML:从 NAS 到大语言模型优化实战》,其中第 8 章讲 LLM 压缩,包含剪枝、量化和模型融合;第 9 章讲 LLM 驱动的 AutoML。这篇文章聊的 ASR 本身书里没有涉及,但如果你对「怎么系统性地搜参数空间而不是手调超参」这个思路感兴趣,可以翻翻看。

动手学AutoML书籍封面

Flag Counter