ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

3行代码跑通Vosk离线语音识别:零基础从安装到出字幕完整攻略

3行代码跑通Vosk离线语音识别:零基础从安装到出字幕完整攻略 3行代码跑通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-apiVosk 是一个完全离线的开源语音识别工具包音频在本地转文字不上传任何数据支持 20 多种语言模型只有约 50MB。它适合想在自己设备、树莓派或服务器上嵌入语音转文字的开发者以及不想把会议录音、采访音频交给云端处理的你。它到底解决什么问题一句话把音频→文字做成一个可以在树莓派上跑的本地库。和云端识别 API 相比区别在于三点断网可用音频不出内网隐私可控流式接口边说边出结果延迟接近零模型约 50MB小模型加载快、部署轻代价是识别精度略低于大型云端服务专有名词、强口音场景要多做调优。五分钟装好三步装包、下模型、跑示例。第 1 步装 Python 包pip install vosk第 2 步准备模型。你不用手动下载Model(langen-us)会按语言名自动查找本地缓存~/.cache/vosk找不到就自动下载解压。中文对应langzh-cn全部可选模型名可以查仓库里 python/vosk/init.py 中的模型列表逻辑。第 3 步跑最小示例。准备一个 16kHz、单声道、16bit 的 WAV 文件然后import wave from vosk import Model, KaldiRecognizer model Model(langen-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())运行后每识别完一句就打印一段 JSONrec.Result()返回{result: [word, word]}最后一句在循环外由FinalResult()兜底——这个细节很多人漏掉导致结尾丢字。最常用功能逐个过流式识别与实时中间结果AcceptWaveform返回 0 时用rec.PartialResult()拿当前半句话就能做边说边显示的交互界面返回 1 表示一句话结束取Result()。麦克风实时转写的完整写法在 python/example/test_microphone.py依赖pip install sounddevice音频块通过队列喂给识别器结构可以直接抄。顺手生成 SRT 字幕SrtResult内置了按词时间戳切字幕的逻辑配合 ffmpeg 把任意视频音频流成 16kHz 单声道十几行就能出 .srt 文件import subprocess from vosk import Model, KaldiRecognizer model Model(langen-us) rec KaldiRecognizer(model, 16000) rec.SetWords(True) # 字幕依赖逐词时间戳必须开启 cmd [ffmpeg, -loglevel, quiet, -i, video.mp4, -ar, 16000, -ac, 1, -f, s16le, -] with subprocess.Popen(cmd, stdoutsubprocess.PIPE).stdout as stream: print(rec.SrtResult(stream))仓库里的 python/example/test_srt.py 就是这段的完整版。想批量处理整个目录、输出 txt/srt/json可以看 python/vosk/transcriber/ 里的 Transcriber 实现它已经写好了 ffmpeg 重采样和多任务并行。用语法锁住识别范围自由识别之外KaldiRecognizer支持传入 JSON 词表做受限识别适合命令词场景如上/下/暂停rec KaldiRecognizer(model, rate, [one two three, [unk]])只接受词表里的短语加[unk]兜底识别表外内容运行时还能用rec.SetGrammar()换词表做动态菜单。说话人识别加载一个说话人模型SpkModel(path)后识别结果里会多出一个spk向量用余弦距离判断是不是同一个人可做免唤醒的身份确认。参考 python/example/test_speaker.py。注意短于 4 秒的语句 x-vector 不可靠。多语言与多平台20 多种语言模型按需加载切语言就是Model(langxx)换个参数。除 Python 外仓库自带 Java/Kotlin含 Android 语音服务、Node.js、C#、Go、C 的绑定和示例手机侧入口在 android/lib/src/main/java/org/vosk/。GPU 批量推理有GpuInit()BatchModel接口适合服务器场景。踩过坑才知道的实用技巧采样率必须和识别器声明的一致。KaldiRecognizer(model, 16000)就喂 16kHz 音频不一致时识别全乱且无报错先查wf.getframerate()。非标准格式先转码。Vosk 只吃 WAV 单声道 16bit PCMMP3/48kHz 立体声先用 ffmpeg 转别指望它自动兼容。静音太长会误判句尾。长停顿被当成句子结束可用rec.SetEndpointerMode()调成LONG模式放宽判定。小模型优先。50MB 的 small 模型覆盖大多数场景别一上来就选大模型拖慢加载。高频问题一句话答现象Failed to create a model→ 原因模型路径不存在或没下载完 → 解法改用Model(langxx)让它自动下载或检查网络后重试。现象识别结果全空或乱码→ 原因音频不是 16kHz 单声道 16bit → 解法ffmpeg -i in.mp3 -ar 16000 -ac 1 -f s16le out.wav转码后再喂。现象句子末尾丢字→ 原因没取最终结果 → 解法音频读完后再调一次rec.FinalResult()。总结Vosk 用约 50MB 模型 流式 API 多语言绑定换来了断网环境里可用的完整离线语音识别链路。下一步pip install voskclone 仓库git clone https://gitcode.com/GitHub_Trending/vo/vosk-api后打开 python/example/先跑通 test_simple.py再换你的音频。【免费下载链接】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),仅供参考
返回列表