vosk-api
离线语音识别工具包,支持20+语言,50MB模型本地运行,Python/Java/Node多语言SD
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
离线语音识别工具包,支持20+语言,50MB模型本地运行,Python/Java/Node多语言SD
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你是深度调查记者,手中握着一段关键录音,但录音内容涉及举报人隐私,对方明确要求「绝对不能上传到任何服务器」。你面临两难:上传到 Google Speech-to-Text 准确率高但隐私全无,用手机自带语音输入又错漏百出。
这就是 Vosk 诞生的真实需求: 一套可以在本地运行的离线语音识别引擎,无需网络,无需将数据传输到任何第三方服务器,在树莓派上就能跑,在 Android 手机里也能跑。
图1:Alpha Cephei 项目组织标志
Vosk 的全称是「Voice Open Speech Kit」,由 Alpha Cephei 公司(一家专注语音技术的公司)开发和维护。项目基于业界公认的语音识别标杆框架 Kaldi 构建——Kaldi 是约翰霍普金斯大学主导的开源项目,长期被各大科技公司的语音团队用作研究和生产的基础。
与 Kaldi 相比,Vosk 做了两件关键改进:
模型大幅压缩:标准 Kaldi 模型通常数百 MB 到数 GB,Vosk 将识别模型压缩到约 50MB,同时保持了较高的准确率。这意味着它可以真正跑在边缘设备上。
多语言统一 API:Kaldi 原生面向研究者,接口复杂。Vosk 提供了统一的编程接口,支持 Python、Java、C#、Node.js、Go、Rust、C++ 等几乎所有主流语言屏蔽了底层差异,开发者无需懂语音处理也能快速上手。
截至目前,Vosk 支持超过 20 种语言和方言,包括英语(包括美式、英式、印度口音)、德语、法语、西班牙语、中文(普通话)、俄语、日语、阿拉伯语等,几乎覆盖了主流应用场景。
如果把语音识别比作厨房料理:
Google Speech-to-Text / Whisper API 是外卖:你把食材(音频)送过去,厨师在远方做好送回,品质不错,但你不知道里面加了什么(隐私风险),而且需要持续付费。
Whisper 本地部署 像是请了一个专业厨师在家,水平很高,但需要高性能设备(GPU),安装复杂,普通人难以驾驭。
Vosk 则是一把瑞士军刀:体积小、功能够用、随时可用,不需要网络,不需要昂贵硬件,普通程序员花 15 分钟就能装好开始用。它不是最强的,但它是最实用的「本地第一选择」。
Vosk 提供了三层能力,覆盖了绝大多数使用场景:
支持直接对音频文件( WAV、MP3、FLAC 等)进行批量转录,适用于录音整理、字幕生成、视频后期等场景。Python 调用只需几行代码:
from vosk import Model, KaldiRecognizer
import json, pyaudio
model = Model("model_path") # 下载约 50MB 的模型
rec = KaldiRecognizer(model, 16000)
# 读取音频帧并识别...
print(json.loads(rec.FinalResult())["text"])
这是 Vosk 最具特色的能力:支持流式 API,可以一边说一边出文字结果,延迟极低。官方案例展示了通过麦克风实时转写、Gradio 网页界面实时演示等场景,延迟通常在几百毫秒以内。
通过 spk_model(说话人模型),可以识别音频中有几个不同的说话人,以及每句话属于谁。这在会议记录、多人对谈分析等场景下非常有价值。
可以输出每个单词的起止时间戳,用于字幕对齐、视频索引等精确时序应用。
从源码层面看,Vosk 的架构分为两层:
底层(C++ / Kaldi):
核心代码位于 src/ 目录,编译为动态链接库。依赖 Kaldi 官方组件:
nnet3:深度神经网络(nnet3,即 DNN,用于声学建模)rnnlm:循环神经网络语言模型(RNNLM),用于提升识别准确率fst(OpenFst):有限状态转换器,用于解码图(Decode Graph,HCLG)的构建和操作online2:在线解码器,实现流式识别CMakeLists.txt 清晰展示了依赖关系:链接了 kaldi-base、kaldi-online2、kaldi-rnnlm 和 fstngram。
上层(多语言绑定):
| 平台 | 目录 | 说明 |
|---|---|---|
| Python | python/ | setuptools 打包,pip 可直接安装 |
| Android | android/ | Android Library (AAR),Gradle 集成 |
| iOS | ios/ | Xcode 项目 |
| Node.js | nodejs/ | npm 包 vosk-js |
| Web | webjs/ | 浏览器端 WebAssembly 版本 |
| Java | java/ | JAR 包,Maven 集成 |
| C#/.NET | csharp/ | .NET 绑定 |
| Go | go/ | Go 模块 |
| Rust | rust/ | Rust crate |
| C++ | 直接用 src/ | 原生使用 |
值得注意的是 webjs/ 使用了 WebAssembly 技术,这意味着它可以在浏览器中直接运行,无需服务器。配合 Gradio 演示脚本(test_gradio.py),用户可以用几行 Python 代码快速搭建一个带网页界面的实时语音识别应用。
项目使用 Travis CI 做持续集成(.travis.yml),但未使用 GitHub Actions。发布版本采用 Gradle Maven Publish 插件向 Maven Central 发布(Android),pip 包通过 standard setuptools 分发。
Python 开发者(最友好):
pip install vosk
# 然后下载一个语言模型(约50MB),放到本地
python -m vosk_model途径下载
python test_simple.py # 官方示例
如果想要网页界面体验:
pip install vosk gradio
python test_gradio.py # 自动启动本地 Web 服务
移动端(Android / iOS):
Android 项目 (android/) 提供了完整的 Gradle 集成方案,通过 mavenCentral() 或 JitPack 引入依赖,需要在应用中bundled语音模型文件。
iOS 项目提供了 Xcode 项目模板,集成方式相对直接。
C++ / 底层开发者:
需要从源码编译,依赖 Kaldi 工具链,这在 Linux/macOS 上较为友好,Windows 上需要 WSL 或 MSYS2 环境。CMakeLists.txt 要求 C++17 标准。
Vosk 并非银弹,以下几点需要客观认知:
随着 OpenAI Whisper 的开源,本地部署 Whisper 在许多场景下的准确率已经优于 Vosk,尤其是长音频和复杂音频质量场景。如果你的设备有足够的算力(推荐 8GB+ 显存),Whisper 是更强的选择。Vosk 的优势在于极低资源占用和实时流式识别,而非极致准确率。
项目没有提供 Dockerfile 或 docker-compose.yml,无法通过容器快速部署。这意味着在不同 Linux 发行版之间移植时可能遇到编译依赖问题。对于习惯容器化部署的团队,这是一大遗憾。
项目当前有 594 个 open issues,其中不乏长期未解决的功能请求和 bug,反映出维护资源相对有限的现实。社区贡献主要依赖志愿者,响应速度不稳定。
模型本身(vosk-model-*)与代码库分开维护,需要单独下载。如果语音识别需求场景特殊(如医疗、法律领域),通用预训练模型的效果可能不够理想。
Vosk 的核心价值在于它填补了一个真实的市场空白:无需网络、可以在任意设备上运行的语音识别。
这一价值在以下场景持续增长:
从开源生态看,Vosk 与 Whisper 形成互补:Whisper 追求极致准确率(需要 GPU),Vosk 追求轻量实时(无需 GPU)。两者共同构成了开源语音识别「从最强到最便携」的完整光谱。
技术趋势上,随着 Whisper 的崛起和 Whisper.cpp 的轻量化移植,语音识别的「本地化」门槛正在快速降低。Vosk 需要在模型准确率和优化上持续投入,才能在这场竞争中保持位置。