VOSK 模型简介
VOSK 是一套离线语音识别方案,基于 Kaldi 声学/解码思路,用 C++ 实现,并对外提供 Python、Java、C#、Node.js 等绑定。名字来自 “Voice Open Source Kit” 一类含义,社区里常直接叫 VOSK。
定位与特点
-
离线优先
推理在本地完成,不依赖云端 API,适合隐私、弱网、车载/嵌入式场景。
-
轻量与跨平台
可在树莓派、Android、服务器上跑;小模型可在资源受限设备上使用。
-
流式识别
支持分块音频流输入、实时返回部分结果,适合麦克风连续说话。
-
多语言
官方提供多种语言的预训练模型(大小从几十 MB 到数 GB 不等)。
-
与 Kaldi 生态的关系
很多模型/工具链与 Kaldi 训练流程兼容或相近,但使用上通过 VOSK 的 API 封装,不必自己搭完整 Kaldi 管线。
模型里一般有什么
典型 VOSK 模型目录里常见:
| 组件 | 作用 |
| 声学模型 (AM) | 把声学特征映射为音素/状态(常基于 DNN/TDNN 等 Kaldi 结构) |
| 语言模型 (LM) | 约束词序列概率;小模型可能用简单 n-gram,大模型效果更好但更占空间 |
| 词典 / 图 (HCLG 等) | 发音词典与解码图,把声学输出接到词/字序列上 |
| 配置 | conf/、am/ 等目录下的参数,与特征维数、帧移、采样率等一致 |
使用时通常是:下载某个语言的 zip → 解压成目录 → 用 API 指定该目录路径。
性能与选型
-
模型越大 → 一般 词错率更低,但 内存、CPU、延迟 更高。
-
16 kHz 电话/通用麦克风采样与 8 kHz 电话线模型不要混用。
-
若只做固定命令词,可用更小模型或自定义语法(grammar)缩小搜索空间、提高准确率与速度。
典型使用方式(概念上)
-
初始化:Model(模型路径)。
-
创建识别器:KaldiRecognizer(可带采样率、可选 grammar)。
-
循环喂 PCM 字节流(常见为 16-bit 小端单声道);短音频也可整段喂入。
-
从返回的 JSON 里取 text 或 partial(流式中间结果)。
输入需与模型声明的采样率一致(常见 16000 Hz)。
适用与不适用
适合: 离线命令、字幕草稿、嵌入式语音、隐私敏感场景、原型快速接入。不太适合: 要求与最强云端大模型同水平的开放域识别;极嘈杂环境若不配合前端降噪,效果会受限。