MiMo
一个用于小米MiMo开放平台API的Rust客户端库。
功能特性
- ✅ 基础对话 - 支持非流式和流式响应
- ✅ 多模型支持 - mimo-v2.5-pro, mimo-v2.5, mimo-v2-pro, mimo-v2-omni, mimo-v2-flash
- ✅ 函数调用 - 完整的工具定义和调用支持
- ✅ 联网搜索 - 内置Web搜索工具
- ✅ 多模态输入 - 支持图片、音频、视频理解
- ✅ 语音合成 (TTS) - 支持多种音频格式输出(WAV/MP3/PCM/PCM16)
- ✅ 音色设计 - 通过文本描述设计自定义音色
- ✅ 语音克隆 - 通过音频样本克隆声音
- ✅ 风格控制 - 支持语速、情感、角色扮演等风格控制
- ✅ 深度思考 - 支持思维链模式
- ✅ 结构化输出 - 支持JSON格式响应
- ✅ 异步/异步流 - 基于Tokio和futures的异步实现
安装
在 Cargo.toml 中添加:
[]
= "0.2"
快速开始
基础对话
use ;
async
配置
环境变量
XIAOMI_API_KEY=your_api_key_here
自定义配置
use Client;
// 从环境变量
let client = from_env?;
// 自定义API密钥
let client = new?;
// 自定义基础URL和超时
let client = builder
.api_key
.base_url
.timeout
.build?;
模型
| 模型 | 描述 | 最佳用途 |
|---|---|---|
mimo-v2.5-pro |
最新旗舰模型 | 复杂推理、专业任务 |
mimo-v2.5 |
均衡性能模型 | 通用任务 |
mimo-v2-pro |
Agent导向旗舰模型 | Agent应用 |
mimo-v2-omni |
多模态模型 | 图像、音频、视频理解 |
mimo-v2-flash |
轻量模型 | 快速响应、简单任务 |
mimo-v2.5-tts |
TTS模型 | 文本转语音(预置音色) |
mimo-v2.5-tts-voicedesign |
TTS音色设计模型 | 通过文本描述设计音色 |
mimo-v2.5-tts-voiceclone |
TTS语音克隆模型 | 通过音频样本克隆声音 |
mimo-v2-tts |
TTS模型(旧版) | 文本转语音(3种基础音色) |
use ;
// 使用模型常量
let request = new;
// 或使用快捷方法
let request = v25_pro; // mimo-v2.5-pro
let request = v25; // mimo-v2.5
let request = pro; // mimo-v2-pro
let request = omni; // mimo-v2-omni
let request = flash; // mimo-v2-flash
let request = v25_tts; // mimo-v2.5-tts
let request = v25_tts_voicedesign; // mimo-v2.5-tts-voicedesign
let request = v25_tts_voiceclone; // mimo-v2.5-tts-voiceclone
let request = tts; // mimo-v2-tts
语音合成 (TTS)
基础TTS
use ;
let client = from_env?;
// 使用 mimo-v2-tts 模型(支持3种音色)
let response = client
.tts
.voice
.format
.send
.await?;
let audio = response.audio?;
let audio_bytes = audio.decode_data?;
write?;
使用 mimo-v2.5-tts 模型(支持11种预置音色)
// 预置音色包括:
// 中文女声:冰糖、茉莉
// 中文男声:苏打、白桦
// 英文女声:Mia、Chloe
// 英文男声:Milo、Dean
// 基础音色:MimoDefault、DefaultEn、DefaultZh
let response = client
.v25_tts
.voice
.send
.await?;
音色设计
通过文本描述设计自定义音色(使用 mimo-v2.5-tts-voicedesign 模型):
let response = client
.v25_tts_voicedesign
.user_message
.send
.await?;
注意:音色设计模型不支持 voice() 参数,音色完全通过 user_message() 描述。
语音克隆
通过音频样本克隆声音(使用 mimo-v2.5-tts-voiceclone 模型):
// 方法1:从音频文件创建自定义音色
let voice = from_audio_file?;
let response = client
.v25_tts_voiceclone
.voice
.send
.await?;
// 方法2:直接使用 base64 编码的音频数据
let voice = custom;
风格控制
使用 <style> 标签控制语音风格:
// 方法1:使用 tts_styled(非流式)
let response = client
.tts_styled
.voice
.send
.await?;
// 方法2:使用流式API
let mut stream = client
.tts_styled_stream
.voice
.send
.await?;
while let Some = stream.next.await
可用风格:
- 语速控制:"变快"、"变慢"
- 情感:"开心"、"悲伤"、"生气"
- 角色扮演:"孙悟空"、"林黛玉"
- 风格变化:"悄悄话"、"夹子音"、"台湾腔"
- 方言:"东北话"、"四川话"、"河南话"、"粤语"
- 唱歌:"唱歌"
流式TTS
use StreamExt;
let mut stream = client
.tts_stream
.voice
.send
.await?;
let mut file = create.await?;
while let Some = stream.next.await
API 文档
完整的API文档请参考:https://docs.rs/mimo-api
示例
查看 examples/ 目录获取更多示例:
基础对话
basic_chat.rs- 基础对话streaming_chat.rs- 流式响应function_calling.rs- 函数调用multimodal.rs- 多模态输入thinking_mode.rs- 深度思考模式web_search.rs- 联网搜索
语音合成 (TTS)
tts_basic.rs- 基础TTS(演示所有预置音色)tts_chinese.rs- 中文TTStts_mp3.rs- MP3格式输出tts_chat_styled.rs- 聊天风格的TTS接口tts_user_context.rs- 用户上下文TTSstreaming_tts.rs- 流式TTSstreaming_tts_styled.rs- 带风格控制的流式TTSstreaming_tts_advanced.rs- 高级流式TTS示例voice_design.rs- 音色设计示例voice_cloning.rs- 语音克隆示例
运行示例:
开发
运行测试
代码检查
许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
贡献
欢迎贡献!请随时提交 Pull Request。
相关链接
致谢
感谢小米MiMo团队提供优秀的AI服务。