Vosk 离线语音识别:50MB 模型实时转写 20+ 语言,断网也能跑
Vosk 离线语音识别50MB 模型实时转写 20 语言断网也能跑【免费下载链接】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-apiVosk 是一个开源的离线语音识别工具包一次本地部署就能完成语音转文字全程不连网、音频不出机器。适合不想把语音数据交给云端 API 的个人开发者和嵌入式项目。当你的音频数据不能出内网先说一个很多团队都卡住过的问题云端语音识别 API 好用但会议录音、病历口述这类内容一旦上传隐私风险就要自己兜底反过来树莓派、车载设备、展会现场这些环境网络要么不稳定要么根本不存在。Vosk 给出的答案是把识别引擎整个搬进进程里。C 核心加各语言绑定全部跑在本地核心实现见 src/识别模型体积只有 50MB 左右Raspberry Pi 到服务器集群都能加载。数据从头到尾留在你的机器上断网状态下功能不变。一条命令装好五分钟拿到第一句结果这一节的目标从零到打印出第一段识别文本路径最短。以 Python 为例终端里执行pip install vosk就完成安装模型下载、解压都由库在初始化时自动处理。装好后不用自己写代码直接打开 python/example/test_simple.py它做的事情很直白——加载英文模型、创建识别器、按 4000 字节一块读 WAV 音频喂进去AcceptWaveform返回结束标记时打印整句Result()否则打印中间态PartialResult()结尾补一句FinalResult()。拿一段 16kHz、单声道、16 位 PCM 的 WAV 文件比如仓库里就带着的 python/example/test.wav跑一遍屏幕上会滚出逐句结果中间态和整句交替出现——这就是流式识别最直观的样子。想看到每个词的起止时间把rec.SetWords(True)打开即可示例里已经帮你开了。按场景挑语言和绑定而不是看全家福这一节帮你做两个决定选哪个语言的模型、用哪个语言的绑定。模型方面Vosk 覆盖 20 多种语言英语、英式/印度英语、中文、日语、法语、德语、西班牙语、葡萄牙语、俄语、土耳其语、越南语、意大利语、荷兰语、阿拉伯语、希腊语、乌克兰语、捷克语、波兰语、印地语等。挑选原则很简单——先在官方模型列表里按语言码挑一个 small 档的模型50MB 上下跑通流程识别率不满意再换同语言的大模型两者代码完全兼容只是加载时传的路径不同。绑定方面按目标平台在哪来选而不是按你喜欢的语言做原型、脚本、服务器侧批处理用 python/ 绑定示例最多python/example/ 里十几个脚本几乎覆盖所有用法做 Android 应用用 android/ 或更现代的 Kotlin Multiplatform 版本 kotlin/后者一套代码同时覆盖 Android 和桌面 JVM做 iOS参考 ios/VoskApiTest/ 里的 Swift 封装写 Node 服务或桌面应用nodejs/ 的示例从 nodejs/demo/test_simple.js 到麦克风、SRT 都有需要 C# 或 Go分别在 csharp/demo/VoskDemo.cs 和 go/example/test_simple.go 看最小完整程序Go 侧的 go/batch_example/ 还有批量用法直接调 C API看 c/test_vosk.cc/Makefile 现成可编译。三个高频场景照着示例改就行这一节挑三个真实会遇到的需求每个都告诉你怎么做 去哪看代码顺序按落地难度从低到高。区分谁在说话。会议转写时只出文字不够还得标出说话人。做法是额外加载一个说话人模型识别结果里会多出一个spk向量用余弦距离和你的声纹库对比就知道是第几个人。完整可跑的版本在 python/example/test_speaker.py它打印每句的 x-vector 和与参考声纹的距离文件末尾还提醒一句——4 秒以上的音频算出的声纹才靠谱。批量转写一堆文件。逐文件串行处理慢Vosk 提供BatchModel/BatchRecognizer让多个音频流共享一个模型实例GPU 下还能并行跑。python/example/test_gpu_batch.py 演示了同时喂多路音频、轮询取结果的写法Go 版本在 go/batch_example/test_batch.go。给视频生成字幕。手里是 mp4 而不是 WAV也不用手动转码两步走python/example/test_srt.py 里ffmpeg负责把任意格式实时解码成 16kHz 单声道流识别器的SrtResult()方法直接产出带时间轴的 SRT 文本识别词的时间戳就是字幕轴的来源。想改成 WebVTT 输出看 python/example/test_webvtt.py。动手前先看完这 4 条避坑建议这几条是踩过坑的人总结的执行清单照做能省掉大部分调试时间模型先选 small 档。50MB 左右的 small 模型足够验证流程和大部分场景别一上来拉大模型浪费下载时间和内存确认准确率不够再升档。音频格式卡死在 16kHz 单声道 16 位 PCM。示例脚本开头都会校验这一点不符合直接报错退出。非 WAV 素材统一走 ffmpeg 转流别在 Python 里做有损重采样。错误处理别只靠 try/except。AcceptWaveform返回负值表示处理失败模型加载失败会直接抛异常——这两个点在 python/vosk/init.py 里有明确定义调试期可以用SetLogLevel控制日志噪音正式环境设为 -1。验证顺序先 test_simple再按需加料。单文件跑通 python/example/test_simple.py 之后再按需求挑 test_words.py限定词表、test_ep.py断句等脚本微调别一开始就写复杂管线。跑通 test_simple 之后下一步就从 python/example/ 里挑一个最接近你业务的脚本开始改模型没下载过的话按官方模型列表挑一个对应语言的 small 包即可50MB 几分钟就到位。【免费下载链接】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),仅供参考