--- name: mimo-capabilities description: MiMo 模型原生能力配置指南 - 图像理解、音频理解、视频理解、TTS 语音合成、网络搜索。当主模型为 MiMo 时使用这些方法。 tags: [mimo, xiaomi, vision, audio, video, tts, search, multimodal] --- # MiMo 模型原生能力配置指南 ## 概述 MiMo 是小米研发的 AI 大模型,支持多种原生能力。当主模型为 MiMo 时,应使用 MiMo 的原生 API 而非第三方工具。 ## 模型感知路由规则 **关键原则:根据当前主模型选择对应的方法** | 功能 | MiMo 模型 | MiniMax 模型 (mmx-cli) | |------|-----------|--------------| | 图像理解 | MiMo Vision API | `mmx vision describe` | | 音频理解 | MiMo Audio API | 不支持 | | 视频理解 | MiMo Video API | 不支持 | | TTS | MiMo TTS API | `mmx speech synthesize` | | 网络搜索 | MiMo Web Search API | `mmx search query` | | 图像生成 | 不支持 | `mmx image generate` | | 视频生成 | 不支持 | `mmx video generate` | | 音乐生成 | 不支持 | `mmx music generate` | ## 1. 图像理解 ### 支持的模型 - mimo-v2.5 - mimo-v2-omni ### 使用方法 ```bash python3 ~/.hermes/scripts/mimo_vision.py "https://example.com/image.jpg" "描述这张图片" python3 ~/.hermes/scripts/mimo_vision.py /path/to/image.png "这张图片里有什么?" ``` ### 图片限制 - 格式:JPEG, PNG, GIF, WebP, BMP - 大小:单张不超过 50MB ## 2. 音频理解 ### 支持的模型 - mimo-v2.5 - mimo-v2-omni ### 使用方法 ```bash python3 ~/.hermes/scripts/mimo_audio.py "https://example.com/audio.wav" "这段音频说了什么?" python3 ~/.hermes/scripts/mimo_audio.py /path/to/audio.mp3 "转录这段音频" ``` ### 音频限制 - 格式:MP3, WAV, FLAC, M4A, OGG - 大小:URL 不超过 100MB,Base64 不超过 50MB ## 3. 视频理解 ### 支持的模型 - mimo-v2.5 - mimo-v2-omni ### 使用方法 ```bash python3 ~/.hermes/scripts/mimo_video.py "https://example.com/video.mp4" "描述视频内容" python3 ~/.hermes/scripts/mimo_video.py /path/to/video.mp4 "视频里发生了什么?" --fps 2 ``` ### 参数说明 - --fps: 每秒提取帧数,范围 0.1-10,默认 2 - --resolution: default(默认)或 max(最高分辨率) ### 视频限制 - 格式:MP4, MOV, AVI, WMV - 大小:URL 不超过 300MB,Base64 不超过 50MB ## 4. TTS 语音合成 ### 支持的模型 | 模型 | 功能 | |------|------| | mimo-v2.5-tts | 内置音色,支持唱歌 | | mimo-v2.5-tts-voicedesign | 音色设计 | | mimo-v2.5-tts-voiceclone | 音色克隆 | ### 内置音色列表 - 中文:冰糖(默认), 茉莉, 苏打, 白桦 - 英文:Mia, Chloe, Milo, Dean ### 使用方法 ```bash # 内置音色 python3 ~/.hermes/scripts/mimo_tts.py --text "你好世界" --voice 冰糖 --output output.wav # 音色设计(VoiceDesign) python3 ~/.hermes/scripts/mimo_tts.py --text "你好世界" --design "年轻女性,温柔甜美" --output output.wav # 音色克隆(VoiceClone) python3 ~/.hermes/scripts/mimo_tts.py --text "你好世界" --clone voice_sample.mp3 --output output.wav # 带风格指令 python3 ~/.hermes/scripts/mimo_tts.py --text "你好世界" --voice 冰糖 --style "用欢快活泼的语气" --output output.wav ``` ### VoiceDesign 音色设计详解 通过自然语言描述从零生成全新音色,无需参考音频。 **描述维度**(可自由组合): - 性别年龄:年轻女性、中年男性、小女孩、年迈老先生 - 口音语言:标准普通话、带北方口音、说英语 - 音色特征:低沉有磁性、清脆明亮、温柔甜美、略带沙哑 - 发声方式:像纪录片旁白、像新闻主播、声音位置靠后 - 性格气质:沉稳而有感染力、元气满满、饱经风霜 **高级特性**: - 对复杂、模糊、甚至相互矛盾的描述也能合理解读 - 不局限于"男/女/青年/老年"粗粒度标签 - 适合游戏NPC、动画角色、虚拟主播、品牌IP、有声剧 **示例**: ``` --design "一位年迈的老先生,说带北方口音的普通话,语速缓慢而沉稳,嗓音略带沙哑和沧桑感,仿佛一位饱经风霜的老爷爷在讲故事,充满岁月的智慧。" ``` ### VoiceClone 音色克隆详解 只需短至数秒的参考音频,无需训练/标注/微调,直接复刻音色。 **保留的特征**: - 原始说话人的音色身份 - 气息、节奏、习惯性停顿等个人特征 **复用能力**:克隆后的音色可叠加使用全部控制能力(自然语言指令、音频标签、导演剧本) **示例**: ``` # 提供参考音频 + 风格指令 --clone reference.mp3 --style "用尖锐刻薄的嗓音,带着狐假虎威的得意感" ``` ### 风格控制标签(行内音频标签) 在文本中用括号插入标签,精准控制情绪/状态/风格: **标签类型**: - 基础情感:开心、悲伤、生气、害怕、惊讶、兴奋 - 复杂情感:忧郁、释然、无奈、内疚、嫉妒、疲惫 - 整体语调:温柔、冷淡、活泼、严肃、慵懒、俏皮 - 音色定位:磁性、醇厚、清亮、空灵、天真、甜美 - 方言:东北话、四川话、河南话、粤语 - 唱歌:唱歌(必须放在最开头) **高级用法**: - 支持中英双语标签 - 支持多标签叠加(用 `|` 分隔) - 支持开放文本描述 **示例**: ``` (调侃) 老张你当时不是说这条航线稳得很吗…… (模仿自信,提高音量) "系统全绿,放心走。" (突然停顿) ……现在呢? (爆发,愤怒压不住) 现在整艘船都在报警! (低声|情绪塌陷般平静) ……算了。 (轻笑|带点释然) 也挺好,至少是一起看的。 ``` ### 导演剧本级结构化输入 对于一致性要求高的场景(有声剧、游戏NPC、角色化对话),支持分层描述: ```bash python3 ~/.hermes/scripts/mimo_tts.py \ --text "你们求我垂怜..." \ --voice 白桦 \ --style "CHARACTER: 曾是守护九天的神祇,见证了凡人的无药可救后,决定以灭世来完成最终的净化。 SCENE: 悬浮于崩塌的祭坛之上,俯视下方在火海中哀嚎的信徒。 DIRECTION: 充分打开胸腔共鸣,声音位置靠后,音色如古钟般低沉且带有金属质感的磁性。" \ --output output.wav ``` **分层说明**: - CHARACTER:人物身份、背景、性格 - SCENE:场景环境、情境 - DIRECTION:详细的发声指导(共鸣、语调、气声、咬字等) ### TTS API 要点 1. 合成文本必须放在 assistant 角色的 content 中 2. user 角色消息可选,用于传递风格指令 3. 流式调用时输出格式指定为 pcm16 ## 5. 网络搜索 ### 支持的模型 - mimo-v2.5-pro, mimo-v2.5, mimo-v2-pro, mimo-v2-omni, mimo-v2-flash ### 前置条件 在 MiMo Console 启用 Web Search 插件。 ### 使用方法 ```bash python3 ~/.hermes/scripts/mimo_search.py "武汉明天天气" python3 ~/.hermes/scripts/mimo_search.py "附近美食" --city 武汉 --region 湖北 ``` ### 参数说明 - --max-keywords: 每轮搜索最大关键词数,默认 3 - --force/--no-force: 是否强制搜索,默认强制 - --limit: 搜索结果数量,默认 1 - --country/--region/--city: 本地化搜索位置 ## 环境变量 ```bash XIAOMI_API_KEY=tp-xxxxx XIAOMI_BASE_URL=https://token-plan-sgp.xiaomimimo.com/v1 ``` **注意**:环境变量需持久化到 `~/.bashrc`,否则新 terminal session 会丢失。 ## ⚠️ 图片输入配置(关键) MiMo chat API **不支持图片输入**。用户发图片时,如果 Hermes 把图片直接塞进 chat completions 请求,会返回 `404: No endpoints found that support image input`。 ### 必须设置 `image_input_mode: tool` ```bash hermes config set agent.image_input_mode tool ``` - `auto`(默认)= 尝试直接把图片发给主模型 → MiMo 会 404 - `tool` = 强制图片走 vision 工具 → 正确路由到 MiMo Vision API ### Vision API Key 必须显式写入 config `XIAOMI_API_KEY` 环境变量**不会**自动传给 Hermes vision 工具。必须手动填入 config。 **有两个 vision section 都需要 API key:** | 路径 | 用途 | |------|------| | `auxiliary.vision.api_key` | 主 vision 工具配置(含 provider/model/base_url) | | `tools.vision.api_key` | 工具层 vision 配置 | ```bash # 方法:从 .bashrc 提取 key 并写入(hermes config set 无法展开未 source 的环境变量) python3 << 'EOF' import yaml key = open('/home/ubuntu/.bashrc').read().split('XIAOMI_API_KEY=')[1].split('\n')[0].strip().strip('"').strip("'") with open('/home/ubuntu/.hermes/config.yaml') as f: config = yaml.safe_load(f) config['auxiliary']['vision']['api_key'] = key config['tools']['vision']['api_key'] = key with open('/home/ubuntu/.hermes/config.yaml', 'w') as f: yaml.dump(config, f, default_flow_style=False, allow_unicode=True) print(f'Done. Key set: {key[:10]}...') EOF ``` ## ⚠️ 常见问题排查 ### 401 Unauthorized / Invalid API Key 1. **检查 base URL**:脚本默认值可能过时。正确 URL 是 `https://token-plan-sgp.xiaomimimo.com/v1`,不是 `https://api.xiaomimimo.com/v1`。 2. **检查 header 格式**:MiMo API 使用 `Authorization: Bearer `,而非 `api-key` header。 3. **验证方式**: ```bash curl -s https://token-plan-sgp.xiaomimimo.com/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $XIAOMI_API_KEY" \ -d '{"model":"mimo-v2.5-tts","messages":[{"role":"assistant","content":"你好"}],"audio":{"format":"wav","voice":"冰糖"}}' ``` ### 404: No endpoints found that support image input MiMo chat API 不支持图片输入。用户发图片时 Hermes 尝试直接塞进请求导致。 **修复**:`hermes config set agent.image_input_mode tool`,并确保 vision API key 已配置(见上方"图片输入配置"章节)。 ### 脚本报 "No API key found" 确认环境变量已 export:`echo $XIAOMI_API_KEY`。如果为空,添加到 `~/.bashrc` 并 `source ~/.bashrc`。 **注意**:Hermes 的 config.yaml 中可能已配置了 API key(`auxiliary.vision.api_key` 或 provider 的 `api_key`),但这个 key 不会自动 export 到 shell 环境变量。脚本依赖 `XIAOMI_API_KEY` 环境变量,二者是独立的。 **快速恢复方法**:从 config.yaml 提取 key 并 export: ```bash export XIAOMI_API_KEY=$(python3 -c "import yaml; c=yaml.safe_load(open('/home/ubuntu/.hermes/config.yaml')); print(c.get('auxiliary',{}).get('vision',{}).get('api_key',''))") ``` ### 网络搜索 400 Bad Request `mimo_search.py` 可能因 API 端点变更或参数格式问题返回 400。排查步骤: 1. 先用 curl 直接测试 API 是否可达:`curl -s -o /dev/null -w "%{http_code}" https://token-plan-sgp.xiaomimimo.com/v1/models -H "Authorization: Bearer $XIAOMI_API_KEY"` 2. 如果网络不通(`Network is unreachable`),是服务器出站网络问题,不是 API 问题 3. 如果网络通但 400,检查请求体格式是否与最新 API 兼容 ### mmx search 不可用 `mmx search query` 需要 MiniMax Token Plan 支持 `coding-plan-search` 模型。如果报错 "your current token plan not support model, coding-plan-search",说明当前 plan 不包含搜索能力。替代方案: - 使用 MiMo 网络搜索(如果可用) - 使用 Playwright 浏览器抓取 - 使用 `curl` 直接请求搜索引擎(注意服务器出站网络限制) ## References - `references/sensenova-api.md` — SenseNova API 配置、模型列表、限流策略、已安装 skills 绑定情况 - `references/mimo-v2.5-tts-official-doc.md` — MiMo-V2.5-TTS Series 官方文档摘要(VoiceDesign/VoiceClone/导演剧本详解) ## 脚本位置 所有 MiMo 辅助脚本位于 ~/.hermes/scripts/: - mimo_vision.py - 图像理解 - mimo_audio.py - 音频理解 - mimo_video.py - 视频理解 - mimo_tts.py - TTS 语音合成 - mimo_search.py - 网络搜索