# AI 声音克隆：原理、同意的含义，以及该用哪些模型

> 声音克隆，是根据一小段录音做出一个听起来像真人的合成声音。XTTS-v2 和 Chatterbox 这类开源模型，用一小段参考片段就能工作（XTTS-v2 的模型卡说约 6 秒），而 OpenAI 要求先录一句同意声明，并且只向符合条件的客户开放录音声音。只克隆你自己的声音，或者声音主人同意的声音，并告诉听众这段音频是合成的。

Mindket 编辑部 · 发布于 2026-11-06 · 更新于 2026-11-06 · https://mindket.com/cn/learn/ai-voice-music/voice-cloning

## 要点

- 不需要复制某个具体的人时，就用文字描述一个声音。
- 录一段干净的样本，而且只录你自己的声音，或者声音主人同意的声音。
- 卖出模型生成的内容之前，先读它权重的许可。
- 文件里的水印要保留，并把这段音频标成合成的。
- 溯源检查没查到信号，只是没有答案，不是一个“是”。

## 开始之前

**声音克隆**，是做出一个听起来像某个具体的人的合成声音。下面的开源模型示例里没有训练这一步：你给它一小段**参考片段**和新的文字，它就用这个声音把文字念出来。Chatterbox 的 README 把这叫作**零样本**（zero-shot）。[文字转语音那一课](https://mindket.com/cn/learn/ai-voice-music/text-to-speech)讲怎样选内置音色，这一课从那里接着往下讲。

有两种东西都被叫作自定义声音。**描述出来的声音**由一段文字描述生成，没有谁被复制。**克隆出来的声音**由一个真人的录音生成，所以它就是那个人的声音肖像，这一课所有的规则都是从这一点来的。下面的步骤里，托管路线需要一个 OpenAI API 密钥，开源模型需要 Python。

## 不需要录音：用文字描述一个声音

OpenAI 的 prompt-to-voice 根据一段描述创建并保存一个声音，不需要参考录音，也不需要同意录音。它向所有 API 客户开放。保存下来的声音可以用在 GPT-Live 里，指南说它不支持文字转语音、Realtime 和 Chat Completions 这几个 API。创建一个不收费，在 GPT-Live 里使用它，按普通会话的费率计费。

你描述的是特质，不是某个人。指南列了九项，它们是写在提示词里的话，不是单独的 API 参数。指南还说，不要要求模仿某个具名的人、公众人物或虚构角色，也不允许儿童的声音。

````bash
curl --fail-with-body https://api.openai.com/v1/audio/voices \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "prompt",
    "name": "Support assistant",
    "prompt": "A calm, reassuring adult voice for a customer support assistant. Speak with an American English accent, a mid-range pitch, a smooth, warm tone, and a steady, conversational pace.",
    "model": "auto"
  }' \
  -o voice.json
````

1. 照下面表格里的特质，用平常的话写一段描述。
2. 发送上面的请求。每个成功的请求都会保存一个新声音，并返回它的元数据，其中有一个像 `voice_123` 这样的 `id`，不带音频，也没有试听。
3. 保留这个 `id` 和原来的描述。指南说，想在另一次会话里用同一个声音，就复用保存下来的声音。
4. 在 GPT-Live 会话里试听，把 `session.audio.output.voice.id` 设成这个 `id`。为了让声音表现更好，指南说还要把这段描述放进 `session.instructions`。
5. 每次只改一项特质，用同一小段文字做对比。

| 特质 | 要描述什么 | 示例写法 |
| --- | --- | --- |
| Accent 口音 | 地区发音和口音的强弱 | American English, with a strong accent |
| Age 年龄 | 听起来的年龄 | An adult in their 30s |
| Presentation 性别呈现 | 声音给人的性别印象 | Feminine |
| Pitch 音高 | 声音听起来偏低还是偏高 | Mid-range pitch |
| Timbre 音色 | 声音的质地 | Smooth and rich |
| Texture 质感 | 沙哑、嘶哑或清亮 | Smooth |
| Loudness 用力程度 | 发声的力度 | Moderate vocal effort |
| Speech rate 语速 | 说话有多快 | Medium pace |
| Distinctiveness 辨识度 | 这个声音的个人特色要有多突出 | Moderately distinctive |

## 用录音克隆声音：OpenAI 的同意流程

用录音生成声音，只向符合条件的客户开放。指南说要联系 OpenAI 的销售团队，组织开通之后，Audio 下面会出现 Voices 标签页。它需要同一个人的两段独立录音：一段是同意录音，说话人读一句固定的声明，另一段是样本录音，模型会尽力复制它。

指南列出了 16 种语言的声明，包括中文，并提醒，只要和台词有任何出入，上传就会失败。同一个说话人做不止一个声音时，同一份同意可以重复使用。英文声明是这样的：“I am the owner of this voice and I consent to OpenAI using this voice to create a synthetic voice model.”

**指南写明的限制**

- **60 s** 录音声音的样本，OpenAI 最长接受的时长 (来源：[OpenAI API docs: Custom voices](https://developers.openai.com/api/docs/guides/custom-voices), 2026-11-06 查阅)
- **20** 一个组织最多能创建的录音声音数量 (来源：[OpenAI API docs: Custom voices](https://developers.openai.com/api/docs/guides/custom-voices), 2026-11-06 查阅)
- **100** 一个组织最多能保存的描述声音数量，你的应用替客户创建的声音也算在内 (来源：[OpenAI API docs: Custom voices](https://developers.openai.com/api/docs/guides/custom-voices), 2026-11-06 查阅)

````bash
curl https://api.openai.com/v1/audio/voice_consents \
  -X POST \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F "name=test_consent" \
  -F "language=en" \
  -F "recording=@$HOME/tmp/voice_consent/consent_recording.wav;type=audio/x-wav"

curl https://api.openai.com/v1/audio/voices \
  -X POST \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F "name=test_voice" \
  -F "audio_sample=@$HOME/tmp/voice_consent/audio_sample_recording.wav;type=audio/x-wav" \
  -F "consent=cons_123abc"
````

1. 先获得权限。没有权限，声音相关的接口会返回错误，比如 404。
2. 在安静的房间里，原样录下那句同意声明。
3. 带上名称和语言，把它上传到 `/v1/audio/voice_consents`。返回的内容里有一个同意 ID。
4. 录样本，不超过 60 秒，格式可以是 mpeg、wav、ogg、aac、flac、webm 或 mp4。
5. 用样本和同意 ID，在 `/v1/audio/voices` 创建声音。
6. 在 Realtime 会话里用 `gpt-realtime-2.1-mini`，或者在 GPT-Live 里，使用这个声音的 ID。要在开始时就选好，因为换一个声音需要开一个新会话。

## 样本该是什么样

指南说，质量取决于样本，并给出了录音建议：安静、回声小的空间，专业的 XLR 麦克风，离麦克风大约 7 到 8 英寸，中间加防喷罩，全程保持同样的距离。模型会原样复制它听到的东西，包括语气、节奏、精力、停顿和习惯，所以要录你希望克隆声音拥有的那种声音。样本里精力或口音忽高忽低，结果里也会忽高忽低。

开源模型给的建议少一些。Chatterbox 的 README 提醒，参考片段的语言和目标语言不同，会把口音带过去，并建议把 `cfg_weight` 设成 `0` 来减轻。XTTS-v2 的模型卡给出的片段长度是 6 秒。上面的建议出自 OpenAI 的指南，不过安静的房间和平稳的语气不花什么成本，录任何片段时都值得保留。

## 在自己的电脑上用开源模型克隆

开源模型不需要审批，也不会把东西发给哪家厂商，但同样没有同意这一步，所以责任在你身上。F5-TTS 有一个简单的命令行。它接受一段参考录音，如果有的话，再加上这段录音里说的话，然后用这个声音念新的文字。把参考文字留空，就由一个 ASR 模型来转写这段录音，代价是多占一些 GPU 内存。

Chatterbox 通过 Python 做同样的事：`model.generate(text, audio_prompt_path="your_10s_ref_clip.wav")`，README 示例里的文件名写着 10 秒，但 README 没有写明时长。它的 README 说，这个项目在 2026 年 8 月退役，不再维护，代码作为存档继续公开。权重的许可之间的差别，比命令之间的差别更大。

````bash
pip install f5-tts

# Leave --ref_text "" will have ASR model transcribe (extra GPU memory usage)
f5-tts_infer-cli --model F5TTS_v1_Base \
--ref_audio "provide_prompt_wav_path_here.wav" \
--ref_text "The content, subtitle or transcription of reference audio." \
--gen_text "Some text you want TTS model generate for you."
````

**三个能用一段录音克隆声音的开源模型**

| | XTTS-v2 | Chatterbox | F5-TTS |
| --- | --- | --- | --- |
| 需要你提供什么 | 约 6 秒的片段 | 一小段录音，README 没写时长（示例文件名里写着 10s） | 一段参考录音，可选再加上它的文字 |
| 语言 | 17 种 | Multilingual V3 支持 23 种以上 | Emilia 中英文模型，更多语言靠自定义推理 |
| 权重的许可 | Coqui Public Model License | MIT，见它的 Hugging Face 模型卡 | CC-BY-NC，非商业 |
| 能在自己的电脑上运行 | ✓ 是 | ✓ 是 | ✓ 是 |
| 是否给生成内容打标记 | 模型卡没有写 | 有，每个文件都带 PerTh 水印 | README 没有写 |

来源：[Hugging Face: coqui/XTTS-v2 model card](https://huggingface.co/coqui/XTTS-v2) (2026-11-06 查阅)；[GitHub: resemble-ai/chatterbox README](https://github.com/resemble-ai/chatterbox) (2026-11-06 查阅)；[Hugging Face: ResembleAI/chatterbox model card](https://huggingface.co/ResembleAI/chatterbox) (2026-11-06 查阅)；[GitHub: SWivid/F5-TTS README](https://github.com/SWivid/F5-TTS) (2026-11-06 查阅)

## 克隆任何声音之前要守的规则

关于一个人的声音，法律因国家和州而异，这一课不讲法律。发布或出售克隆出来的音频之前，请先问律师。厂商自己定的规则更容易读懂。OpenAI 的页面把其中三条反复讲，拿来当任何克隆的底线都合适：说话人同意，不冒充任何人，告诉听众。

OpenAI 在 prompt-to-voice 下面的“负责任使用”清单里说了这几条。负责任地使用声音，不要冒充他人，使用成年人的声音。告诉听众这段语音是 AI 生成的，同时保留任何溯源元数据或水印。它还说，声音不保证是独一无二的，因为别人可能生成相似的声音。指南把这份清单印在描述声音那一节下面。对录音声音，它要求同意录音，并指向 Text-to-Speech Supplemental Agreement 看更多条款，所以让录音声音也照着整份清单做，是这一课的建议，不是指南在那里印出的话。

> 把说话人的书面同意放在音频文件旁边，并在简介里写一句话，说明这个声音是合成的。

| 谁 | 它的要求或做法 |
| --- | --- |
| OpenAI，录音声音 | 说话人的同意录音，读的是一句固定的声明，样本要来自同一个人。指南指向它的 Text-to-Speech Supplemental Agreement 看更多条款 |
| OpenAI，描述声音 | 它的“负责任使用”清单要求成年人的声音、不得冒充、说明语音由 AI 生成，并保留溯源信号。它的提示词建议说，不要要求具名的人、公众人物或虚构角色 |
| Chatterbox | 每个文件都带 PerTh 水印，README 要求你不要用这个模型做坏事 |
| Kokoro | 它的模型卡说，训练中没有用开源 TTS 模型或“custom voice clones”（自定义声音克隆）生成的合成音频，这说的是它的训练数据，不是这个模型能做什么 |
| XTTS-v2 和 F5-TTS | 它们的页面给权重定了许可，没有提到同意，所以这份责任仍在你身上 |

## 检查一段音频，以及干净的结果意味着什么

OpenAI 的 Content Provenance API 会检查一个图片或音频文件里有没有它自己的溯源信号。把文件发给 `POST /v1/content_provenance_checks`，或者用 openai.com/verify 的网页工具。对音频来说，这个信号是 SynthID，一种嵌在音频本身里的水印，经过一些编辑后可能还在。C2PA Content Credentials 是图片上的签名元数据，编辑、转换或分享文件都可能把它去掉。

`not_detected` 的意思是工具没有找到支持的信号。如果元数据被去掉了、水印被削弱了、音频来自旧模型，或者早于这些信号出现，这段音频仍然可能出自 OpenAI。这个工具也检测不出其他公司的模型，页面还说它不是通用的 AI 检测器。Chatterbox 自己的水印有单独的检查办法：它的 README 给了一段短脚本，先用 `perth.PerthImplicitWatermarker()`，再调用 `get_watermark`，带水印的音频返回 1.0，没有则返回 0.0。

| 信号 | 适用于 | 检查什么 |
| --- | --- | --- |
| C2PA Content Credentials | 图片 | 带签发者和 AI 使用信息的签名元数据 |
| SynthID | 图片和音频 | 直接嵌在受支持媒体里的水印 |

## 常见错误

- 因为工具没要求同意，就在没有说话人同意的情况下克隆声音。
- 凭记忆念同意声明。和台词有任何出入，OpenAI 都会拒绝。
- 在嘈杂或有回声的房间里录样本，或者用和想要的不一样的状态去录，因为模型两样都会复制。
- 把 F5-TTS 的 CC-BY-NC 权重用在收费的工作上。
- 参考片段用一种语言，目标文字用另一种，然后奇怪口音是怎么回事。
- 把 `not_detected` 当成这段音频是真人的证明。
- 以为描述出来的声音能在文字转语音 API 里用，而指南把它限定在 GPT-Live。

## 动手试试

- 给一个声音写一段描述，用九项特质里的三项，再改其中一项，看看哪里变了。
- 读一遍上面的 F5-TTS 命令和 Chatterbox 那一行，写下这两个权重里，哪一个可以用在收费项目里。
- 在安静的房间里录一小段你自己的声音，用开源模型克隆它，再把结果标注为合成的。
- 用 openai.com/verify 的网页工具检查一小段音频，记下 `not_detected` 的结果能说明什么、不能说明什么。

## 下一课：AI 音乐

声音念出来的是话。[AI 音乐](https://mindket.com/cn/learn/ai-voice-music/ai-music)则把一种风格和几句歌词变成一整首歌，它也有自己的授权问题：模型、托管工具，以及你能发布什么。

## 自测一下

1. 在 OpenAI 用录音生成声音之前，说话人必须做什么？

   A. 签一份纸质表格
   B. 在单独的一段录音里读一句固定的同意声明
   C. 录 5 分钟的语音
   D. 上传一张身份证照片

   答案：B。 指南要求有一段同意录音，说话人在里面读它给的某一句声明，并说只要和台词有任何出入就会失败。

2. XTTS-v2 的模型卡说，多长的片段就足够克隆一个声音？

   A. 大约 60 秒
   B. 大约 30 分钟
   C. 大约 6 秒
   D. 整整一小时

   答案：C。 模型卡说，它用一段 6 秒的音频，就能把声音克隆到不同的语言里，不需要几个小时的数据。

3. 关于 F5-TTS，下面哪句话是对的？

   A. 它的预训练模型是 CC-BY-NC，属于非商业许可
   B. 它的权重是 MIT 许可
   C. 它给每个文件加 PerTh 水印
   D. 它需要 OpenAI 的批准

   答案：A。 它的 README 把代码放在 MIT 之下，但因为 Emilia 训练数据，预训练模型采用 CC-BY-NC 许可。

4. OpenAI 的溯源检查对一段音频返回了 not_detected。这说明什么？

   A. 这段音频是真人的
   B. 这段音频可以放心发布
   C. 这段音频来自另一家公司
   D. 只说明没有找到受支持的信号

   答案：D。 页面说，元数据被去掉、水印被削弱、旧模型或其他公司的模型，都可能返回 not_detected。

## 常见问题

### AI 能用几秒钟的音频克隆我的声音吗？

部分开源模型可以。XTTS-v2 的模型卡说，一段 6 秒的短音频就能克隆，Chatterbox 的 README 把示例文件命名为 your_10s_ref_clip.wav，没有写明时长。OpenAI 对录音声音最长接受 60 秒，它的指南说，样本的质量决定声音的质量。

### 克隆别人的声音合法吗？

这取决于你住在哪里，以及克隆出来的声音怎么用，这一课不提供法律意见。厂商的要求要清楚得多。对录音声音，OpenAI 要求有说话人的同意录音；它对描述声音的“负责任使用”清单说只限成年人的声音、不得冒充。所以先取得说话人的同意。

### 可以克隆名人的声音吗？

用 OpenAI 的自定义声音不行。它的指南说不要冒充他人，对描述出来的声音，不要要求模仿具名的人、公众人物或虚构角色。录音声音也需要那个人自己的同意录音。开源模型的页面里没有这样的把关，所以决定要由你自己来做。

### 哪个开源的声音克隆模型可以免费商用？

Chatterbox 的 README 把代码放在 MIT 之下，它的 Hugging Face 模型卡把许可写成 MIT，不过这个项目已经退役。XTTS-v2 用的是 Coqui Public Model License，出售产出的内容之前要先读它的条款。F5-TTS 的代码是 MIT，但它的预训练模型是 CC-BY-NC，属于非商业许可。

### 怎样判断一段音频是不是 AI 做的？

对 OpenAI 的音频，可以上传到 openai.com/verify，或者发给 Content Provenance API，它会找 SynthID。得到 not_detected 说明不了多少，因为元数据被去掉、水印被削弱、以及其他公司的模型，都会得到这个结果。

## 资料来源

- [OpenAI API docs: Custom voices](https://developers.openai.com/api/docs/guides/custom-voices) (2026-11-06 查阅)
- [OpenAI API docs: Content provenance](https://developers.openai.com/api/docs/guides/content-provenance) (2026-11-06 查阅)
- [Hugging Face: coqui/XTTS-v2 model card](https://huggingface.co/coqui/XTTS-v2) (2026-11-06 查阅)
- [GitHub: resemble-ai/chatterbox README](https://github.com/resemble-ai/chatterbox) (2026-11-06 查阅)
- [Hugging Face: ResembleAI/chatterbox model card](https://huggingface.co/ResembleAI/chatterbox) (2026-11-06 查阅)
- [GitHub: SWivid/F5-TTS README](https://github.com/SWivid/F5-TTS) (2026-11-06 查阅)
- [Hugging Face: SWivid/F5-TTS model card](https://huggingface.co/SWivid/F5-TTS) (2026-11-06 查阅)
- [Hugging Face: hexgrad/Kokoro-82M model card](https://huggingface.co/hexgrad/Kokoro-82M) (2026-11-06 查阅)

[对比语音工具](https://mindket.com/cn/learn/ai-tools/best-ai-voice-generator)
