
Vosk 离线语音识别完整指南从安装到逐字时间戳只需 3 步【免费下载链接】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 是一个免费的离线语音识别工具包能把音频转成文字全程不需要联网。它内置 20 多种语言的识别模型模型只有 50MB 左右装进树莓派或安卓手机也能跑。如果你想在本地做语音转文字、不想把音频交给云端 API从本文开始照着做就行。这些场景Vosk 都接得住如果你有一堆会议录音想转成文字存档它就能离线批量处理音频不出你的机器隐私不用操心。如果你想在树莓派或手机上做一个断网也能用的语音助手它就能提供零延迟的流式识别——声音说到哪、文字出到哪不用等整段录完。如果你要给视频批量出字幕它就能直接按词输出时间戳拼成 SRT 字幕文件。官方模型包只有 50MB下载快、占用小选型时不用在准不准和跑不跑得动之间纠结。Vosk 安装一条 pip 命令跑起来第 1 步安装 Python 包pip install vosk这一条命令装好识别库和依赖。确认方式运行python -c import vosk; print(vosk.__name__)能打印出vosk就没问题。第 2 步准备语言模型不用手动下载。Model(langen-us)这种写法会自动去官方模型库alphacephei.com/vosk/models下载对应语言的模型并解压。第一次运行时能看到下载进度条。确认方式下载完成后~/.cache/vosk目录下多出一个vosk-model-small-en-us-0.15之类的文件夹。第 3 步跑通官方验证示例仓库自带一个现成示例见 python/example/test_simple.py配合同目录下的 test.wav 测试音频python python/example/test_simple.py python/example/test.wav跑完终端会打印出 JSON 格式的识别结果里面的text字段就是音频里说的英文句子。能对上内容说明环境全部就绪。最小示例20 行以内识别一个 WAV 文件最常用的用法只有三步建模型、建识别器、循环喂音频。import wave from vosk import Model, KaldiRecognizer, SetLogLevel SetLogLevel(-1) # -1 关闭调试日志 wf wave.open(test.wav, rb) # 必须是 16kHz 单声道 WAV model Model(langen-us) # 模型没有就自动下载 rec KaldiRecognizer(model, wf.getframerate()) rec.SetWords(True) # 开启逐词时间戳 while True: data wf.readframes(4000) # 每次读 4000 帧音频 if len(data) 0: break if rec.AcceptWaveform(data): print(rec.Result()) # 一句说完后输出 else: print(rec.PartialResult()) # 边说边出的中间结果 print(rec.FinalResult()) # 处理音频末尾的尾巴想自己看更多变体麦克风、替代结果、NLSML 输出示例都放在 python/example/ 下照着改参数就行。进阶玩法省掉字幕和指令词两件事逐词时间戳字幕直接到手。调用rec.SetWords(True)后Result()返回的 JSON 里每个词都带start、end秒数。想直接生成 SRT 文件可以调用识别器的SrtResult(stream)方法它内部已经处理了按 7 个词一行切分、时间格式转换这些脏活。完整用法参考 python/example/test_srt.py——它用 ffmpeg 把任意视频转成 16kHz 单声道流再送进识别器也就是说 mp4、m4a 这些格式也不用先手动转 WAV。限定词表指令识别又快又准。你的语音助手如果只响应固定几句指令把候选词以 JSON 列表传给识别器即可rec KaldiRecognizer(model, 16000, [打开灯, 关闭灯, 播放音乐, [unk]])识别范围被收窄到这几个短语之后误识别明显减少速度也更快。需要中途换词表时用rec.SetGrammar(...)就能热更新参考 python/example/test_words.py。不想写代码装完 Python 包后自带vosk-transcriber命令行工具一条命令批量转目录里的所有音频vosk-transcriber -l en-us -i audio/ -o out/ -t txt排错清单现象报错Audio file must be WAV format mono PCM。原因音频不是 16kHz、16 位、单声道、无压缩的 WAV。解法先用 ffmpeg 转换如ffmpeg -i input.mp3 -ar 16000 -ac 1 test.wav。现象Model(...)创建时报Failed to create a model。原因模型路径写错或者自动下载被网络中断、解压不完整。解法删掉不完整的模型文件夹后重建模型对象触发重新下载或把官方模型包手动解压后改用Model(本地路径)加载。现象第一句识别结果为空或只剩半句。原因结尾忘了取最终结果。解法音频读完之后必须再调用一次rec.FinalResult()。现象运行很慢、内存飙高。原因加载了大模型或一次开了太多并行任务。解法先换 small 后缀的轻量模型确认功能后再升级。资源与下一步Python 模块说明python/README.md可运行的示例合集python/example/里面有麦克风、GPU 批量、说话人分离等场景C 语言核心 API想自己封装其他语言绑定就看这里src/vosk_api.h更多语言绑定Java 在 java/lib/Go 在 go/vosk.goNode.js 在 nodejs/index.jsiOS 在 ios/完整文档与全部语言模型包alphacephei.com/vosk先把最小示例跑通再按需打开进阶玩法里的时间戳和词表功能。下一步建议拿一段自己的真实录音会议、播客都行替换 test.wav 再跑一遍看实际识别效果决定要不要换更大模型。【免费下载链接】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),仅供参考