Moonshine 本地跑通语音转写:3 步从克隆到出字
【免费下载链接】moonshineVery low latency speech to text, intent recognition, and text to speech, for building voice agents and interfaces项目地址: https://gitcode.com/GitHub_Trending/moonshine3/moonshine
先把会议录音变成文字
开会录音想转成文字,丢给云端 API 要排队上传、按量计费,敏感内容还出不了内网。Moonshine 是一个跑在本地的语音识别工具,音频直接喂给它,文本边喂边出,全程不联网。接下来 15 分钟,用仓库里的 C++ 示例把一条 WAV 转成文字。
它到底能干啥
- 本地推理 —— 模型和音频都在你自己的机器上,不联网也能出字
- 流式转写 —— 边收音边出字,说话还没结束就有文本 🎙️
- 多平台一套库 —— 同一个 core,C++/Python/iOS/Android/Windows 都能调
- 多档模型 —— 从 tiny 到 medium-streaming,速度和精度自己选
三步跑通:克隆、备料、出字
1. 克隆仓库
git clone https://gitcode.com/GitHub_Trending/moonshine3/moonshine && cd moonshine仓库自带示例音频在 test-assets/ 下,后面排错用得上。
2. 拉库、模型和样本音频
cd examples/c++ && ./download-library.sh # 自动识别平台,下载预编译库+medium-streaming-en模型+two_cities.wav脚本按uname选对架构,三个文件都落到当前目录,不用你操心文件名。
3. 编译并运行转写器
g++ transcriber.cpp -Imoonshine-voice/include -Lmoonshine-voice/lib -lmoonshine -Wl,-rpath,'$ORIGIN/moonshine-voice/lib' -o transcriber ./transcriber # 默认读medium-streaming-en模型转写two_cities.wav,逐行打印转录事件看到 "Line started / Line text changed / Line completed" 滚动输出,说明跑通了。
参数与模式拆解
示例工具共 4 个参数,Windows 麦克风工具是它的前 3 个:
| 参数 | 作用 | 推荐值/默认值 |
|---|---|---|
-m, --model-path | 模型目录,内含 encoder/decoder 的 .ort 文件 | medium-streaming-en(脚本已下好) |
-a, --model-arch | 模型档:0=TINY,1=BASE,2=MEDIUM_STREAMING | 2,必须和目录里的模型匹配 |
-w, --wav-path | 待转写的 WAV 文件 | two_cities.wav |
-t, --transcription-interval | 流式更新间隔(秒) | 0.481(默认) |
文件转写模式
直接./transcriber就能跑,默认模型 + 默认音频开箱即用。想换音频:./transcriber -w test-assets/beckett.wav。会议录音这类长文件,-t调大一点更省 CPU。
Windows 麦克风实时模式
用 Visual Studio 打开 examples/windows/cli-transcriber/ 下的.vcxproj,编译后直接运行cli-transcriber.exe:它打开系统默认麦克风按 16kHz 单声道采样,边说边在同一行刷新文本,说完才落定成一行,Ctrl+C 停止。
卡住了怎么办
- 现象:模型加载失败或启动即报错。原因:
-a的档和目录里的模型对不上,或 .ort 文件没下全。解法:用ls检查模型目录文件是否齐全;-a和模型档位严格对应。 - 现象:喂音频报 "Not a RIFF file" 或直接失败。原因:工具只认 16 位 PCM 的 RIFF/WAVE,MP3、M4A、48kHz 立体声都不行。解法:
ffmpeg -i in.mp3 -ar 16000 -ac 1 -sample_fmt s16 out.wav转一道再喂。 - 现象:想从
core/源码构建,编译报'version' does not name a type。原因:部分内嵌二进制走 git-lfs,指针没拉下来。解法:git lfs install && git lfs pull;赶时间就直接走examples/c++/的预编译路线。
性能上两条:把-t从 0.48s 拉到 1s,CPU 占用明显下降;对速度敏感就换 tiny 档模型,代价是精度略降。
接下来
模型已经在你手里了,下一步把它接上麦克风:装 Python 包跑moonshine-voice mic --language en,边说边出字,直观感受流式延迟。想再压一压速度,换 tiny 档对比下精度损失。🚀
【免费下载链接】moonshineVery low latency speech to text, intent recognition, and text to speech, for building voice agents and interfaces项目地址: https://gitcode.com/GitHub_Trending/moonshine3/moonshine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考