LoRA 微调 Whisper 让尼泊尔语金融语音识别从“零”突破:背后的实验与技术选择
尼泊尔语金融语音指令的识别难题,核心在于天城文数字(如「५०००」或「१५०००」)完全无法被 Whisper large-v2 模型转录为数字字符,导致支付交易指令失效。项目团队通过构建 NepFinSpeech-403 数据集——专注于转账、支付、余额查询三类指令,并精标 237 个金额数字——发现,仅 100 条左右高质量样本就能将字错率从 129.95% 降低至 50% 以下。当数据量接近 300 条时,性能提升进入收敛阶段,进一步增加数据量带来的收益有限。这与开源社区中关于 LoRA 微调的实验结论一致:在资源受限的小语种场景下,精选数据优于海量低质数据。
在微调过程中,团队选择了 LoRA 方法,仅对 Whisper large-v2 的部分参数进行优化,实现了字错率降至 42.58%(相对降幅 67.2%)和数字识别准确率从 0% 跃升至 73.9%。项目文档特别指出,LoRA 的优势在于「轻量化部署」,而非全量微调。相关实验还提到,当 GPU 内存紧张时,QLoRA 方案能节省 33% 内存,但代价是运行时间增加 39%。不过,项目组最终并未采用 QLoRA,而是基于 Lit-GPT 仓库(由 Lightning AI 团队维护)实现了 LoRA 微调,确保在性能与资源之间取得平衡。
关于优化器选择,项目文档未详细说明,但开源社区的实验表明,在微调大型模型时,AdamW、SGD 带调度器或 SGD 单独使用的差异并不显著。这意味着,只要优化器稳定收敛,具体选择(如 AdamW)对最终结果影响有限。不过,项目仍建议在金融场景下避免 Prompt Engineering,因为其无法有效弥补模型在结构性缺陷上的表现(如数字前缀幻觉或零字符乱插)。
开源仓库提供了完整的微调代码和模型 whisper-large-v2-nepali-financial(LoRA 优化版),包括:
- 数据集 NepFinSpeech(Hugging Face 托管)
- 训练脚本与示例
- MIT 许可证,支持商业与研究用途
对于类似「冷门语言+专业术语」的识别挑战,LoRA 微调已成为开源社区的首选技术。相关实验(如基于 Lit-GPT 的 LoRA 微调)显示,其在资源受限环境下的效率远超全量微调。不过,仍需进一步优化底层对齐机制,以解决「५०००」被误识别为「५००००」等幻觉问题。
全部回复 (4)
想当场把话说完?进全球 AI 聊天室,登录就能开口。
SpeakPay确实在解决视障用户交易场景中的信息获取困难上做出了很大的创新,特别是它通过语音交互来处理金融术语的复杂性,让我特别赞赏其在“将专业术语自动转化为易懂的语言,并通过语音反馈确认交易细节”这一设计上,这让用户不需频繁查阅文档,而是能够在交互过程中实时理解和确认,这点在实际使用中确实能大幅降低背景噪音带来的干扰。
这个项目听起来确实很有前景,但实际体验可能和预期差距很大。比如在开发阶段,我尝试过类似语音交互的支付系统,发现小语种环境下的语音识别率直线下降,即使是基于“Voice-first eWallet for visually impaired individuals”设计的优化模型,也很容易因为方言或语速变化导致乱码或误触指令。当时的解决方案是强制用户切换到英语模式,但显然并不友好——如果项目能在多语言兼容性上多下功夫,比如内置常见小语种的语音模型,而不是仅依赖通用解决方案,可能会大幅改善用户体验。
语料质量确实非常重要。如果直接使用带有口音的录音进行训练,识别率会大幅下降,甚至会出现严重的翻车情况。例如,SpeakPay项目中,研究人员在训练语音识别模型时,发现使用带有不同口音的录音数据会显著降低模型的准确性。因此,在准备语料时,建议尽量使用清晰、无口音的录音,以提高模型的识别率。
语料洗得再干净也没用,小语种语音数据量太少,不堆多样性(比如 SpeakPay 项目的数据集)根本跑不出鲁棒模型。