断网也能实时转写?Vosk 离线语音识别的 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-api
高铁上开完的会、医院里录下的问诊、展会现场的演讲……这些录音一旦离开现场就常常卡住:要么手机没信号发不上去,要么公司合规规定音频绝不能出内网,要么云端转写的排队和按量计费让人肉疼。云端语音识别在这几件事上帮不上忙——它依赖网络、依赖上传、依赖等待。Vosk 做的离线语音识别就是为这种处境准备的:语音转写全程在本机完成,一个约 50MB 的模型覆盖 20 多种语言与方言,流式接口边说边出字。
先想清楚:你的语音该不该离开设备
选型时别急着装环境,先对着下面这张表过一遍,你的场景离云端还是离「Vosk 离线识别」更近,一过便知。
| 维度 | 云端语音识别 | Vosk 本地转写 |
|---|---|---|
| 网络依赖 | 必须有稳定网络 | 完全离线,无网可用 |
| 隐私 | 音频需上传第三方服务器 | 数据不出本机,天然合规 |
| 成本 | 按用量计费,长音频贵 | 模型一次下载,长期免费 |
| 延迟 | 受网络往返影响 | 流式零等待,边说边出 |
| 设备门槛 | 依赖云端算力 | 50MB 模型,树莓派到服务器都能跑 |
如果你的场景同时命中「无网」和「隐私」两条,本地方案几乎没有替代品;只是偶尔离线的话,云端仍然够用。把边界划清楚,再谈选型。
三步完成第一次离线转写
主轴用 Python,其他语言随后带过。
第一步,装库:
pip install vosk第二步,跑最小示例,它会自动下载对应语言的模型:
from vosk import Model, KaldiRecognizer model = Model(lang="en-us") # 首次运行自动下载模型 rec = KaldiRecognizer(model, 16000) # 采样率 16k data = audio_bytes # 16-bit 单声道 PCM if rec.AcceptWaveform(data): print(rec.Result()) else: print(rec.PartialResult())第三步,把data换成真实来源:从 WAV 文件读,或从麦克风逐帧读。到这里,一条离线转写链路就通了。Java 走 java/,Node.js 走 nodejs/,C# 走 csharp/,Go 走 go/,思路一致,都是「建模型、建识别器、喂数据」。
流式识别是怎么跑起来的
Vosk 不是一口气吞下整个音频文件,而是一小段一小段地处理。先加载模型,拿到一个识别器对象;再把音频按固定采样率、16-bit 单声道切开,连续喂给AcceptWaveform()。这次调用会告诉你:这一段里有没有识别出完整结果。有,就用Result()取整句;没有,就用PartialResult()取「说到一半」的临时文本。等音频结束,再调一次FinalResult()收尾。全程不需要等整段音频读完,字幕随说随出——这正是流式的意义。
四个实时转写落地场景
同一套流式接口,能撑起下面四类多语言实时转写落地场景:
| 场景 | 对应能力 | 说明 |
|---|---|---|
| 实时字幕 | PartialResult()+ 逐帧喂流 | 无网环境下生成字幕,直播、会议都靠它边说边显示 |
| 本地语音助手 | 流式接口 + 限定词表(SetGrammar) | 唤醒后本地解析指令,不出网即可响应 |
| 会议/讲座转录 | SetWords(True)+ 转写器 | 拿到带时间戳的逐词结果,批量处理长音频 |
| 无障碍应用 | 实时部分结果 + 词级时间戳 | 为视障用户提供低延迟的环境语音转文字 |
长音频、批量任务可直接用仓库里的 python/vosk/transcriber/,它封装了 ffmpeg 转码、并发和 SRT 字幕导出,python/example/test_srt.py 就是现成样例。
识别效果不够好,从这三处下手
语言模型别选错。Vosk 为每种语言和方言单独提供模型,en-us、zh、de各不相同;用错语言模型,比参数没调对影响更大。先从 python/example/ 里对应样例确认采样率和音频格式。
设备决定你开几个实例。同一个模型能塞进树莓派、安卓/iOS 手机,也能在服务器上多进程并行——Vosk 的卖点就是从小型设备到大集群都能跑,但单核算力有限,长音频要横向扩并发,而不是硬扛。
想更准,就上自定义训练。仓库 training/ 里放了 Kaldi 风格的训练脚本、配置和词表准备流程,适合把领域热词(人名、产品名)训进模型,提升特定场景的准确率。
接下来读什么、看什么
想动手,直接翻 python/example/ 的麦克风、文件、说话人分离等样例;想接其他技术栈,进 java/、nodejs/、csharp/、go/ 各自目录;要自己训模型,看 training/。更多项目信息见仓库根目录的 README。
先把上面的最小示例跑通、对着你自己的音频文件验证一遍,比读十遍教程都管用。
【免费下载链接】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),仅供参考