ASR、语音识别模型与输入法核心概念图解
想给 Linux 搞语音输入,你会频繁遇到几个名词:ASR、VAD、FunASR、sherpa-onnx、Paraformer、Whisper、SenseVoice、SLM……它们分别是什么?之间什么关系?本文用最直白的方式讲清楚。
一次语音输入的全流程
按下快捷键说话,到屏幕上出现文字,整个流程可以切成 6 步:
1 | |
分层架构总览
所有语音输入方案可以按层级来理解:
1 | |
引擎和模型是两层不同的东西——这个区分是最重要的。用类比来记:
1 | |
同一个引擎可以跑不同的模型,就像同一台播放器可以播不同的光盘。
核心概念:ASR 引擎
FunASR(阿里巴巴达摩院)
FunASR 是阿里达摩院开源的工业级语音识别工具包,提供端到端的完整方案——从模型训练到推理,还自带 VAD(语音活动检测)、标点恢复、情绪识别等配套模型。
- 语言:Python
- 优势:中文优化极好,VAD + ASR + 标点一站式搞定
- 代表项目:VocoType-linux
sherpa-onnx(K2-FSA 团队)
sherpa-onnx(13.4k ⭐)是一个跨平台 ONNX 推理引擎。名字拆开看:
sherpa:夏尔巴人(登山向导),寓意”引导你的语音应用”
onnx:ONNX(Open Neural Network Exchange,开放神经网络交换格式),一种跨框架的模型标准——不管模型是用 PyTorch 还是 TensorFlow 训练的,导出为 ONNX 后都能被 sherpa-onnx 高效运行
语言:C++(支持 12 种编程语言调用)
优势:高性能,跨平台覆盖面极广(x86/ARM/RISC-V/树莓派/手机/浏览器都能跑)
代表项目:fcitx5-vinput
FunASR 与 sherpa-onnx 的关系:FunASR 训练模型 → 导出为 ONNX 格式 → sherpa-onnx 运行该 ONNX 模型。两者不是对立的,而是互补的——sherpa-onnx 可以跑 FunASR 训练出来的所有模型。
whisper.cpp
OpenAI Whisper 模型的高性能 C/C++ 移植版本,由社区维护。
- 语言:C/C++
- 优势:极致轻量,CPU 友好
- 限制:只能跑 Whisper 系列模型,不支持中文优化的 Paraformer
- 代表项目:audiov
核心概念:ASR 模型
模型是真正决定”识别得准不准”的核心。下面是 Linux 语音输入中最常见的四种模型:
Paraformer(阿里达摩院)—— 中文王者
全称 Parallel Transformer。最关键的特性是 “非自回归”架构:
1 | |
中文优化极好,中英混合也精准,是多个 Linux 语音输入方案的首选模型。
Whisper(OpenAI)
OpenAI 开源的多语言模型,通用性是最大卖点——一个模型覆盖 97 种语言。
- 优势:语言覆盖面广,生态成熟(whisper.cpp、faster-whisper 等优化版本多)
- 劣势:中文识别不如 Paraformer(训练数据中中文比例低);自回归架构,速度偏慢
Zipformer(K2-FSA)
sherpa-onnx 团队自己开发并支持的模型。
- 架构:Streaming Transducer(流式传感器)
- 特点:边说边出字(streaming),不需要等说完;模型体积小,适合低配机器
SenseVoice(阿里达摩院)
一个模型覆盖中文、粤语、英语、日语、韩语五种语言,支持多种中文方言,还能做情绪识别。属于”多面手”型。
引擎与模型的对应关系
1 | |
sherpa-onnx 的模型范围最广:FunASR 训练的模型导出 ONNX 后它都能跑,还额外支持 Zipformer 等。
其他重要概念
VAD(语音活动检测)
VAD = Voice Activity Detection。它判断”什么时候有人在说话”——没人说话时不做识别,省资源、避免噪音被误识别。
| VAD 模型 | 特点 |
|---|---|
| silero-vad | 通用型,sherpa-onnx 默认使用 |
| FSMN-VAD | FunASR 出品,中文语音优化,断句更精细 |
标点恢复(Punctuation)
语音里没有标点符号。你说”今天天气真好”和”今天天气真好!”听起来一样,但文字里需要区分。标点模型根据语义自动加标点。
SLM / LLM 后处理
ASR 结果可能有错别字,后处理负责二次加工:
- SLM(Small Language Model,小语言模型):轻量级模型,在本地运行,对识别结果做纠错。比如”今田天气真好” → “今天天气真好”
- LLM(Large Language Model,大语言模型):像 GPT 这样的大模型,能做到更复杂的后处理——翻译、段落格式化、语气调整等
Streaming vs Non-streaming
1 | |
Paraformer 默认是 non-streaming,但因为极快(0.1 秒),实际用起来感受和 streaming 差别不大。Zipformer 是原生的 streaming 模型。
Linux 生态中的三个方案
目前在 Linux 上有三个活跃的开源语音输入方案,它们的技术选型对比如下:
1 | |
- VocoType-linux:基于 FunASR,100% 离线,中文优化到极致,支持 IBus + Fcitx5 双框架
- audiov:Rust 实现,whisper.cpp 引擎,轻量简洁,早期开发阶段
- fcitx5-vinput:C++ 实现,sherpa-onnx 引擎,模型覆盖最广,支持云端 ASR + LLM 后处理,社区最活跃
想动手配置的话,参考 fcitx5-vinput 语音输入法安装与配置指南。
如果这篇文章对您有帮助,欢迎打赏支持