b0b2e922d3
Public users share one server TTS key, so Xiaomi's per-key RPM/TPM limits
cause silent playback under concurrency. This adds an OPTIONAL path: a user
can store their own Xiaomi MiMo key in the browser and synthesize voice
client-side against Xiaomi's CORS-open endpoints. The key lives only in
localStorage and is never sent to or logged by our server; the shared server
key still serves everyone who does not opt in.
- components/TtsKeyModal.tsx: shared key modal (key-family + region picker),
reused by both the home and play pages
- app/play/page.tsx: silence nudge moved beside the mute toggle; modal opens
in place instead of redirecting to the home page
- app/page.tsx: home page consumes the shared modal + readStoredTtsConfig
- lib/clientTtsConfig.ts, lib/ttsPresets.ts: browser config + region presets
- app/api/{start,scene,insert-beat}: thread per-request voice; lib/types update
- docs/xiaomi-tts-key.md + README note
Verified with tsc --noEmit (exit 0).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
101 lines
5.1 KiB
Markdown
101 lines
5.1 KiB
Markdown
# 自带配音 Key 教程(小米 MiMo TTS)
|
||
|
||
InfiPlot 的角色配音由小米 **MiMo-V2.5-TTS** 模型实时合成。本页教你免费申请一个属于自己的 API Key,
|
||
填进 InfiPlot 后即可获得**稳定的配音、更低的延迟**——而且这个 Key **只存在你的浏览器里,绝不会经过我们的服务器**。
|
||
|
||
> 本教程随仓库维护,链接长期有效。
|
||
|
||
---
|
||
|
||
## 为什么需要自带 Key?
|
||
|
||
InfiPlot 默认用一把**公共的服务器 Key** 给所有人配音。小米对语音模型按 **RPM(每分钟请求数)/ TPM(每分钟 Token 数)** 做了限额,而且这个额度并不高。当很多人**同时**游玩时,公共 Key 很容易撞到限额,结果就是——
|
||
|
||
- 剧情、画面都正常,**唯独没有声音**(静音);
|
||
- 或者配音偶尔断断续续、要等很久。
|
||
|
||
填入你**自己的**免费 Key 后,你用的是自己独立的额度,不再和其他人抢,于是:
|
||
|
||
- ✅ **配音稳定**,不再随机静音;
|
||
- ✅ **延迟更低**(可就近选区域,少一跳);
|
||
- ✅ **完全免费**——MiMo-V2.5-TTS 目前限时 **0x 计费**,不消耗套餐额度。
|
||
|
||
这是一个**可选增强**。不填也能正常玩,只是高峰期更容易遇到静音。
|
||
|
||
---
|
||
|
||
## 一、免费申请 API Key
|
||
|
||
1. 打开小米 MiMo 开放平台并注册 / 登录:<https://platform.xiaomimimo.com>
|
||
- 注册即可领取免费额度(Token Plan)。
|
||
2. 进入**控制台 → 套餐管理**:<https://platform.xiaomimimo.com/console/plan-manage>
|
||
3. 在该页面找到并**复制你的专属 API Key**。
|
||
- 套餐 Key 形如 `tp-xxxxxxxx`;按量 Key 形如 `sk-xxxxxxxx`。两者相互独立、不能混用,**任选一个有效的即可**。
|
||
- 妥善保管,**不要公开分享**这把 Key。
|
||
|
||
> MiMo-V2.5-TTS 系列当前为限时 **0x 计费**(不消耗套餐 Credits),所以配音这件事基本是免费的。具体以平台公告为准。
|
||
|
||
---
|
||
|
||
## 二、选择 Key 类型(套餐再选区域)
|
||
|
||
小米有**两类 Key**,对应不同的端点。在 InfiPlot 里**先选类型**——看 Key 前缀就能判断:`tp-` 是套餐、`sk-` 是按量,两者不能混用。
|
||
|
||
**① 套餐 Token Plan(`tp-` 开头)** —— 再选一个**区域节点**,对应小米不同地区的 Token Plan:
|
||
|
||
| 区域 | 说明 | 端点 |
|
||
| --- | --- | --- |
|
||
| 新加坡 · Singapore | 亚太地区推荐 | `https://token-plan-sgp.xiaomimimo.com/v1` |
|
||
| 中国大陆 · China | 中国大陆推荐 | `https://token-plan-cn.xiaomimimo.com/v1` |
|
||
| 欧洲 · Amsterdam | 欧洲推荐 | `https://token-plan-ams.xiaomimimo.com/v1` |
|
||
|
||
选**离你最近**、且**与你套餐订阅区域一致**的那个——延迟最低、最不容易出错。一般跟着你注册时的区域走即可。
|
||
|
||
**② 按量付费 Pay-as-you-go(`sk-` 开头)** —— 使用统一端点 `https://api.xiaomimimo.com/v1`,**无需选择区域**。
|
||
|
||
---
|
||
|
||
## 三、在 InfiPlot 里填写
|
||
|
||
1. 回到 InfiPlot **首页**,在选项区下方点击 **「经常没声音?自带配音 Key(可选)」**。
|
||
2. 在弹窗里:
|
||
- **选择 Key 类型**(套餐 / 按量);选「套餐」时再**选区域**,选「按量」则无需选区域;
|
||
- **粘贴你的 API Key**;
|
||
3. 点击 **「保存并启用」**。按钮会变成 **「自带配音 Key · 已启用」**,「语音配音」也会自动切到「开启」。
|
||
4. 开始游玩——配音将由你的浏览器**直连小米**完成。
|
||
|
||
想停用时,再次打开弹窗点击 **「停用并清除」** 即可,本地保存的 Key 会被一并删除。
|
||
|
||
---
|
||
|
||
## 四、隐私说明
|
||
|
||
- 你的 API Key **只保存在你当前浏览器的 `localStorage`**(键名 `infiplot:tts`)里。
|
||
- 启用后,配音请求由**你的浏览器直接发给小米**对应的端点,携带你的 Key。
|
||
- 我们的服务器**完全不参与**这条链路,**既看不到也不会记录**你的 Key。
|
||
- 换设备 / 换浏览器 / 清缓存后需要重新填写,这是预期行为。
|
||
|
||
---
|
||
|
||
## 五、常见问题
|
||
|
||
**Q:填了 Key 还是没声音?**
|
||
- 确认「语音配音」是「开启」状态;
|
||
- 确认 **Key 类型选对了**:`tp-` 选「套餐」、`sk-` 选「按量付费」,选错端点会一直失败;
|
||
- 确认 Key 没填错、没多余空格,且仍有额度;
|
||
- 套餐 Key 可换一个**区域**试试(区域与订阅地不匹配也可能失败);
|
||
- 打开浏览器开发者工具的 Network 面板,看对 `*.xiaomimimo.com` 的请求返回了什么错误。
|
||
|
||
**Q:会产生费用吗?**
|
||
- MiMo-V2.5-TTS 当前限时 0x 计费,正常游玩配音不消耗套餐额度。最终以小米平台的计费公告为准。
|
||
|
||
**Q:`tp-` 和 `sk-` 用哪个?**
|
||
- 看你手里是哪种 Key 就选哪种类型——`tp-` 选「套餐 Token Plan」、`sk-` 选「按量付费」。两者不能混用,选错端点会鉴权失败。
|
||
|
||
**Q:我的 Key 安全吗?**
|
||
- 安全。它只存在你本地浏览器、只发给小米官方端点,不经过 InfiPlot 服务器。但请勿把 Key 贴到公开场合或分享给他人。
|
||
|
||
---
|
||
|
||
有问题欢迎在 [GitHub Issues](https://github.com/zonghaoyuan/infiplot/issues) 反馈。
|