【免费下载链接】voxtral.cPure C inference of Mistral Voxtral Realtime 4B speech to text model项目地址https://gitcode.com/gh_mirrors/vo/voxtral.c点击查看免费下载voxtral.c是一个用纯 C 实现的 Mistral Voxtral Realtime 4B 语音转文字speech to text推理引擎零外部依赖、Metal GPU 加速支持流式 API 逐词吐出转写结果。这篇文章带你剖析它流式解码调度的两个核心设计——ada_rms_norm 时间条件注入与480ms 延迟窗口理解为什么文字总是比声音慢半拍却刚刚好。1. 先用 30 秒认识 voxtral.c模型推理管线非常直观WAV → 16kHz → Mel 频谱 → Conv Stem → 音频编码器 → 4x 降采样 → Adapter → LLM 解码器 → Token音频编码器32 层因果 Transformer滑动窗口 750~0.6B 参数LLM 解码器26 层 Ministral-3 风格 Transformer~3.4B 参数音频帧率12.5 Hz即1 个 token 对应 80ms 音频——这个数字后文会反复出现完整架构参考 MODEL.md可运行的 Python 参考实现见 python_simple_implementation.py。2. 流式解码调度39 个 Token 的提示词与先等后解流式转写的核心矛盾是解码器必须等音频足够多才能开始对齐生成文字。voxtral.c 的调度规则藏在 voxtral.c 的这一行里int prompt_len 1 32 s-ctx-delay_tokens;也就是提示词 [BOS] [STREAMING_PAD] × (32 6)39 个位置。解码器的调度策略是阶段行为monitor 符号等待期适配器 token 不足 39 个解码器干脆不动⌛Prefill攒够 39 个音频嵌入 提示词嵌入一次性灌入 KV cache·逐 token 解码每一步输入 音频嵌入 上一 token 嵌入逐位相加▪重启EOS / KV 溢出 / 非文本卡死时自动复位保证长音频不失控↺ ⟳ ♻每个位置的嵌入都是音频 文本的双模态叠加voxtral.c这正是 Voxtral 能边听边写的关键解码器不是听完再想而是每 80ms 音频到来就前进一步。3. ada_rms_norm把 480ms 延迟注入模型节奏普通 LLM 不知道自己该比音频晚多少。Voxtral 的答案是解码器每层 FFN 前的一步自适应归一化ada_rms_norm_t_condada_scale ada_up( GELU( ada_down( t_cond ) ) ) # 每层一个 3072 维向量 h_norm RMSNorm(h) * (1 ada_scale[layer]) # 在 SwiGLU 之前其中t_cond是对延迟 token 数做正弦位置编码得到的时间嵌入voxtral.c。voxtral.c 有两个聪明的工程决策加载时一次性预计算。vox_update_time_conditioning()在模型加载时就算好 26 层的ada_scale运行时 FFN 只做逐元素乘法零额外开销voxtral.c、voxtral_decoder.c权重极小每层只有32×30723072×32两个小矩阵MODEL.mdmmap 加载几乎免费。对应地模型结构定义在 voxtral_decoder.c公共上下文里预留给它的字段见 voxtral.h。4. 480ms 延迟窗口为什么是 6 个 TokenVoxtral 的流式配置tekken.json中的transcription_delay_ms规定解码器输出的文字要比最新音频滞后 480ms即 6 个 token480 ÷ 80 6。这个延迟窗口的作用给解码器回头看的余地文字永远落后音频 6 帧模型有时间修正发音边界决定提示词长度delay_tokens直接加进 prompt_len上文公式中的6控制 flush 的右填充量vox_stream_flush()会喂(61) 10个 token 的零音频把滞留在延迟窗口后面的文字推出来——说话人暂停时不结束流就能拿到 pending 文本voxtral.c。窗口可调吗可以。vox_set_delay()允许 80–2400msvoxtral.c但注意它同时会重算时间条件——延迟与 ada_rms_norm 是绑定的改窗口等于改变模型的节奏假设精度会受影响。还有一个独立的延迟旋钮是 CLI 的-I 秒处理间隔值越小文字出现越快但编码器每次调用有约 50ms 固定开销实时流式推荐 1.0–2.0 秒详见 README.md 的基准测试。5. 用 --monitor 一眼看懂调度状态想亲眼验证上面的调度加上--monitor参数stderr 会实时打印状态符号./voxtral -d voxtral-model --stdin -I 1.0 --monitor健康状态长这样▶·▪▪▶▪▪▶▪▪▶编码器处理块·prefill▪正常解码批次若频繁出现▸ ⚠ ☠说明解码压力过大。完整符号表见 README.md。6. 小结480ms 6 token × 80msVoxtral 的流式对齐契约决定提示词长度与 flush 填充量ada_rms_norm_t_cond用一次性的时间嵌入预计算 26 层缩放因子把延迟窗口教给解码器先等后解 双模态嵌入叠加解码器攒够 39 个适配器 token 才开始 prefill之后每 80ms 音频同步前进一步想调延迟vox_set_delay()API或-I编码节奏二者分别作用于模型侧与调度侧延迟想动手试先make mpsApple Silicon或make blasLinux/Intel再./download_model.sh下载模型~8.9GB然后用 samples/ 里的test_speech.wav跑起来配合--monitor观察解码调度——调度细节尽在眼前。赞分享【免费下载链接】voxtral.cPure C inference of Mistral Voxtral Realtime 4B speech to text model项目地址https://gitcode.com/gh_mirrors/vo/voxtral.c点击查看免费下载相关推荐voxtral.c 实时调优指南用 -I 处理间隔平衡转写延迟与 GPU 效率voxtral.c 实时调优指南用 I 处理间隔平衡转写延迟与 GPU 效率 voxtral.c 是 Mistral Voxtral Realtime 4B直播字幕零延迟OBS实时语音转文字终极方案直播字幕零延迟OBS实时语音转文字终极方案 OBS captions plugin是一款基于Google语音识别技术的OBS直播字幕插件能帮助主播实现实时语音视频语音低延迟直播字幕工具OBS实时语音转文字方案低延迟直播字幕工具OBS实时语音转文字方案 OBS字幕插件是一款基于OBS Studio的实时语音识别解决方案通过深度整合Google Cloud Spee音视频语音创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考