Vosk 离线语音识别指南:三步装好,把任意音频转成文字
【免费下载链接】vosk-apiOffline speech recognition API for Android, iOS, Raspberry Pi and servers with Python, Java, C# and Node项目地址: https://gitcode.com/GitHub_Trending/vo/vosk-api
会议室没信号、音频里有敏感数据不能上传云端,语音转文字怎么办?Vosk 就是为这类场景准备的离线语音识别 API:识别在本地完成,音频不经过任何服务器。它支持 20 多种语言,语言模型只有 50MB 左右,从树莓派、手机到服务器集群都能跑。如果你要做实时字幕、离线语音助手,或者想给 App 加上语音输入,这个项目值得放进你的工具箱。
特性速览:模型小,能力却不小
- 完全离线,隐私可控:识别全程在本地设备执行,医疗记录、内部会议这类敏感音频可以安心处理。
- 流式识别,零延迟响应:把音频按块喂给识别器就能边说边出结果,适合实时字幕和语音助手这类需要即时反馈的场景。
- 多语言覆盖:英、中、日、法、德、西、俄、土耳其、越南、阿拉伯等 20+ 语言,每种语言都能独立下载对应模型。
- 跨语言绑定齐全:核心是 C++ 实现(见 src/),官方提供 Python、Java、Node.js、C#、Go、Ruby 等绑定,android/ 和 ios/ 目录下有现成的移动端工程。
三步跑起来:装依赖、下模型、转第一条音频
第一步,安装 Python 模块(其他语言绑定可跳过这步,直接看对应目录的 README):
pip install vosk第二步,从官方网站的模型库下载对应语言模型(如 en-us),解压到本地目录备用。
第三步,把仓库里的示例拉下来对照着改,克隆命令:
git clone https://gitcode.com/GitHub_Trending/vo/vosk-api然后写一个最小脚本,一条 WAV 就能转出来:
import wave from vosk import Model, KaldiRecognizer model = Model(lang="en-us") wf = wave.open("test.wav", "rb") rec = KaldiRecognizer(model, wf.getframerate()) while True: data = wf.readframes(4000) if len(data) == 0: break if rec.AcceptWaveform(data): print(rec.Result()) print(rec.FinalResult())注意 Vosk 要求音频是 16bit 单声道 PCM 的 WAV 格式,格式不对时建议先用 ffmpeg 转一下。
实战场景:字幕、批量转写、说话人分离
视频自动配字幕。python/example/test_srt.py 演示了完整链路:用 ffmpeg 把任意视频抽成 16kHz 单声道音频流,再交给识别器的SrtResult方法,直接得到带时间轴的 SRT 字幕。想接麦克风做实时转写,可以看同目录下的 test_microphone.py。
大批量音频文件处理。一段段跑KaldiRecognizer够用,但文件一多,批量识别接口效率更高。Go 侧的 go/batch_example/ 展示了BatchModel+BatchRecognizer的用法,还能用GPUInit()开启 GPU 加速;C++ 核心实现见 src/batch_model.cc。
区分不同说话人。识别之外,Vosk 附带说话人识别能力。python/example/test_speaker.py 加载说话人模型,配合SpkModel输出"这句话是谁说的",底层实现在 src/spk_model.cc。做会议纪要、访谈整理时,这正好补上"谁在什么时候说了什么"里缺的一半。
进阶技巧:让识别更快、更准
按场景选模型。资源受限的设备(树莓派、手机)用小型模型,内存占用低、加载快;追求准确率再上大模型。同一语言往往有多档可选,先小后大是最稳的路线。
用词表约束降噪。如果你的识别范围很确定——比如只识别数字指令——可以在创建识别器时传入词表 JSON,并用SetGrammar动态更新。参考 python/example/test_words.py,词表收敛后误识别会明显减少。
打开词级结果,方便做高亮和纠错。rec.SetWords(True)之后结果里会带上每个词的时间戳,做字幕对齐、关键词高亮都靠它,见 test_simple.py。调试期建议SetLogLevel(-1)关掉日志噪音,定位问题再调回 0 看细节。
下一步:从示例目录开始
最直接的入口是 python/example/,里面每个脚本都是独立可跑的完整案例,改个参数就能实验;Node.js 用户从 nodejs/demo/ 起步,Go 用户看 go/example/。模型下好、示例跑通,你就已经具备搭建离线语音应用的全部积木了 🚀
【免费下载链接】vosk-apiOffline speech recognition API for Android, iOS, Raspberry Pi and servers with Python, Java, C# and Node项目地址: https://gitcode.com/GitHub_Trending/vo/vosk-api
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考