ARTICLE DETAIL

资讯详情

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

Vosk 离线语音识别:断网时如何完成实时转写

Vosk 离线语音识别:断网时如何完成实时转写 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-apiVoskVosk Speech Recognition Toolkit是一个离线语音识别工具包音频在本地完成实时转写不经过网络不依赖云服务支持 20 多种语言。如果你需要在没有网络、或者不能把音频传上云的场景里把语音变成文字它就是直接能跑的那类工具。从没网的时候怎么办说起先说一个具体的场景你在会议室里做实时字幕或者在做一场访谈但现场只有内网外部 API 全部不可用又或者你的应用要处理的是用户隐私数据把音频发到云端本身就是合规风险。这两个场景的共同点是——音频必须留在本地而且识别要边说边出结果不能等整段录完再处理。Vosk 的设计就是针对这两点的。它把整个声学模型和语言模型装进本地进程音频流进来、文字流出去不产生任何出网请求。仓库根目录的 README.md 给出的定位很明确从树莓派、Android 手机到大服务器集群都能跑模型文件大约 50 MB 量级支持流式 API、可重配置词表、说话人识别。换句话说它不是那种需要 GPU 和几十 GB 显存的方案而是一个能在单核 CPU 上持续输出文字的轻量识别器。装好、跑起来用 Python 转写一段音频先给结论最小上手路径是 Python。一条 pip 命令装完再写十几行代码就能把 WAV 文件转成文字这是仓库里示例最齐、文档最完整的语言绑定目录在 python/。安装pip install vosk识别流程的核心是三个对象Model加载语言模型、KaldiRecognizer按采样率创建识别器、AcceptWaveform喂入一段音频块。下面是把一段 16 kHz 单声道 WAV 转成文字的最小代码和仓库里的 python/example/test_simple.py 逻辑一致from vosk import Model, KaldiRecognizer import wave model Model(langen-us) # 语言包可换成 zh、de、ja 等 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()) # 一段说完出完整结果 else: print(rec.PartialResult()) # 还没说完出中间结果 print(rec.FinalResult())这里的门道有两点新手最容易踩坑。一是AcceptWaveform返回布尔值返回True表示这段语音结束了该打印Result()拿整句返回False表示还在说打印PartialResult()拿实时中间文本。二是输入格式文件必须是单声道、16 bit PCM 的 WAVtest_simple.py开头就是在检查getnchannels() ! 1 or getsampwidth() ! 2不符合就直接退出。麦克风实时输入、ffmpeg 转码、字幕生成SRT、说话人分离、批处理这些场景仓库里都有现成脚本不需要自己造轮子麦克风实时识别test_microphone.py生成字幕文件test_srt.py、test_webvtt.py说话人识别test_speaker.pyGPU 批量处理test_gpu_batch.py其他语言绑定同一套 C 核心不同包装Vosk 的所有语言绑定都编译到同一套 C 接口上源头是 src/vosk_api.h里面定义了VoskModel、VoskRecognizer、VoskSpkModel这几个核心类型。所以各语言的 API 长得很像建模型、建识别器、喂音频、取 JSON 结果。仓库里已经封装好的绑定和示例Java库在 java/lib/演示程序在 java/demo/适合 Android 以外的 JVM 场景Android独立模块在 android/lib/带 Service 封装SpeechService.java 等处理后台录音Node.js入口在 nodejs/index.js示例在 nodejs/demo/含 ffmpeg 转码和麦克风Go绑定在 go/vosk.go最小示例在 go/example/test_simple.goC#NuGet 包源码在 csharp/nuget/src/演示在 csharp/demo/Kotlin多平台面向 Android 和 JVM 的 Kotlin 绑定在 kotlin/C 语言直接链接 C API 的测试程序 c/test_vosk.c选哪个绑定取决于你的宿主环境移动端优先看 Android/Kotlin 封装Web 端选 Node.js服务端脚本选 Python 或 Go。进阶换语言、调词表、训自己的模型前 20 多种语言开箱即用但真正决定识别质量的是用对模型和喂对词。换语言。Model的参数直接指定语言包en-us、zh-cn、de、ja等模型文件是独立下载的小压缩包。仓库test_simple.py里注释也列出了三种加载方式按lang名、按model_name、按本地文件夹路径。调词表。Vosk 支持在运行时重新限定识别词集graffile 机制适合只识别固定几条命令的场景比如智能音箱的唤醒词。这个能力是它相对纯云端 API 的一个实际优势——词表可以针对你的场景收窄。训模型。如果现成模型在你的领域词汇上识别不准仓库 training/ 目录提供了基于 Kaldi 的完整训练流水线数据准备local/data_prep.sh、发音词典local/prepare_dict.sh、MFCC 特征提取、TDNN 链式模型训练local/chain/run_tdnn.sh和解码run.sh。这是一套偏专业的工程脚本适合需要针对行业术语定制模型的团队普通用户用现成模型即可不必碰。该用它还是别用它说清楚边界比说它多好用更有价值。适合选 Vosk 的场景完全离线无网络、内网、合规要求音频不出本地资源受限设备树莓派、单片机、嵌入式 Linux单核 CPU 能跑需要流式低延迟边说边出字做实时字幕、语音助手、聊天机器人需要本地说话人识别或固定词表收窄不适合、或有更好替代的场景追求极致准确率且能上云云端大模型的识别精度通常更高Vosk 的轻量模型在嘈杂环境、口音重的语音上会明显掉点。如果你能接受联网专业级 ASR 云端服务是更省事的选择需要长音频高精度、带标点断句、多轮上下文Vosk 面向流式短句设计超长讲座的整理建议配合它的字幕脚本SRT/字幕生成做后处理需要 GPU 加速且数据量大可以看它的批处理接口python/example/test_gpu_batch.py、go/batch_example/但整体定位仍是轻量本地方案一句话Vosk 解决的是离线 流式 轻量这个组合不是最准的那个。如果你的核心诉求是准确率且能联网别在它身上花时间如果核心诉求是数据不出本地、设备资源有限它目前是最省心的开源选择之一。下一步如果你刚接触最短路径是装好 Python 绑定拿 python/example/test_simple.py 对着一段本地 WAV 跑通再根据你的语言换Model(lang...)参数。跑通之后按需去对应语言目录java/、android/、nodejs/找封装。需要更细的接口文档和模型下载仓库 README 指向的官方站点alphacephei.com/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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表