拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

不烧显卡!MiniMind-O如何在纯CPU上实现快速实时语音推理

不烧显卡!MiniMind-O如何在纯CPU上实现快速实时语音推理

不烧显卡!MiniMind-O如何在纯CPU上实现快速实时语音推理

【免费下载链接】minimind-o🎙️ A 0.1B Omni model trained from scratch, capable of listening, speaking, and seeing!项目地址: https://gitcode.com/gh_mirrors/mi/minimind-o

MiniMind-O 是一个从 0 训练的 ~0.1B 完整 Omni 模型,单一权重同时支持文 / 音 / 图三模态输入与文本 / 流式语音输出。得益于极小的主干参数和流式解码架构,它不仅能在普通 GPU 上训练,更能在纯 CPU上完成快速、可打断的实时语音推理。本文用尽量少的代码,带你看懂它为什么快、快在哪里,以及如何三步跑通语音问答 Demo。

一、为什么 0.1B Omni 模型敢跑在 CPU 上

很多人对"语音大模型"的第一印象是:参数动辄几十 B,不配一张 24G 显卡根本跑不动。MiniMind-O 的思路正好相反——把参数压到 CPU 能轻松吞吐的量级。

它的参数预算非常克制:

模块实现状态参数
Thinker(理解)MiniMind Transformer,8 层 / hidden 768可训练63.91M
Talker(发声)独立 4 层 blocks + 8 个 codebook head可训练47.05M
Audio / Vision projector两层 MLP可训练~2.2M
SenseVoice-Small 语音编码器16 kHz 语音特征冻结234M
SigLIP2 视觉编码器256×256 图像冻结94.55M
Mimi 音频编解码器8 codebook,12.5 Hz,24 kHz冻结96.15M

也就是说,minimind-3o真正需要"算"的可训练主体只有约113M(MoE 版 active 参数同样约 115M),运行时总加载约 538M。对 CPU 而言,这意味着每生成一个 token 的矩阵运算量极小,几十 GB 内存的普通 PC 完全装得下、算得动。

另一个关键细节是12.5 Hz 的音频 code 帧率:Mimi 编解码器把语音压成每秒仅 12.5 帧的离散 code 序列,CPU 只要以比这快得多的速度产出 code,语音流就不会断。这就是"快速实时语音推理"的数学基础。

整体架构上,MiniMind-O 由Thinker–Talker 双路径构成:Thinker 负责理解文本、语音和图像并给出语义回复,Talker 在 Thinker 的中间层 hidden state 条件下,通过 MTP(Multi-Token Prediction)一次预测 8 层 Mimi codebook,再交给 Mimi 解码器还原成 24 kHz 流式语音。

二、实时语音不卡顿的关键:流式解码 + 增量波形合成

"实时"不等于"算得快",更等于边算边播。MiniMind-O 的推理循环(见 stream_generate)是这样工作的:

  1. 逐 token 流式产出:stream_generate以生成器方式逐个 yield 文本 token,同时用 KV cache(use_cache=True)避免重复计算前文,CPU 上尤其受益;
  2. 延迟调度补齐音频:Talker 侧 8 层 code 按固定延迟逐层跟上,每满一组 8 路 code 就产出一帧音频 code;
  3. 增量解码波形:Mimi 解码器可以增量恢复 24 kHz 波形——语音播放不必等待完整回答结束,首帧音频的延迟只取决于前几个 token 的生成速度。

训练与推理共用同一条序列格式:文本 token 与 8 路 audio-code stream 放在同一个序列里,语音、图像和音色条件通过占位符或 reference codes 注入,参考 sequence_format 说明。

在实时通话链路里(webui/web_demo.py),解码出的波形还被切成小 chunk 叠加 overlap 去缝,通过 SSE / WebSocket 逐块推给浏览器,做到"模型每生成一点,耳朵就听到一点"。

三、设备自适应:零配置切换到 CPU 推理

MiniMind-O 的推理脚本都做了设备自适应,没有显卡时会自动落到 CPU,无需改任何配置:

  • 命令行入口 eval_omni.py 中--device默认值就是'cuda' if torch.cuda.is_available() else 'cpu';
  • Web 端 web_demo.py 的default_device()按cuda → mps → cpu依次探测;
  • 音频解码器会按设备智能选精度:GPU 上用 fp16,CPU 上自动退回 float32(scripts/web_demo_omni.py),避免在 CPU 上硬跑半精度反而更慢。

此外还有两个"减负"设计:

  • ASR 并行化:实时模式下,用户语音的转写(用于显示对话历史)被丢到后台线程异步执行,不阻塞主模型的语音生成;
  • VAD 走 ONNX:端点检测使用 silero_vad.onnx,由 onnxruntime 执行,CPU 占用极低,保证"边听边判"不掉帧。

四、边说边听:VAD 打断与近似双工交互

纯 CPU 跑完"能说话"只是及格线,MiniMind-O 还做了一件事:能在模型说话时听出你在插话并立刻打断(barge-in)。

实时会话由 RealtimeSession 驱动:VAD 持续监听麦克风,用户停止说话后 Thinker 完成 prefill,Talker 开始逐步产出 code,Mimi 边收边播;当用户在模型说话过程中再次开口,系统中断当前生成、退回 listening 状态,重新进入新一轮 prefill–reply。虽然中断检测目前还是简单的 VAD 阈值,但从工程闭环看,这套"近似双工"对话已经完整跑通——而且全流程可以落在 CPU 上。

五、快速上手:3 步在 CPU 上跑通语音问答

第 1 步:克隆仓库并安装依赖

git clone --depth 1 https://gitcode.com/gh_mirrors/mi/minimind-o cd minimind-o pip install -r requirements.txt

第 2 步:下载推理所需的模型资源

modelscope download --model gongjy/SenseVoiceSmall --local_dir ./model/SenseVoiceSmall modelscope download --model gongjy/siglip2-base-p32-256-ve --local_dir ./model/siglip2-base-p32-256-ve modelscope download --model gongjy/mimi --local_dir ./model/mimi modelscope download --model gongjy/campplus --local_dir ./model/campplus modelscope download --model gongjy/minimind-3o-pytorch --local_dir ./out

第 3 步:启动推理

# 无 GPU 时自动使用 CPU;也可显式指定 --device cpu python eval_omni.py --load_from model --weight sft_omni

跑起来后,终端会流式打印 Thinker 的文本回复,并调用 Mimi 解码出 24 kHz 语音写入./output_audio/。想体验电话模式实时通话,可用 webui/web_demo.py 启动 Web 实时 Demo;不想动命令行也可以参考 web_demo_omni.py 的 Gradio 演示。

六、实用建议与边界

  • CPU 推理体验最好的场景是短回答:官方评估显示短语音回复最稳,较长的英文回答更容易出现读音漂移;
  • 内存预算:运行时总加载约 538M 参数,float32 权重加推理开销,建议 8 GB 以上内存;
  • 想要更快:有 GPU 时脚本会自动用 cuda + fp16,速度再上一个台阶;
  • 想从零复现:训练链路同样开源,trainer/train.sh 给出了 mini 数据集的完整流程,单卡 RTX 3090 约 2 小时可跑通:

MiniMind-O 证明了完整 Omni 闭环并不需要"大参数 + 大显卡":把可训练主体压到 0.1B、用流式解码和增量合成换取低延迟,一套能听、能看、能说的语音模型就能稳稳落在你的 CPU 上。

【免费下载链接】minimind-o🎙️ A 0.1B Omni model trained from scratch, capable of listening, speaking, and seeing!项目地址: https://gitcode.com/gh_mirrors/mi/minimind-o

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表