llama.cpp b11190修复LFM2音频梅尔预处理器,日语贪婪转写准确率从 93.5% 升至 99.5%
llama.cpp发布b11190版本,修复mtmd中LFM2音频的梅尔预处理器(PR #29403),此前导致 4.5% 英语和 6.5% 日语测试语句的贪婪转写结果不同,日语中部分差异改变整个单词。修复后EN F16和JP F32的贪婪转写与参考实现完全一致。
AI解读:llama.cpp的b11190版本修了一个音频前处理的小毛病,但影响不小:在LFM2音频模型上,梅尔预处理器算错了频谱,导致解码出来的文字跟参考实现对不上。发布说明给出的测试数据是,修复前英语有 4.5%、日语有 6.5% 的测试语句贪婪转写不一致,日语里有些差异直接改变了整个单词,不是标点级别的小事。
改动针对三处数学细节:用log(x + 2^-24) 代替直接截断到对数下限;改用对称Hann窗,等价于torch.hann_window(periodic=False);把归一化epsilon加到标准差上,而不是放在平方根里面。重要限制是只有lfm2a这一个预处理器启用了新行为,其他音频预处理器不受影响。
修复后的效果是,英语F16从 191/200 升到 200/200,日语F32从 187/200 升到 200/200,日语F16从 187/200 升到 199/200。剩下那一处日语F16差异只是一个逗号,而且跟参考实现自己的bf16输出一致。梅尔频谱相对L2误差从英语 3.2%、日语 3.9% 降到约 2e-6中位数。
对用llama.cpp跑LFM2音频、尤其是做日语转写的人来说,这次更新把输出稳定性拉到了跟liquid-audio参考实现几乎一致的水平。测试条件是llama-server + CUDA + temperature=0,跟Liquid4All/liquid-audio fp32对比,输入两边都是相同的 16 kHz音频,200 条LibriSpeech test-clean英语和 200 条Common Voice日语。
换句话说,这是推理框架侧的数值对齐修复,不是模型本身更新,但如果你之前遇到日语转写出错词,值得升上去试试。
llama.cpp发布b11190版本,主要改动是修复mtmd中LFM2音频的梅尔预处理器(PR #29403)。发布说明称,该问题此前导致 4.5% 的英语和 6.5% 的日语测试语句出现不同的贪婪转写结果,在日语中部分差异会改变整个单词。
修复涉及三处:使用log(x + 2^-24) 代替截断到对数下限;使用对称Hann窗,等价于torch.hann_window(periodic=False);将归一化epsilon加到标准差上,而不是放在平方根内部。发布说明明确,只有lfm2a预处理器采用这些行为,其他音频预处理器不变。
测试基于提交 84e76d8,使用llama-server配合CUDA、temperature=0,与github.com/Liquid4All/liquid-audio fp32对比。测试集为 200 条LibriSpeech test-clean英语语句和 200 条Common Voice日语测试语句,两个实现接收相同的 16 kHz音频。
贪婪转写与liquid-audio一致的对比表格显示:英语F16修复前 191/200,修复后 200/200;日语F32修复前 187/200,修复后 200/200;日语F16修复前 187/200,修复后 199/200。发布说明指出,剩余的一处日语F16差异是一个逗号,并且与参考实现自身的bf16输出一致。
梅尔相对L2误差对比liquid-audio:英语从 3.2% 降至约 2e-6中位数;日语从 3.9% 降至约 2e-6中位数。
b11190同时提供多平台预编译包,包括macOS Apple Silicon、macOS Intel、iOS XCFramework、Ubuntu x64/arm64/s390x、Ubuntu Vulkan、Ubuntu CUDA 12/13、Ubuntu ROCm 10.0、Ubuntu OpenVINO、Ubuntu SYCL FP32/FP16、Linux arm64 Snapdragon、Android arm64、Windows x64/arm64、Windows CUDA 12/13、Windows Vulkan、Windows OpenVINO、Windows SYCL、Windows ROCm 10.0等,另有UI包。发布说明还列出了已禁用的构建项:macOS Apple Silicon KleidiAI enabled以及openEuler相关构建被标记为DISABLED。