jingyaogong/minimind-o

🎙️ A 0.1B Omni model trained from scratch, capable of listening, speaking, and seeing!

MiniMind‑O – 超小型端到端全模态模型(约 0.1 B 参数)

是什么 – MiniMind‑O 是一个开源的多模态(文本 + 语音 + 图像)模型,能够 理解 任意输入,并以文本和流式语音形式 响应。整个“思考者 → 说话者”流水线完全用 PyTorch 从零实现(无高级框架魔法),并附带训练脚本、数据、预训练权重和演示接口。


主要特性(README 中描述)

  • 全模态能力 – 单一权重文件可处理三种输入模态(文本、音频、视觉)和两种输出模态(文本、实时语音)。
  • 超小体积 – 基础模型“minimind‑3o”约 113 M 可训练参数(≈0.1 B)。也提供 MoE 变体(≈315 M)。这使得使用 mini 数据集在单张 RTX‑3090 上约 2 小时内完成全链路训练成为可能。
  • 思考者–说话者双路径架构
    • 思考者:一个 MiniMind 变压器,融合多模态嵌入并生成文本回复。
    • 说话者:一个独立的 MiniMind 模块,基于思考者的隐藏状态,通过 MTP(多标记预测)预测多层 Mimi 音频码。这些码实时解码为 24 kHz 语音,支持打断(barge-in)和近双工交互。
  • 模态投影器 – 冷冻的外部编码器(音频用 SenseVoice‑Small,视觉用 SigLIP‑2)通过两层 MLP 投影器将特征映射到 MiniMind 的隐藏空间。
  • 语音克隆与提示 – 使用说话人嵌入(CAM++)和参考音频码实现上下文内语音克隆。提供 5 个内置语音提示和 7 个未见提示用于实验。
  • 训练数据 – 两个数据包:
    • mini:仅英文的小型子集,可在约 2 小时内运行完整流水线。
    • full:用于发布权重的完整多语言(中文 + 英文)数据集。
  • 全栈代码 – 从数据加载(train_sft_omni.py)到评估(eval_omni.py)和演示 UI(Gradio Web UI 和实时手机模式 UI)全覆盖。
  • 无第三方抽象 – 所有核心层均直接使用 PyTorch 张量编写;代码仍可方便地使用 HuggingFace 分词器。

典型应用场景

场景 MiniMind‑O 如何帮助
研究与教育 – 从零学习全模态模型的构建与训练。 提供 0.1 B 最小模型、完整训练脚本和可在单 GPU 上运行的微型数据集。
多模态助手原型 – 用文本聊天、对模型说话,或展示图像并获得语音回答。 使用提供的 CLI(eval_omni.py)或 Gradio/WebUI 实现实时交互,支持打断。
语音风格实验 – 测试上下文内语音克隆或比较不同说话人嵌入。 内置语音提示 + 可提供任意参考音频码。
小型全模态模型基准测试 – 与更大开源模型比较参数效率、CER/WER 或语音克隆相似度。 技术报告中包含已发布的评估曲线、CER/WER 数值和说话人相似性表格。

快速入门(来自 README)

  1. 克隆与安装
    git clone --depth 1 https://github.com/jingyaogong/minimind-o
    cd minimind-o
    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    
  2. 下载所需模型与数据(ModelScope 或 HuggingFace LFS)
    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 llm_768.pth --local_dir ./out   # 基础 LLM 权重
    
  3. 运行推理(CLI 示例)
    python eval_omni.py --load_from model --weight sft_omni
    
    启动 Gradio 演示:
    cp -r minimind-3o ./scripts/minimind-3o   # 复制变压器格式权重
    cd scripts && python web_demo_omni.py
    
  4. 在 mini 数据集上训练(单 GPU 示例)
    cd trainer
    CUDA_VISIBLE_DEVICES=0 torchrun --master_port 29560 --nproc_per_node 1 \
        train_sft_omni.py --learning_rate 5e-4 \
        --data_path ../dataset/sft_t2a_mini.parquet --epochs 1 \
        --batch_size 40 --use_compile 1 --from_weight llm --save_weight sft_zero \
        --max_seq_len 512 --use_wandb 0 --use_moe 0
    
    (后续音频投影和全流水线步骤遵循相同模式。)

更多信息获取

  • 技术报告 – arXiv: 2605.03937(README 顶部链接)。
  • 模型权重与集合 – ModelScope 和 HuggingFace 中的 MiniMind‑O 集合。
  • 演示视频与实时 Gradio 演示 – README 中提供链接。
  • 相关项目 – 基础变压器骨干的 MiniMind(LLM)和 MiniMind‑V(视觉语言)。

TL;DR

MiniMind‑O 为拥有中等 GPU 的任何人提供了一个完整的端到端多模态模型(文本 + 语音 + 图像),可从零训练或开箱即用用于交互式演示。其超小的 0.1 B 体积、开源代码和捆绑数据使其成为学习或原型化全模态 AI 的实用入门点。

相关

  • 项目
  • 项目
  • Dispatch
  • 项目
  • 项目