MiniMax 音色克隆实操:小白从零复刻一个声音并评测
一、先看结论:两条路线选哪条
voice_id 参数。两条路线互不冲突,账号也可以分开。
二、原理 60 秒:你到底在做什么
MiniMax 的音色克隆是零样本(zero-shot)路线:不训练模型、不上传几小时录音,系统从你的 10 秒~5 分钟样本里提取"这个人的声音特征",绑定到一个你起名字的 voice_id 上。之后任何文本 + 这个 voice_id,就能用你的音色说话。
| 步骤 | 你做什么 | 系统做什么 | 产出 |
|---|---|---|---|
| ① 上传 | 交一段你的录音 | 存文件、做风控审核 | file_id(一串数字) |
| ② 复刻 | 给音色起个名字 | 提取声音特征并绑定 | voice_id(你的音色资产) |
| ③ 合成 | 发任意文本 + voice_id | 用你的音色朗读 | mp3 音频 |
三、第 0 步:录一段合格的样本(两条路线通用,成败在此)
官方硬性要求只有三条:mp3 / m4a / wav 格式、时长 10 秒~5 分钟、文件不超过 20MB。但"能通过"和"克隆得像"是两回事,下面是决定效果的软规范:
| 项目 | 要求 | 为什么 |
|---|---|---|
| 环境 | 安静房间,关空调/风扇,远离窗户 | 底噪和混响会被当成"你声音的一部分"克隆进去 |
| 时长 | 20~60 秒最稳(10 秒是底线不是目标) | 零样本路线 30 秒后收益递减,5 分钟不会更像 |
| 内容 | 正常语速朗读一段完整的话,情绪平稳 | 克隆会连语气一起学;念得夸张,合成就夸张 |
| 单人 | 只有你一个人的声音,无 BGM 无对话 | 多人声音会让特征提取混淆 |
| 设备 | 手机备忘录/录音 App 即可(m4a 直接可用) | 不需要专业麦;手机离嘴 20~30cm 防喷麦 |
没词可念?直接用这段(约 30 秒,故意覆盖数字、疑问、陈述三种语气):
大家好,我平时喜欢在周末去公园散步,顺便买一杯三十五块钱的手冲咖啡。
你要问我为什么喜欢这样安排?其实很简单,安静的早晨能让人想清楚很多事情。
今天是七月三十号,天气不错,希望你听到这段声音的时候,心情也一样好。四、路线 A:网页版 MiniMax Audio(零代码,10 分钟)
MiniMax 把克隆做成了网页产品 MiniMax Audio:国内入口 minimaxi.com/audio,国际版 minimax.io/audio(界面为英文,注册送免费积分)。两边功能一致:语音合成、音色库、声音克隆(Voice Clone)、音色设计、人声提取。
-
注册并登录
手机号或邮箱注册即可,登录后会送免费积分(额度以页面提示为准),玩克隆 + 合成基本够。
-
进入声音克隆入口
在左侧栏找到「声音克隆」(国际版是 Voices → Create Your Voice Clone)。UI 文案随版本会微调,认准"克隆/Clone"字样即可。
-
上传或现场录音
两种方式二选一:上传文件(把第 0 步录好的 m4a/mp3/wav 拖进去)或在线录音(对着页面念第 0 步的朗读文本,10 秒以上)。
-
给音色命名并提交
起个认得出的名字(比如"我的声音-0730")。提交后秒~分钟级就会出现在你的音色列表里。
-
用克隆音色合成第一句话
回到「语音合成」页,输入任意文本,音色选择器里挑刚才的克隆音色,点生成 → 试听 → 下载 mp3。到这一步你已经完成了一次完整的音色复刻。
五、路线 B:开放平台 API(3 个接口跑通全流程)
5.1 准备:账号、认证、API Key
-
注册开放平台并完成实名认证
入口 platform.minimaxi.com。注册后务必完成个人或企业认证——这是官方硬门槛,没认证调复刻接口会报错
2038 无复刻权限。 -
充值一点余额
按量计费,充 20 元足够本教程全程(明细见第七章账单)。余额不足报错
1008。 -
创建 API Key
控制台「账户管理 → 接口密钥」新建一个 Key,复制保存。终端里先设成环境变量,后面命令直接引用:
$ export MINIMAX_KEY="粘贴你的APIKey"
5.2 第 1 步:上传样本音频 → 拿到 file_id
$ curl -s https://api.minimaxi.com/v1/files/upload \ -H "Authorization: Bearer $MINIMAX_KEY" \ -F purpose=voice_clone \ -F file=@sample.m4a # 返回(记下 file_id 这串数字): {"file":{"file_id":312690747959545,"bytes":512340,"purpose":"voice_clone",...}, "base_resp":{"status_code":0,"status_msg":"success"}}
5.3 第 2 步:复刻 → 拿到 voice_id(顺便免费到位试听)
voice_id 由你自己起名,规则:8~256 位、首字符必须是英文字母、只能含字母数字和 - _、末位不能是 - _、不能与已有重复。带上 text + model 两个参数可以让它顺手合成一段试听(按 2 元/万字符的试听价计费,不触发 9.9 元音色费):
$ curl -s https://api.minimaxi.com/v1/voice_clone \ -H "Authorization: Bearer $MINIMAX_KEY" \ -H "Content-Type: application/json" \ -d '{ "file_id": 312690747959545, "voice_id": "MyVoice20260730", "text": "你好,这是我的克隆音色试听,听听像不像我本人。", "model": "speech-2.8-hd", "need_noise_reduction": true, "need_volume_normalization": true }' # 返回里 demo_audio 是试听音频链接,浏览器打开直接听: {"input_sensitive":false, "demo_audio":"https://.../demo_xxx.mp3", "extra_info":{"audio_length":4830,"usage_characters":22,...}, "base_resp":{"status_code":0,"status_msg":"success"}}
need_noise_reduction: true——样本不是录音棚出品就开着;② need_volume_normalization: true——音量归一化,防止样本忽大忽小;③ text_validation(填你录音念的原文)+ accuracy(默认 0.7)——让服务端用 ASR 校验"你传的音频确实念了这段话",传错文件立刻报 1043 拦下来,不浪费钱。
5.4 第 3 步:用 voice_id 正式合成(此刻扣 9.9 元音色费)
$ curl -s https://api.minimaxi.com/v1/t2a_v2 \ -H "Authorization: Bearer $MINIMAX_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "speech-2.8-hd", "text": "您好,我是您的专属助理,本月账单已经生成,共消费三百二十一元。", "output_format": "url", "voice_setting": { "voice_id": "MyVoice20260730", "speed": 1.0 } }' # 返回 data.audio 是 mp3 链接(24 小时有效),下载保存: {"data":{"audio":"https://.../xxx.mp3",...}, "extra_info":{"usage_characters":30,...}, "base_resp":{"status_code":0}}
到这里全流程已通。日常管理还有两个接口:查询名下音色 POST /v1/get_voice(注意:复刻音色要成功合成过一次才查得到)、删除音色 POST /v1/delete_voice(删了 voice_id 永久作废,不能重建同名)。
5.5 一键脚本版(Python,复制即用)
import os, requests
KEY = os.environ["MINIMAX_KEY"] # export MINIMAX_KEY=xxx
BASE = "https://api.minimaxi.com"
H = {"Authorization": f"Bearer {KEY}"}
# ① 上传样本 → file_id
up = requests.post(f"{BASE}/v1/files/upload", headers=H,
data={"purpose": "voice_clone"},
files={"file": open("sample.m4a", "rb")}).json()
file_id = up["file"]["file_id"]
print("file_id =", file_id)
# ② 复刻 → voice_id(带试听)
clone = requests.post(f"{BASE}/v1/voice_clone", headers=H, json={
"file_id": file_id,
"voice_id": "MyVoice20260730",
"text": "你好,这是我的克隆音色试听。",
"model": "speech-2.8-hd",
"need_noise_reduction": True,
"need_volume_normalization": True,
}).json()
print("试听链接 =", clone.get("demo_audio"))
# ③ 正式合成 → 下载 mp3(首次调用扣 9.9 元音色费)
tts = requests.post(f"{BASE}/v1/t2a_v2", headers=H, json={
"model": "speech-2.8-hd",
"text": "您好,我是您的专属助理,本月账单已经生成。",
"output_format": "url",
"voice_setting": {"voice_id": "MyVoice20260730", "speed": 1.0},
}).json()
url = tts["data"]["audio"]
open("cloned_output.mp3", "wb").write(requests.get(url).content)
print("已保存 cloned_output.mp3")六、评测三级跳:克隆得像不像,怎么量出来
行业标准口径是两个数:SIM(声纹相似度,像不像你)和 WER(词错误率,说得清不清楚)。小白按下面三级逐步来,每一级都比上一级客观:
Level 1 · 盲听 ABX(零工具,5 分钟,最有说服力)
- 备料
准备 3 段音频:A = 你的真实录音(不要用做克隆的那段,重录一句新的)、B = 克隆音色合成的同一句话、X = 随机从 A/B 里挑一段。
- 考家人
让家人/朋友听 X,判断是真人还是 AI。10 次里对半猜(5 次左右)= 克隆非常成功;10 次全被识破 = 回第 0 步换样本重录。
- 自查短板
被识破时追问一句"哪里不像"——通常答案集中在:语气太平(样本情绪单一)、尾音发飘(样本太短)、有电音(样本底噪大)。对症回炉。
Level 2 · WER 可懂度(一条命令级)
思路:拿一段已知文本让克隆音色合成,再丢给 ASR 转写,对比差多少字。差得越少说明合成越清晰。用 OpenAI 开源的 whisper 最省事(读 mp3 依赖 ffmpeg,先 brew install ffmpeg):
$ pip3 install openai-whisper jiwer $ python3 - <<'EOF' import whisper, jiwer ref = "您好我是您的专属助理本月账单已经生成" # 合成时用的原文(去标点) m = whisper.load_model("small") hyp = m.transcribe("cloned_output.mp3", language="zh")["text"] hyp = "".join(c for c in hyp if c.strip() and c not in ",。!?、") print("转写:", hyp) print("CER = %.1f%%" % (jiwer.cer(ref, hyp) * 100)) # 中文用字错误率 CER EOF 转写: 您好我是您的专属助理本月账单已经生成 CER = 0.0% # 经验线:<3% 可用,<1.5% 优秀,>8% 说明合成含混
Level 3 · SIM 声纹相似度(进阶,需要下载模型)
思路:用说话人验证模型分别给“你的真实录音”和“克隆合成音频”提取声纹向量,算余弦相似度。用 speechbrain 的 ECAPA 模型三行搞定(mp3 读不了就先转 wav:ffmpeg -i cloned_output.mp3 cloned_output.wav):
$ pip3 install speechbrain torchaudio $ python3 - <<'EOF' from speechbrain.inference.speaker import SpeakerRecognition sv = SpeakerRecognition.from_hparams("speechbrain/spkrec-ecapa-voxceleb", savedir="./sv_model") score, same = sv.verify_files("real_new.wav", "cloned_output.mp3") print("SIM = %.3f 同一人判定 = %s" % (score, bool(same))) EOF SIM = 0.712 同一人判定 = True # 经验线:>0.5 判同人,>0.7 相似度优秀
七、费用账单:全程到底花多少钱
| 项目 | 价格 | 什么时候扣 | 本教程用量 | 小计 |
|---|---|---|---|---|
| 上传音频 / 复刻接口 | 免费 | — | 1 次 | 0 元 |
| 复刻试听(text 参数) | 2 元/万字符 | 调 voice_clone 带 text 时 | 约 25 字符 | ≈ 0.005 元 |
| 音色费 | 9.9 元/个 | 首次用该 voice_id 正式合成时 | 1 个 | 9.9 元 |
| 正式合成(speech-2.8-hd) | 约 3.5 元/万字符 | 每次调 t2a_v2 | 约 100 字符 | ≈ 0.035 元 |
| 合计 | ≈ 10 元 | |||
价格为 2026-07 检索快照(官方按量计费页 + 阿里云百炼代理页交叉核对),以 官方价目 ↗ 实时为准。批量场景可看语音资源包:HD 包内赠送快速克隆音色额度(如 700 元包 200 万字符送 10 个克隆音色)。
八、踩坑清单:8 个新手必中的坑
| # | 坑 | 现象 | 解法 |
|---|---|---|---|
| 1 | 没实名认证就调复刻 | 报错 2038 无复刻权限 | 先在控制台完成个人/企业认证,这是硬门槛 |
| 2 | 7 天不用,音色被回收 | voice_id 突然 404 / 无效 | 官方规则:复刻后 7 天内未正式调用即删除。试听不算"正式调用",要用 t2a_v2 真合成一次才转正 |
| 3 | voice_id 起名不合规 | 报错 2013 输入格式信息不正常 | 8~256 位、首字符英文字母、只含字母数字 - _、末位不能是 - _ |
| 4 | 样本不够 10 秒 / 超 20MB | 上传或复刻被拒 | 10 秒是下限,20~60 秒最稳;5 分钟/20MB 是上限 |
| 5 | 传错音频文件没发现 | 克隆出来完全不像,钱白花 | 复刻时带 text_validation(录音原文),服务端 ASR 校验不匹配直接报 1043 拦截 |
| 6 | 样本命中风控 | 返回 input_sensitive 非 0 | 样本内容涉敏感词/违规会被拒,换一段中性朗读文本重录 |
| 7 | 把试听链接当永久文件 | 过几天链接失效 | demo_audio 和 output_format=url 的链接都是临时的(url 24 小时),要长存就立刻下载落盘 |
| 8 | 网页版音色想给 API 用 | 找不到对应 voice_id | MiniMax Audio(网页产品)和开放平台是两套体系,API 要用就在开放平台重新复刻 |
九、合规三句话(做之前必读)
- 只克隆自己的声音,或拿到书面授权
《民法典》第 1023 条把声音参照肖像权保护,2024 年北京互联网法院"AI 声音侵权第一案"已判赔 25 万元。克隆别人(包括家人)先拿授权。
- 合成内容要标识
《人工智能生成合成内容标识办法》2025-09-01 起施行:对外发布的合成语音需加显式提示;API 里的
aigc_watermark参数可在音频末尾加节奏标识,对外场景建议开启。 - 别拿克隆声音做冒充
冒充他人身份打电话/发语音属违法红线;平台风控(
input_sensitive)也会拦截违规内容。
原理与行业全景(三条技术路线、厂商横评、安全攻防)见调研中心 TTS 音色克隆全景调研 ↗。