ARTICLE DETAIL

资讯详情

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

DeepSeek 用不起了,切换小米 MiMo 搭建语音交互的实战经验

DeepSeek 用不起了,切换小米 MiMo 搭建语音交互的实战经验 DeepSeek 用不起了切换小米 MiMo 搭建语音交互的实战经验DeepSeek 8/17 起要涨价峰谷价而小米的 MiMomimo-v2.5刚好出来——一个模型覆盖 ASR TTS Vision 文本TTS 限时免费ASR 仅 ¥0.5/小时。能力不差还更便宜。换完之后顺便把语音交互也搭了发现 MiMo 的 ASR/TTS 走 Chat Completions API接入成本很低踩了几个坑记录一下。1. MiMo 多模态能力实测1.1 视觉理解VisionMiMo 的视觉理解能力和其他多模态模型类似通过input_image参数传入图片。这里不展开重点说 ASR 和 TTS。1.2 语音识别ASRMiMo 的 ASR 调用方式和传统方案完全不同。它不走标准的/v1/audio/transcriptions端点调了会 404而是走 Chat Completions 接口。核心要点只能传input_audio不能传text部分。import json, base64, urllib.request API_KEY your-key BASE_URL https://token-plan-cn.xiaomimimo.com/v1 # 读取音频文件并编码为 base64 with open(voice_message.mp3, rb) as f: audio_b64 base64.b64encode(f.read()).decode() data json.dumps({ model: mimo-v2.5-asr, messages: [{ role: user, content: [{ type: input_audio, input_audio: {data: audio_b64, format: mp3} }] }], max_tokens: 2000 }).encode() req urllib.request.Request( f{BASE_URL}/chat/completions, datadata, headers{api-key: API_KEY, Content-Type: application/json} ) with urllib.request.urlopen(req, timeout60) as r: result json.loads(r.read()) text result[choices][0][message][content] print(text)⚠️坑如果 messages 里同时传了text类型的 contentAPI 会报错。MiMo ASR 的 user content 必须只有input_audio不能混入text。这和一些其他多模态模型的用法不同需要注意。成本方面MiMo ASR 按音频时长计费大约 ¥0.5/小时音频对于日常语音消息场景非常划算。1.3 语音合成TTSMiMo 的 TTS 同样走 Chat Completions API模型名是mimo-v2.5-tts。核心要点必须传audio参数否则返回 500 错误。import json, base64, urllib.request data json.dumps({ model: mimo-v2.5-tts, messages: [ {role: assistant, content: 要合成的文本内容} ], audio: {format: mp3, voice: 茉莉} }).encode() req urllib.request.Request( f{BASE_URL}/chat/completions, datadata, headers{api-key: API_KEY, Content-Type: application/json} ) with urllib.request.urlopen(req, timeout120) as r: result json.loads(r.read()) audio_data result[choices][0][message][audio][data] audio_bytes base64.b64decode(audio_data) # 保存音频文件...⚠️坑messages 必须包含assistantrole。文本放在 assistant content 里不是 user content。如果只传 user messageAPI 会报400: messages must contain an assistant role for TTS model。内置音色有茉莉、冰糖等具体列表可查 MiMo 文档。2. 语音交互搭建2.1 ASR 配置在 Hermes 的config.yaml中配置 MiMo ASR 作为 STT providerstt: enabled: true language: zh provider: mimo-asr providers: mimo-asr: command: python3 /path/to/ask_mimo_asr.py --audio {input_path} --out {output_path} format: txt language: zh timeout: 300 type: commandHermes 会在收到语音消息时自动调用这个脚本将音频文件转为文字。注意timeout要给够长语音可能需要几十秒。2.2 TTS 配置TTS 同样通过 command provider 模式接入tts: provider: mimo-tts providers: mimo-tts: command: python3 /path/to/ask_mimo_tts.py --text-file {input_path} --out {output_path} --voice xiaoai output_format: mp3 timeout: 120 type: command voice_compatible: trueHermes 会把要合成的文本写入{input_path}文件脚本读取后调用 MiMo API合成的音频输出到{output_path}。2.3 音色克隆MiMo TTS 支持音色克隆——传入一段参考音频模型会用这个音色来合成新内容。核心原理在 user message 的 content 中传入input_audio参考音频assistant content 放要合成的文本。# 读取参考音频 with open(reference_voice.mp3, rb) as f: ref_audio base64.b64encode(f.read()).decode() # 克隆调用格式 data json.dumps({ model: mimo-v2.5-tts, messages: [ { role: user, content: [ {type: input_audio, input_audio: {data: ref_audio, format: mp3}}, {type: text, text: 用这个声音的音色来说} ] }, {role: assistant, content: 要合成的文本内容} ], audio: {format: mp3} # 注意克隆模式不传 voice 参数 }).encode()实测中我们用小爱同学的语音片段作为参考音频进行克隆效果不错。参考音频的获取流程从视频网站找到目标音色的干净语音片段用yt-dlp下载音频用ffmpeg截取 5-30 秒无背景噪音的片段调用克隆 API 生成音频再用 MiMo 听一下验证相似度⚠️参考音频质量直接影响克隆效果需要干净的人声背景噪音太多会导致音色偏差。3. 多平台接入3.1 QQ Bot 语音消息QQ Bot 原生支持语音消息发送。在 Hermes 中配置 QQ Bot 后语音交互可以直接打通platforms: qqbot: enabled: true extra: app_id: your-app-id client_secret: your-secret dm_policy: pairing group_policy: pairing stt: provider: mimo-asrQQ Bot 支持send_voice()方法TTS 合成的音频可以直接作为语音消息发送。完整的语音交互链路是这样的用户在 QQ 发送语音消息Hermes 收到后调用ask_mimo_asr.py将音频转为文字文本经过 MiMo 模型推理生成回复内容调用ask_mimo_tts.py将回复文本合成为语音通过 QQ Bot 的send_voice()将语音发送给用户全链路都在 MiMo 生态内完成不需要跨多个服务商。下面是实际效果——QQ 上的语音对话截图用户发送语音消息AI 用 MiMo ASR 转录为文字经过推理后用 MiMo TTS 合成语音回复全程自动完成。另外有个常见坑如果dm_policy设为open需要同时设置环境变量GATEWAY_ALLOW_ALL_USERStrue否则 Gateway 会拒绝启动日志里会看到Refusing to start: qqbot has dm_policy/group_policy set to open but neither GATEWAY_ALLOW_ALL_USERS nor QQ_ALLOW_ALL_USERS is enabled这样的报错。3.2 微信语音条为什么不支持微信 Bot API 目前不支持发送语音条——API 层面接受消息但客户端静默丢弃。这是平台限制不是代码问题。目前微信渠道只支持文字消息收发语音交互建议走 QQ Bot。4. 踩坑记录TTS 必须传audio参数不传会返回 500 错误请求体中需包含audio: {format: mp3}ASR 不能传textcontentuser message 只能包含input_audio类型和 Vision 等其他多模态调用方式不同TTS 必须用assistantrole文本放在 assistant content 里放 user 会报 400 错误克隆模式不传voice参数voice只用于内置音色选择克隆模式下传了可能导致意外行为OGG 格式需要转换MiMo TTS 不直接支持 OGG 输出需要先出 WAV 再用 ffmpeg 转换5. 总结MiMo 的统一 API 设计让语音交互搭建变得很简单——ASR TTS Vision 一个模型搞定不用再维护多个 API。目前 TTS 限时免费ASR 仅 ¥0.5/小时性价比很高。如果你也在做类似的语音交互项目可以试试 MiMo。有问题欢迎评论区交流。
返回列表