语音合成(MiMo-V2.5-TTS 系列)

官方文档:Xiaomi MiMo 开放平台

该文章内容搬运与官方文档,详细内容请看官方文档

语音合成(文本转语音)支持将输入的文本自动转换为自然流畅的语音输出。您可通过配置发音风格、音色等参数,生成自然生动的语音内容。

核心能力

  • 预置音色开箱即用:内置多种精品音色,无需额外配置即可快速使用。
  • 音色设计与克隆:支持通过文本描述设计音色,或基于音频样本复刻任意音色。
  • 多样化发音风格:支持语速、情绪、角色扮演、方言等多种风格控制,语音表达更生动自然。

下方填写的:https://token-plan-cn.xiaomimimo.com/v1/chat/completions,是你的请求地址,博主这里是小米的订阅模式的请求地址。

如果你是计费的(按需计费),地址就是https://api.xiaomimimo.com/anthropic/v1/messages。(这2个地址都是Anthropic 兼容协议的)

请求地址:

按量计费

OpenAI API 兼容:https://api.xiaomimimo.com/v1/chat/completions
Anthropic API 兼容:https://api.xiaomimimo.com/anthropic/v1/messages

Token Plan

  • OpenAI 兼容协议
    • 中国集群:https://token-plan-cn.xiaomimimo.com/v1
    • 新加坡集群:https://token-plan-sgp.xiaomimimo.com/v1
    • 欧洲集群:https://token-plan-ams.xiaomimimo.com/v1
    • 末尾加上 /chat/completions
  • Anthropic 兼容协议
    • 中国集群:https://token-plan-cn.xiaomimimo.com/anthropic
    • 新加坡集群:https://token-plan-sgp.xiaomimimo.com/anthropic
    • 欧洲集群:https://token-plan-ams.xiaomimimo.com/anthropic
    • 末尾加上 /v1/messages

代码调用

Curl

curl --location --request POST 'https://api.xiaomimimo.com/v1/chat/completions' \
--header "api-key: $MIMO_API_KEY" \
--header "Content-Type: application/json" \
--data-raw '{
    "model": "mimo-v2.5-pro",
    "messages": [
        {
            "role": "user",
            "content": "武汉明天天气怎么样?"
        }
    ],
    "tools": [
        {
          "type": "web_search",
          "max_keyword": 3,
          "force_search": true,
          "limit": 1,
          "user_location": {
            "type": "approximate",
            "country": "China",
            "region": "Hubei",
            "city": "Wuhan"
          }
        }
    ],
    "max_completion_tokens": 1024,
    "temperature": 1.0,
    "top_p": 0.95,
    "stream": false,
    "stop": null,
    "frequency_penalty": 0,
    "presence_penalty": 0,
    "thinking": {
        "type": "disabled"
    }
}'

flutter dart

import 'dart:convert';
import 'dart:typed_data';
import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:just_audio/just_audio.dart';
import 'package:path_provider/path_provider.dart';

class TTsService {
  static const String apiKey =
      "tp-cprsr8o68w2m3322kxa7esptkdf3f4j8wtxbzfq3n888x104";

  // ====================== 语音播报(从你页面复制的稳定版)======================
  static Future<void> speak(String text) async {
    final AudioPlayer player = AudioPlayer();

    try {
      if (text.trim().isEmpty) {
        print("❌ TTS错误:文本不能为空");
        return;
      }

      print("🔊 正在请求语音合成...");

      final body = jsonEncode({
        "model": "mimo-v2.5-tts",
        "messages": [
          {"role": "user", "content": "自然、清晰、标准普通话"},
          {"role": "assistant", "content": text}
        ],
        "audio": {
          "format": "wav",
          "voice": "Chloe",
        }
      });

      final response = await http.post(
        Uri.parse('https://token-plan-cn.xiaomimimo.com/v1/chat/completions'),
        headers: {
          'api-key': apiKey,
          'Content-Type': 'application/json',
        },
        body: body,
      );

      if (response.statusCode != 200) {
        print("❌ HTTP错误:${response.statusCode}");
        print("❌ 返回:${response.body}");
        return;
      }

      final data = jsonDecode(response.body);

      // ========= 你能用的核心音频提取逻辑 =========
      String? base64Audio;

      try {
        final msg = data['choices']?[0]?['message'];
        if (msg is Map && msg['audio'] != null) {
          final af = msg['audio'];
          if (af is String) {
            base64Audio = af;
          } else if (af is Map) {
            base64Audio = af['data']?.toString() ??
                af['content']?.toString() ??
                af['base64']?.toString();
          }
        }
      } catch (_) {}

      if (base64Audio == null) {
        try {
          final topAudio = data['audio'];
          if (topAudio is String) {
            base64Audio = topAudio;
          }
        } catch (_) {}
      }

      if (base64Audio == null || base64Audio.isEmpty) {
        print("❌ 未找到音频数据");
        return;
      }

      // ========= 写入临时文件播放(你能用的核心) =========
      final bytes = base64Decode(base64Audio);
      final tempDir = await getTemporaryDirectory();
      final file = File(
          '${tempDir.path}/tts_output_${DateTime.now().millisecondsSinceEpoch}.wav');
      await file.writeAsBytes(bytes);

      await player.setFilePath(file.path);
      await player.play();
      print("✅ 语音播放中");

      // 等待播放完成后释放
      await player.playerStateStream
          .firstWhere((s) => s.processingState == ProcessingState.completed);
      await player.dispose();
      if (await file.exists()) await file.delete();
    } catch (e) {
      print("❌ TTS异常:$e");
    }
  }

  // ====================== 智能回复(已加固)======================
  static Future<String> AIrep(String text) async {
    try {
      if (text.trim().isEmpty) return "请输入问题~";

      final body = jsonEncode({
        "model": "mimo-v2.5",
        "messages": [
          {"role": "system", "content": "你是一个智能助手,你的任务是回答用户的问题。"},
          {"role": "assistant", "content": "你好呀!暖心上线,是你的爱心小助手"},
          {"role": "user", "content": text},
        ],
      });

      final res = await http.post(
        Uri.parse('https://token-plan-cn.xiaomimimo.com/v1/chat/completions'),
        headers: {'api-key': apiKey, 'Content-Type': 'application/json'},
        body: body,
      );

      if (res.statusCode != 200) return "服务器繁忙,请稍后再试~";

      final data = jsonDecode(res.body);
      final reply = data['choices']?[0]?['message']?['content'] ?? "无法获取回复";
      return reply;
    } catch (e) {
      return "出错啦,请检查网络~";
    }
  }
}

python

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("MIMO_API_KEY"),
    base_url="https://api.xiaomimimo.com/v1"
)

completion = client.chat.completions.create(
    model="mimo-v2.5-pro",
    messages=[
        {
            "role": "system",
            "content": "You are MiMo, an AI assistant developed by Xiaomi. Today is date: Tuesday, December 16, 2025. Your knowledge cutoff date is December 2024."
        },
        {
            "role": "user",
            "content": "武汉明天天气怎么样?"
        }
    ],
    max_completion_tokens=1024,
    temperature=1.0,
    top_p=0.95,
    stream=False,
    stop=None,
    frequency_penalty=0,
    presence_penalty=0,
    extra_body={
        "thinking": {"type": "disabled"}
    },
    tools=[
        {
            "type": "web_search",
            "max_keyword": 3,
            "force_search": True,
            "limit": 1,
            "user_location": {
                "type": "approximate",
                "country": "China",
                "region": "Hubei",
                "city": "Wuhan"
            }
        }
    ],
    tool_choice="auto"
)

print(completion.model_dump_json())

响应实例

{
    "id": "d9cbdd74d5384247a3b9f03580901588",
    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "message": {
                "content": "根据搜索结果,武汉明天(2026年4月23日,周四)的天气情况如下:\\n\\n*   **天气状况**:白天为阴天,夜间转为晴天。\\n*   **气温范围**:最高气温18℃,最低气温10℃。\\n*   **风力风向**:北风,风力较小,为微风(风力小于3级)。\\n\\n**综合来看**,明天武汉白天阴天,夜间放晴,气温相比今天(4月22日)有所回升,但昼夜温差仍达8℃左右。建议您根据早晚和午后的温差,采用“洋葱式穿衣法”,方便随时增减衣物。明天无需携带雨具,适合进行户外活动。",
                "role": "assistant",
                "annotations": [
                    {
                        "type": "url_citation",
                        "url": "https://news.qq.com/rain/a/20260422A03GDF00",
                        "title": "小雨转晴再迎小雨!武汉未来三天阴晴交替,湿度大温差显_腾讯新闻",
                        "summary": "今天是2026年4月22日,武汉白天天气为小雨,北风微风,夜晚天气为多云,北风微风,最高气温15°C,最低气温11°C,空气湿度92%,体感温度9.5°C,空气质量优。雨天道路湿滑,出行请携带雨具,注意防滑,驾车保持安全车距。明日武汉天气为阴,微风,夜间晴,微风,最高气温18°C,最低气温10°C。未来三天,武汉天气以阴到多云为主,24日夜间转小雨,25日白天有小雨,气温逐步回升,最高气温从18°C升至25°C,最低气温从10°C升至13°C,昼夜风力均为微风。降雨时段需注意低洼路段可能短时积水,建议提前检查排水设施,避免涉水通行。近期武汉天气总体平稳,但阴雨相间,湿度偏高,体感偏凉;24日起气温明显回升,昼夜温差达11°C左右。建议采用洋葱式穿衣法,兼顾早晚清凉与午后温和;室内注意通风除湿,防范衣物、食品受潮霉变;雨天晾晒条件不佳,可优先使用烘干设备。此稿由AI生成(来源:极目新闻)",
                        "site_name": "腾讯网",
                        "publish_time": "2026-04-22T11:24:12+08:00",
                        "logo_url": "https://th.bochaai.com/favicon?domain_url=https://news.qq.com/rain/a/20260422A03GDF00"
                    },
                    {
                        "type": "url_citation",
                        "url": "https://bocha.cn/share/e79b4068-66c6-4f13-bae2-ecbd48336bc5",
                        "title": "2026年04月22日武汉天气预报",
                        "summary": "2026年04月22日武汉天气预报:\\n04/22 (周三):\\n天气:小雨转多云,温度:16/11°C,风向风力:北风<3级\\n04/23 (周四):\\n天气:阴转晴,温度:18/10°C,风向风力:北风<3级\\n04/24 (周五):\\n天气:小雨,温度:22/13°C,风向风力:北风<3级\\n04/25 (周六):\\n天气:多云转晴,温度:25/13°C,风向风力:北风<3级\\n04/26 (周日):\\n天气:多云转阴,温度:28/17°C,风向风力:北风<3级\\n04/27 (周一):\\n天气:阴转晴,温度:28/18°C,风向风力:北风<3级\\n04/28 (周二):\\n天气:多云转阴,温度:29/19°C,风向风力:北风<3级",
                        "site_name": "博查",
                        "publish_time": "2026-04-22T00:00:00+08:00",
                        "logo_url": "https://th.bochaai.com/favicon?domain_url=https://bocha.cn/share/e79b4068-66c6-4f13-bae2-ecbd48336bc5"
                    },
                    {
                        "type": "url_citation",
                        "url": "https://news.qq.com/rain/a/20260421A06R9300",
                        "title": "【明日天气预报】武汉2026年04月22日天气预报,小雨转多云,北风转北风<3级_腾讯新闻",
                        "summary": "武汉04月22日(周三)天气预报,天气现象小雨转多云,\\n风向风力:\\n北风转北风<3级。最高气温16°C摄氏度,最低气温11摄氏度。\\n感冒指数:\\n少发,\\n无明显降温,感冒机率较低。运动指数:\\n适宜,\\n天气较好,尽情感受运动的快乐吧。过敏指数:\\n易发,\\n应减少外出,外出需采取防护措施。穿衣指数:\\n较冷,\\n建议着厚外套加毛衣等服装。洗车指数:\\n较适宜,\\n无雨且风力较小,易保持清洁度。紫外线指数:\\n最弱,\\n辐射弱,涂擦SPF8-12防晒护肤品。\\n【来源:综合自中国气象局】\\n更多出行游玩、民生资讯、办事服务等精彩内容,欢迎下载九派新闻APP查看。声明:此文版权归原作者所有,若有来源错误或者侵犯您的合法权益,您可通过邮箱与我们取得联系,我们将及时进行处理。邮箱地址:jpbl@jp.jiupainews.com",
                        "site_name": "腾讯网",
                        "publish_time": "2026-04-21T19:32:10+08:00",
                        "logo_url": "https://th.bochaai.com/favicon?domain_url=https://news.qq.com/rain/a/20260421A06R9300"
                    }
                ],
                "tool_calls": null
            }
        }
    ],
    "created": 1776850783,
    "model": "mimo-v2.5-pro",
    "object": "chat.completion",
    "usage": {
        "completion_tokens": 204,
        "prompt_tokens": 2106,
        "total_tokens": 2310,
        "completion_tokens_details": {
            "reasoning_tokens": 0
        },
        "prompt_tokens_details": {
            "cached_tokens": 192
        },
        "web_search_usage": {
            "tool_usage": 3,
            "page_usage": 3
        }
    }
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇