☰
MiniMind-O WebUI实战:电话模式与实时语音交互的完整设置指南
2026/10/3 12:43:19 网站建设 项目流程

MiniMind-O WebUI实战:电话模式与实时语音交互的完整设置指南

【免费下载链接】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 WebUI 是 0.1B 全模态(Omni)模型 MiniMind-O 的官方交互界面,支持电话模式、实时语音交互、语音克隆与图像问答。本指南面向新手,带你从零完成环境配置、启动 WebUI、进入电话模式并与模型"通话",全程无需编写代码。

一、MiniMind-O WebUI 能做什么?

MiniMind-O 是一个从 0 训练的超小型 Omni 模型(minimind-3o主干约 0.1B 参数),单一权重同时支持文 / 音 / 图三模态输入与文本 + 流式语音输出。官方提供了两套 WebUI:

界面入口特点
实时 WebUI(本指南主角)webui/web_demo.pyWebSocket 双向流式,支持电话模式、实时打断(barge-in)、摄像头视觉
Gradio 演示scripts/web_demo_omni.py非实时,上传/录音后整段回复,适合快速体验

实时 WebUI 的核心能力:

  • 📞电话模式:打开浏览器即"拨号",麦克风流持续上行,模型流式语音回复,支持边听边答;
  • ⚡实时打断:模型说话时你再开口,它会立即停下重新听(Silero VAD 检测);
  • 🎤音色选择与克隆:内置 dylan、serena、uncle_fu 等音色,也能录一段话克隆自己的声音;
  • 📷摄像头看图:通话中开启 cam,自动抓拍画面作为视觉输入。

二、环境准备:3 步下载所有资源

建议机器:任意带 NVIDIA GPU 的电脑(显存 8GB 左右即可);无 GPU 时可用 CPU 推理,速度较慢。

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

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

依赖清单见 requirements.txt,其中flask-sock就是电话模式 WebSocket 的底层。

第 2 步:下载模型组件(放到model/目录)

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

分别对应:语音编码器、视觉编码器、Mimi 音频编解码器(语音输出 24 kHz 波形靠它还原)、说话人编码器(音色克隆用)。仓库已自带 VAD 模型 model/vad/silero_vad.onnx 和内置音色 model/speaker/voices.pt,无需额外下载。

第 3 步:下载 Omni 模型权重

# 下载 transformers 格式权重,稍后放入 WebUI 扫描目录 modelscope download --model gongjy/minimind-3o --local_dir ./minimind-3o

三、启动 WebUI:一条命令跑起来

web_demo.py启动时会自动扫描--load_from目录下所有包含权重文件的子文件夹,因此先把权重目录放进去:

cp -r minimind-3o ./webui/ cd webui python web_demo.py --load_from . --port 7860

看到Warmup done!后,浏览器访问http://localhost:7860即进入聊天主界面;访问http://localhost:7860/call可直达电话模式。

常用启动参数速查

参数默认值说明
--load_from./模型扫描目录,放多个子文件夹可在页面上热切换模型
--device自动(有 CUDA 用 cuda)显存不足排查问题时可改为cpu
--port7860端口被占用时调整,如--port 8000
--audio_chunk_frames4流式播放每块解码的 Mimi 帧数(约 320ms);播放卡顿调大到 8/12
--audio_overlap2分块解码重叠帧,缓解块边界杂音,一般无需调整
--max_history_turns0电话模式带多少轮对话历史;调大更有上下文,但延迟与显存增加

四、先体验聊天模式:文本、语音、图像三合一

进入主界面后,底部输入区有 3 个按钮:

  1. 图像按钮:从文件选图或现场拍照,模型会以语音+文字回答"图中是什么";
  2. 录音按钮:按住录制一段语音提问(语音输入走端到端链路,不经过独立 ASR 转文字);
  3. 输入框:直接打字提问。

每次回复都会流式播放语音,右上角面板实时显示text_ttft/audio_ttft(首字/首音延迟);右上角音色下拉框可切换内置音色(dylan、eric、serena、uncle_fu、vivian)与 unseen 音色,克隆音色也可在此选择。

五、电话模式:像打电话一样和模型实时对话

点击主界面右上角的Call按钮,页面切换到全屏通话界面(前端逻辑见 webui/web_demo.html)。

电话模式的工作原理

浏览器通过ScriptProcessor把麦克风采集的音频重采样到 16 kHz,按 4096 样本打包成二进制帧,经 WebSocket(/ws/realtime)持续推给后端;后端用 Silero VAD 判断"说话/停顿",一旦检测到你说完,立刻送入模型生成文本与语音,再把 24 kHz PCM 音频流实时推回浏览器播放。模型说话期间你若再次开口,VAD 触发interrupt,当前回复立即中断——这就是接近真实打电话的体验。

通话界面 5 个控件说明

控件功能
顶部状态球动态显示 idle / listening / thinking / speaking 状态,音量越大波纹越强
cam按钮开启摄像头,每轮对话自动抓拍一帧作为图像输入,实现"看着你说话"
log按钮展开本次通话的完整文字记录(session transcript)
end按钮挂断,释放麦克风与 WebSocket
顶部模型/音色下拉通话中也可切换模型与音色,音色变化即时生效

小提示:浏览器要求麦克风权限,若地址栏出现"请求访问摄像头和麦克风"请点允许;WebSocket 需要ws://或wss://,局域网/远程访问时请给服务加一层 HTTPS 反代(Nginx 转发 7860 端口并启用 WebSocket 即可)。

六、语音克隆:30 秒让模型用你的声音回答

  1. 主界面右上角点击当前音色 → 选择底部+ clone;
  2. 给音色起个名字(24 字以内,如"小王");
  3. 按提示自然朗读「今天阳光很好,欢迎来到我的语音克隆小实验。」,3~6 秒为宜,环境尽量安静;
  4. 提交后系统自动做 1.5 倍速增强、提取 CAM++ speaker embedding 与 Mimi reference codes,新音色立即出现在下拉列表中,并持久化到 model/speaker/voice_clone.pt。

克隆音色可随时在列表中点×删除。注意:当前版本音色克隆仍属 Beta 能力,男女声差异与语调倾向可以区分,但长句稳定性有限,别对"高保真复刻"抱太高期待。

七、常见问题快速排查

Q1:端口被占用 / 想开两个实例?换一个端口启动即可:python web_demo.py --port 8000。

Q2:显存不够或报错?先用--device cpu验证流程是否跑通;GPU 下建议给浏览器其他页面减负,Mimi 解码与 Talker 生成都在同一张卡上。

Q3:电话模式一直显示 connecting / 收不到声音?依次检查:① 浏览器是否授权麦克风;② 是否通过localhost访问(或已配置 HTTPS);③ 终端是否已完成Warmup done!。

Q4:回复语音断断续续、有爆音?把--audio_chunk_frames从 4 调到 8 或 12(延迟换平滑度);边界杂音明显时把--audio_overlap调到 3~4。

Q5:模型答非所问、不记得上文?电话模式默认不带历史(--max_history_turns=0)。需要多轮上下文时启动加--max_history_turns 4。

八、写在最后

MiniMind-O WebUI 把"听、看、说"的完整 Omni 链路装进了一个 0.1B 模型里,而电话模式 + 实时打断让它具备了真实对话的雏形。整套配置只需 3 步:装依赖、下模型、一条命令启动,普通个人 GPU 甚至 CPU 都能体验。

想进一步折腾的同学,可以继续看看 model/model_omni.py 中RealtimeSession的 VAD 状态机实现,或参考 eval_omni.py 做命令行推理——这个小而完整的代码库,正是理解 Omni 语音交互的最佳切入点。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询