文章摘要
这是一个用纯C语言实现的Mistral Voxtral实时4B语音转文本模型推理库,无需外部依赖。支持音频分块处理、麦克风实时输入和流式API,内存占用可控。虽然BLAS加速较慢且需要更多测试,但已实现核心推理流程。适合通过ffmpeg转码转录各种音频格式。
文章总结
Voxtral Realtime 4B纯C语言实现
该项目是Mistral AI的Voxtral Realtime 4B模型的C语言推理管道实现,仅依赖C标准库。MPS推理速度良好,BLAS加速可用但较慢(需持续将bf16权重转换为fp32)。
音频处理采用分块编码器与重叠窗口技术,无论输入长度如何都能限制内存使用。支持从stdin管道输入(--stdin)或麦克风实时采集(macOS的--from-mic),便于通过ffmpeg转码转录。流式C API(vox_stream_t)支持增量输入音频并实时获取文本标记。
测试需求:项目目前仅通过少量样本测试,需更多工作以达到生产级质量,但核心的模型推理与管道复现已完成。
核心功能
- 零依赖:纯C实现,MPS模式可独立运行
- Metal GPU加速:Apple Silicon自动启用
- 流式输出:文本标记实时逐词输出
- 内存映射权重:直接从safetensors加载BF16权重
- 实时麦克风输入:支持macOS自动静音检测
- 滚动KV缓存:解码器KV缓存自动压缩,支持无限长度音频
快速开始
```bash
构建(选择后端)
make mps # Apple Silicon(最快)
或:make blas # Intel Mac/Linux(需OpenBLAS)
下载模型(约8.9GB)
./download_model.sh
转录音频
./voxtral -d voxtral-model -i audio.wav
实时麦克风转录(macOS)
./voxtral -d voxtral-model --from-mic
通过ffmpeg管道输入
ffmpeg -i audio.mp3 -f s16le -ar 16000 -ac 1 - 2>/dev/null | ./voxtral -d voxtral-model --stdin ```
Python参考实现
提供自包含的Python实现便于理解模型:
bash
pip install torch safetensors soundfile soxr
python python_simple_implementation.py voxtral-model audio.wav
性能数据(Apple M3 Max)
| 后端 | 编码器(3.6秒音频) | 预填充 | 解码器 | |------|---------------------|--------|--------| | MPS | 284 ms | 252 ms | 23.5 ms/步 | | BLAS | ~8秒 | ~1.2秒 | 335 ms/步 |
模型架构
Voxtral Realtime 4B是约40亿参数的流式语音转文本模型: - 音频编码器:32层因果Transformer - 适配器:线性层+GELU激活 - LLM解码器:26层Transformer(基于Ministral-3)
许可协议
MIT
评论总结
以下是评论内容的总结:
- 关于安装与使用体验:
- 用户Curiositry表示在Linux上安装容易,但实时转录功能尚未实现,指出麦克风输入仅支持Mac系统 关键引用: "This was a breeze to install on Linux. However, I haven't managed to get realtime transcription working yet" "from-mic only supports Mac"
- 关于模型训练需求:
- 用户sgt表达对语音转文字技术的兴趣,特别关注方言和术语处理,寻求如何利用自有语音数据库训练模型的建议 关键引用: "I'm very interested in speech to text - but like tricky dialects and use of various terminologies" "where to start...to train the models with a huge database of voice samples I own"
- 关于项目热度观察:
- 用户written-beyond注意到该项目与Rust运行时实现同时在首页出现,表示赞赏 关键引用: "this and the Rust runtime implementation are neck and neck on the frontpage right now" "Cool project!"