📄 只做土耳其语的小模型怎样从零学会听写
英文题目:ufakzeka-kulak: Building and Evaluating a 31.6M-Parameter Turkish Speech Recognizer from Scratch
评分:6.2/10 | 创新 1/2 | 技术严谨 1.2/1.5 | 实验充分 1.2/1.5 | 清晰度 0.8/1 | 影响力 0.5/1.5 | 开源 0/1.5 | 可复现 0.3/0.5 | 工程/实践 1.2/1.5
👥 作者与机构
- Sait Furkan Teke:ufak AI
📌 核心摘要
土耳其语离线识别需要体积小、可商用、可在普通电脑和浏览器运行的模型,而现有大模型多为多语言且体积大。输入是 16,000 Hz 单声道语音,输出是带大小写、句号、逗号、问号、撇号和词内连字符的土耳其语文本,数字写成单词,难点在于可商用人工标注只有约 281 小时,其余近 4,696 小时需从上传者字幕或机器转写中提炼可靠文本。做法是先用较快的开放识别器写初稿,再用另一家机构的模型独立复核,只保留两者一致程度达标的句子;训练采用 16 层 FastConformer 编码器同时接转导解码器和辅助分类头,并用事先固定的试点规则决定增强与配方。发布门限要求在两个未见过的测试集上都超过 Whisper base,贪心解码的归一化词错率在 FLEURS 土耳其语测试集为 0.0921,低于 Whisper small 的对应成绩,而 Whisper large-v3 为 0.0604。会话语音上词错率为 0.3807,约为朗读语音的四倍,模型尚不适合对话场景。从试点起点到冷却结束共用 52.3 个 A100 80 GB 图形处理器会话小时,含验证与存档开销。
🔗 开源与复现资源
第三方资源:https://github.com/ufakai/ufakzeka-kulak — 链接可访问(HTTP 200)
第三方资源:https://huggingface.co/ufakai/ufakzeka-kulak — 链接可访问(HTTP 200)
第三方资源:https://kulak.ufakzeka.com — 链接可访问(HTTP 200)
可达状态仅表示本次链接检查结果,不代表许可证、本文权重或运行复现已验证。
🧭 深度解读
这个模型要解决什么听写任务
输入是 16 000 Hz 单声道土耳其语音,目标是直接写出带大小写和标点的土耳其语句子,数字要写成单词形式。必须保留的信息包括词的内容和顺序、句号逗号问号、词内撇号和连字符,以及句首和专有名词的大写。
输出是整句文本,模型本身是整句模型,长录音需要先切成句子再逐句识别。论文强调离线可用和商用许可清晰,模型只有 31 564 935 参数,目的是能在笔记本、服务器或浏览器页面运行,而不是追求超过最大的多语言模型。
对于刚入门的读者,关键是区分听对词和写对格式。后文会用两种评价:一种是归一化词错误率,它把大小写、标点、数字读法统一后再比较,数值越低表示听对的词越多;另一种是保留标点和大小写的错误率,用于看逗号句号和大写是否写对。
已有大模型和本工作的分工有何不同
论文把 Whisper、OWSM 和 Omnilingual ASR 作为背景,它们是覆盖多语言的大模型,土耳其语只是其中一种。ufakzeka-kulak 反其道而行,只做土耳其语一种语言,从零训练一个小模型,并公开每个训练来源和许可。
实验室此前已有语言模型 ufakzeka-1 和决策模型 ufakzeka-karar,这个语音模型是同一系列的听觉入口。比较时要注意条件是否相同。论文自己用同一土耳其语归一器对 Whisper 重新评分,保证文本处理一致。
但 Whisper 的训练数据没有完全公开,某些测试集对它可能不是未见过的,因此不能把 1 次比较理解为绝对排名。论文还用了 Omnilingual ASR 和 Qwen3-ASR 等开源识别器,但它们只出现在挑选训练文本的环节,不是被比较的主角。
小数据和不可信字幕带来什么困难
真正可信的人工转写只有 281 小时,包括 Common Voice 朗读和自发语音、单人专业录音和 ISSAI 土耳其语语料训练划分,其余约 4 696 小时都是 YouTube 收集的 YODAS 音频,没有可信文本。如果直接用自动字幕训练,会把字幕错误学进去。
如果全部丢掉,数据量又不够训练一个从零开始的模型。另一个困难是数字和标点写法不统一。训练文本中存在点小数、罗马数字序号等无法按规则读出的数字形式,还有多种标点混用等问题。
论文的做法是把标点映射到允许的标记,去掉变音符号,把数字统一写成单词,读不出的数字形式直接丢掉,读音有歧义的用独立模型打分选择。长音频、噪声、混响和音量变化也是实际部署会遇到的困难,训练时需要专门加入这些扰动。
从声音到文字的整体流程是什么
沿着一句话走一遍:原始波形先算成 80 维对数梅尔特征,窗口 25 ms、步长 10 ms,再经过 SpecAugment 做频率和时间遮挡增强。特征进入 16 层 FastConformer 编码器,宽度 256、4 个注意力头、前馈扩展 4 倍、卷积核 9,带深度可分离卷积下采样把时间压缩为原来的八分之一。
编码器输出同时送给两个头:主用的 TDT 解码器和辅助的 CTC 头。TDT 解码器有一个宽度 640 的单层预测网络和宽度 640 的联合网络,每个输出记号还预测 0 到 4 帧的持续时间,解码时每帧最多输出 10 个记号,默认贪婪解码。
训练文本来自两类:人工转写直接使用,YODAS 音频则经过先转写后核验的流程。推理时 NeMo 模型是基准,另有多种导出格式,论文逐一测量它们与 NeMo 的词错误率差距,只有差距在 0.005 以内且无失败句子才允许发布。
编码器和两个输出头各自做什么
编码器是 FastConformer,作用是把变长的声学特征变成变短但上下文更丰富的表示。下采样 8 倍意味着 8 帧特征对应 1 帧编码输出,这减少了后续解码的步数,也让每 1 帧看到更大范围的语音。词汇表是只在去污染后训练文本上训练的 SentencePiece BPE,共 1 024 个片段。
TDT 解码器是实际发布时用的路径,它在预测下一个文字片段时还预测持续时间。CTC 头以 0.3 权重参与训练,并在第八层后加一个同样 0.3 权重的中间 CTC 损失,目的是让中间层也学到对齐。开发集上 TDT 的词错误率明显更低,因此论文默认报告 TDT 贪婪结果。
FastConformer 编码器 × TDT 解码器: FastConformer 编码器负责把 80 维对数梅尔特征压缩并提取上下文表示,TDT 解码器负责在该表示上决定输出哪个文字片段以及占据几帧时长,二者搭配让模型既利用长上下文又显式控制持续时间,组合后得到带大小写和标点的土耳其语文本。
TDT 解码器 × CTC 头: TDT 解码器是主输出路径,带单层预测网络和联合网络,用于贪婪解码产生最终文本;CTC 头是接在同一编码器上的辅助输出路径,以 0.3 权重参与训练并在第八层后加中间 CTC 损失,用于给编码器提供逐帧对齐约束,组合训练让编码器同时学到对齐稳定性和文本准确性。
不可信音频的文本是怎样筛出来的
对每段至多 30 s 的 YODAS 单元,先用 Whisper large-v3-turbo 写一份转写。自动生成的字幕从不直接作为训练文本。如果该单元有上传者字幕且与这份转写在词错误率 0.2 内一致,就用上传者字幕作为训练文本;否则看机器转写是否能被 Omnilingual ASR CTC 7B v2 在字符错误率 0.10 内复现,能复现才保留,否则丢掉。这个检查共去掉了 1 134.62 小时。留下来的 YODAS 训练文本按来源分成两部分,一部分是采用上传者字幕的单元,另一部分是经过第二模型复核的机器转写单元。
数字多读音时,取打分最高且超出次高 2.0 nats 的读法,否则保留规则读法或丢弃。这里先由规则读法给出候选读法,再由 Omnilingual ASR 在音频上打分,前一步的转写和读法候选进入这一步的比对,只有胜出幅度足够的读法才被采用。模型和阈值的选择都在从不参与训练的 ISSAI 开发集上完成,共 3 428 条、4.26 小时。Whisper large-v3 与 turbo 差距不显著,因此保留更快的 turbo。
在 ISSAI 开发集上,Whisper large-v3 与 large-v3-turbo 的词错误率分别为 0.1573 和 0.1630,差值不显著,所以流水线保留更快的 turbo 负责写出初版转写。核验模型中 Omnilingual CTC 7B v2 字符错误率最低,为 0.0514,低于另外两个候选模型的 0.0599 和 0.0624,因此由它承担第二路独立复核。在 0.10 阈值下保留 2 541 条,其转写词错误率由全部条目的 0.1630 降到 0.1249。该阈值是在固定规则下选出的最宽松保留条件,需要同时满足保留转写的词错误率目标和保留条数占比目标。
需要注意该集参考文本是小写无标点且拆分了一些词,所以绝对错误率偏高,但所有候选模型用同一参考比较。Whisper、Omnilingual ASR 和 Qwen3-ASR 的训练数据均未完全公开,除上述转写和读音打分外,这些模型的其它输出均未进入训练文本。
上传者字幕 × 独立复核转写: 上传者字幕是视频自带的文本,独立复核转写是另一个厂家的 CTC 模型对同一音频的第二次读取,前者优先但需与 Whisper large-v3-turbo 转写在词错误率 0.2 内一致才采用,后者只在无字幕或不一致时以字符错误率 0.10 为门限过滤机器转写,二者分工是把不可信网络音频变成可训练文本并丢掉分歧大的部分。
训练混合增强和去污染如何保证公平
训练池按温度 0.5 采样各语料,每轮每个来源至多重复 4 次,使人工转写来源占每轮小时数的 25.7%。人工来源做变速扰动,训练音频随机混入许可清晰的噪声,随机加入房间脉冲响应的混响,0.8% 为无语音噪声空文本。
随机增益把一半训练片段在负 40 到正 6 dB 范围内缩放,且在噪声和混响之后施加,使语音噪声混响一起缩放。降温阶段人工占比提高到 40%,且 YODAS 只取一致性在 0.05 以内的单元。训练优化器为 AdamW,发布权重是训练权重的指数滑动平均。
去污染用归一化后所有开发测试参考组成排除集,对训练文本和分词训练行做精确匹配和词匹配,并用音频指纹比对,共去掉 432 条训练句子,其中 206 条是 ISSAI 音频命中。FLEURS 任意划分、Common Voice 开发测试划分、Real-TurnTurk 和报告的 MediaSpeech 从未参与训练。
配方选择和发布门在训练前如何固定
在正式训练前做了 11 个试点,每个都是正式调度的主干加短降温,在第 14 500 步按事先固定的规则读取。其中 8 个组成析因比较,另有两个基线重复测种子噪声,一个在基线格上加随机增益。评价指标是两个开发集词数汇总后的词错误率。
只有通过 Holm 校正、相对降低至少 2% 且 FLEURS 单独区间不整体高于零,才采纳改动。增益则要求原音量词错误率保持在 1% 以内,且在衰减音频上的词错误率明显降低。正式主干跑到第 119 500 步,事先规则要求若验证词错误率在最后 10 000 步内相对下降超 2% 则延长,实际未触发延长。
随后从同一检查点分出两个各持续 16 000 步的降温过程,一个用主混合,一个用降温混合,各取最后检查点和最后三存档平均共 4 个候选。从增益试点第一步到主混合降温共用 A100 80 GB 约 52.3 GPU 会话小时,含搭建验证和存档。
开发集 × 发布门: 开发集指 Common Voice 土耳其语开发集、FLEURS 土耳其语开发集和 ISSAI 开发集,所有配方、阈值、检查点和导出选择都只在这上面决定;发布门是训练前固定的测试规则,要求在两个朗读测试集上以配对区间整体低于零超过 Whisper base,二者搭配保证不偷看测试集,测试集只被评分一次。
朗读测试的主结果在什么条件下成立
主结果只看两个门控测试集,且都用同一土耳其语归一器计算归一化词错误率,区间是 2 000 次分块百分位自助法。测试集在门固定后只评 1 次,且 Whisper 分数在任何训练前已算好。指标数值越低越好,差值为本模型减去 Whisper,负值表示本模型更好。
发布前先在开发集上定好做法,再用门控测试集做 1 次判定,这个顺序把选择模型和检验模型分开。开发集负责确定训练做法、检查点和导出文件的取舍,门控测试集只在训练完成后按固定规则评 1 次,避免反复试测试集。同一归一器处理参考文本和识别文本,先做统一码规范化,再去掉括号区间,把数字转写成词,按土耳其语习惯小写,去掉词内和其它标点,折叠扬抑符并去掉语气填充词,这样不同系统的词错误率可以直接比较。
下表比较本模型与 Whisper base 在相同归一器下的词错误率,公平条件是同一测试划分和同一归一处理,指标方向为词错误率越低越好。
| set | utt. | WER | CER | base WER |
|---|---|---|---|---|
| FLEURS test | 743 | 0.0921 [0.0792, 0.1055] | 0.0335 | 0.2461 |
| CV 27.0 test | 11,874 | 0.0916 [0.0873, 0.0958] | 0.0242 | 0.3287 |
| Real-TurnTurk | 1,532 | 0.3807 [0.3270, 0.4640] | 0.2787 | 0.7242 |
| MediaSpeech | 2,511 | 0.1042 [0.1013, 0.1073] | 0.0422 | 0.3282 |
本表比较的是同一归一器下的词错误率,FLEURS 测试上本模型词错误率约 0.0921,Common Voice 测试上约 0.0916,均明显低于 Whisper base 和小模型在该归一器下的分数。配对词错误率差值的区间整体低于零,因此发布门通过,说明在给定的归一条件和测试划分下,本模型的读句识别误差更小。
Whisper large-v3 贪婪分数仍低于本模型,但论文未对它做配对检验,所以只能作为参考分数,不能得出配对显著性的结论。Real-TurnTurk 只有 6 个说话人所以区间很宽,MediaSpeech 按句子独立自助区间可能偏窄,且 Whisper 训练数据未完全公开,因此这两套非门控结果只说明对话和媒体语音更难,不能与门控结论同等看待。Whisper base 和小模型在每套测试上都取贪婪解码和自带解码中较好的一方参与比较,比较前已算好分数,测试集本身也只评了 1 次。
归一化词错误率 × 标点大小写错误率: 归一化词错误率是把大小写、标点、数字读法和填充词统一后再算的词级别错误,用于比较听对多少词;标点大小写错误率是在保留标记的文本上计算的 PC-WER、PuncER、CaseER 和 PER,用于衡量写对标点和大写的程度,二者搭配区分听错词和写错格式,组合后能看出该模型听词较好但逗号和对话标点较弱。
试点基线噪声与降温选择说明什么
本节比较的是配方改动是否真正降低开发集汇总词错误率。公平条件是同一开发集词数汇总与事先固定的采纳规则,词错误率越低越好,改动需要同时通过显著性、相对降幅和 FLEURS 单独区间检查。下表只列 3 个基线种子的分数,用于估计种子噪声下限。
| 条件 | 指标含义 | 数值 |
|---|---|---|
| 基线种子一 | 开发集汇总词错误率 | 0.1608 |
| 基线种子二 | 开发集汇总词错误率 | 0.1583 |
| 基线种子三 | 开发集汇总词错误率 | 0.1601 |
3 个基线非常接近,噪声下限取均值的 1%,即词错误率 0.0016。一致性正则 CTC、CTC 侧权重和 BPE-dropout 均未达标,只有随机增益在保持原音量且提升衰减音频后被采纳。降温阶段 4 个候选平均词错误率均为 0.095,因此发布主混合降温的最后检查点,两种混合无显著差异。训练只用一个种子,种子方差没有被测量。
标点大小写的能力边界在哪里
本节比较的是同一模型在朗读测试集上写对句号和逗号的能力。公平条件是同一模型输出与映射到模型标记的参考做比较,指标是句号召回率和逗号召回率,数值越高表示相应标点被找回得越多。下表整理正文明确报告的两组召回率数字。
| 测试集 | 句号召回率 | 逗号召回率 |
|---|---|---|
| FLEURS test | 0.839 | 0.359 |
| Common Voice test | 0.939 | 0.612 |
两组数字都显示句号召回远高于逗号召回,说明模型更容易写对句号,而逗号经常漏写。结合正文对对话语音的描述看,模型在对话上写的标点更少,大写 F1 也明显更低,带标点计分的错误随之升高。听对词并不等于写对格式,逗号漏写是明确短板,切分过紧的语音段也可能丢失大小写和标点。
退化音频与导出文件的代价有多大
本节比较的是同一模型在压缩、电话带和衰减副本上相对原音频的词错误率变化。公平条件是同一测试音频与配对比较,指标是词错误率增量,正值表示在副本上变差。下表只列正文用文字明确给出上限或数值的两项退化代价,完整多条件增量与配对区间见原文退化音频小节。
| 条件 | 指标含义 | 数值 |
|---|---|---|
| 30 dB 衰减下 FLEURS 损失 | 词错误率增量 | 0.0205 |
正文的结论是 6 000 bit/s Opus 代价最大,电话带次之,而 12 000 bit/s 和 20 dB 衰减代价较小。导出方面 transformers 与 NeMo 标识完全一致,GGUF 标识部分不同但词错误率差距很小。sherpa-onnx 前端差异关键在取对数前小常数,发布文件带输入乘 8 补偿,正常音量成立但对安静音频无帮助。CTC 运行时会丢掉最后 1 帧,常丢掉句末标点,示例代码用补零缓解。
哪些结论不能推广到其他场景
模型只读土耳其语,其他语言和混合语言没有测量。不是流式模型,1 次解一句,长录音需先做语音活动检测并在每段前后保留几百毫秒,卡得太紧的切分可能丢失大小写和标点。不做说话人分离,词时间戳没有核验。
数字输出为单词,需要数字的应用必须自行转换。对话语音远难于朗读,Real-TurnTurk 词错误率约为朗读的 4 倍,且只有 6 个说话人。性别年龄口音差异没有测量,逗号常漏。
YODAS 中大部分是无字幕一致时的机器转写加复核,2 个模型一致的错误仍会留下。只用一个种子训练,种子方差未知。sherpa-onnx 文件需要增益和 CTC 补齐,安静音频损失更大,MLX 路径未在苹果芯片测量。
要复现和运行第一步该做什么
先分清三件事:代码、权重和在线演示是不同事项。论文给出 Hugging Face 权重卡与归属、GitHub 代码和浏览器演示 3 个地址,但本次解读只依据论文原文,不断言链接当前可用。按论文描述仓库应含 NeMo 文件、transformers 文件夹、sherpa-onnx 文件、GGUF 文件、MLX 文件夹、许可文本、校验和与归属文件。
复现第一步是按论文切分重建评测:用 Common Voice 土耳其语开发集和 FLEURS 开发集做选择,用 ISSAI 开发集做标注阈值,用论文土耳其归一器统一大小写标点数字和填充词,再跑分块自助得到区间。不要直接在测试集上调参。
运行时注意 sherpa-onnx 示例的增益和 CTC 补零,GGUF 一个文件服务两头,MLX 需用自带特征函数而非包内前端。速度方面,苹果 M1 单线程中位实时率 int8 低于 float32,同机浏览器演示较慢,云服务器双线程反而更慢,冷加载和内存见模型卡。
什么时候值得尝试还缺什么验证
当任务是土耳其语朗读或媒体语音的离线听写,需要商用许可清晰、小体积和浏览器运行,且能接受数字写成单词、逗号常漏时,值得尝试本文的 TDT 贪婪路径。当任务是自然对话、需要说话人分离、词时间戳、流式输出或按性别年龄口音保证公平性时,本文证据不支持直接采用。
还需要补的验证包括多种子训练方差、更多对话说话人和口音分层、安静音频下导出文件的系统补偿、苹果芯片上的 MLX 实测,以及标点尤其是逗号的专项改进。教学上容易误解的是把低于 Whisper small 理解为全面超越,实际上只在两个朗读测试集的归一化词错误率配对区间成立。
把 int8 导出等同无损也是误解,它依赖增益和补齐且在安静音频损失更大。把 MediaSpeech 的低词错误率当作通用媒体能力同样不妥,其参考风格和 Whisper 数据未公开都会影响比较。
📎 论文与评分元数据
排名:前50% | 文档类型:模型报告 | arXiv 原文
⚖️ 评分明细
评分属于系统判断,不是论文实验结果;八维数值与总分见页首,原始审计记录保留在后端。
评分规则:type-aware-v1
评分模型:muse-spark-1.3-contributor
评分请求协议:openai_responses