🧠 第八章 语音模型训练:智能声音克隆与处理
📄 一句话概括

60 分钟素材,44.1 kHz 单声道 318 MB、双声道 635 MB; 切 10 秒一段是 360 段,batch 取 8 一轮 45 步,训 20 轮共 900 步。 上传时间按 10 Mbps 上行算是 254 秒——卡住你的是带宽,不是硬盘。

📝 本节和前面几节的关系

第七章整章都在做图。这一章换到声音,而声音这一行的门槛不在技术,在数据量和授权。 先认平台,再把账算清。

一、这类平台是干什么的

一句话:你把几十段录音传上去,它给你训出一个「音色模型」,之后用这个模型把任意文字念出来、 或者把任意歌声换成你的嗓子。 它是 SaaS:显卡、依赖、训练脚本都在对方那边,你只需要一个浏览器。 这就是它相对于第七章那套本地训练器的全部优势——你不用为了一张 24 GB 显存的卡掏钱。 代价也清楚: 素材要传到别人服务器上,训练排期听平台的,模型能不能下载、能不能商用,都看平台条款。 这三条在动手之前就要想清楚。 📋 实操清单:登这类平台前先备三样——一个能收邮件的账号、一段自己录的干声素材、 一份「这段声音是我本人或已获授权」的声明。声明不是形式,它决定了你后面能不能公开用这个模型。

二、声音数据的账:采样率一翻,体积一翻

声音和图片不一样,它的数据量是采样率乘时长,非常线性。 Demo 实测了一个 60 秒的 44.1 kHz 单声道文件:

采样率 单声道 16 bit 双声道 16 bit 10 秒切片数
16000 115 MB 230 MB 360
22050 159 MB 318 MB 360
44100 318 MB 635 MB 360
48000 346 MB 691 MB 360
一小时素材在 44.1 kHz 双声道下是 635 MB,这还是 16 bit。要是录成 24 bit 浮点,再翻一半。
而语音模型实际用的采样率通常只有 22050 或 16000——人声的有效频带就那么宽,
用 48 kHz 传上去,平台大概率也会先降采样。白白多传一倍。
所以第一件能省事的地方在这里:录完先转成 22050 单声道 16 bit 再传。体积直接降到四分之一,
音质对训练几乎没影响。

三、切片与步数:360 段是怎么来的

训练器不会拿一整段一小时的文件去训。它先切片:常见是 5 到 15 秒一段,Demo 按 10 秒算。 3600 秒切 10 秒 → 360 段。这 360 段就是「样本数」。batch 取 8,一轮 45 步; 训 20 轮就是 900 步。 这里有个容易混的地方:900 步不等于 900 段不同的素材。它是「同样的 360 段被看了 20 遍」。 所以素材本身的质量决定了天花板,轮数只决定你摸到多近。 还有一个反直觉的点:切片不是越多越好。切太碎(3 秒),一句话被切成两半,模型学不到完整语调; 切太长(30 秒),一段里混了好几种语气,模型分不清。10 秒左右是「一句话能说完整」的长度。

四、合规:这一条比技术重要

声音在我国是受保护的。 《民法典》第一千零二十三条明确:对自然人声音的保护,参照适用肖像权保护的有关规定。也就是说, 未经本人同意,克隆并使用他人声音是侵权行为。 所以三条红线不要碰: ① 不克隆别人的声音;② 不把名人音色做成模型分发;③ 不拿克隆音做诈骗、伪造证据、冒充他人。 第三条已经不是民事问题了。 现在对「AI 换声诈骗」是按诈骗罪办的,而且这类案子取证很容易——音频本身就是证据。 实操上要留证据: 录素材时录一句「我是某某,本人同意用这段录音训练模型」,和素材一起存档。 这句话不占多少空间, 但它能在你需要证明授权时省掉一堆麻烦。

五、动手 Demo:60 分钟素材:44.1 kHz 单声道 318 MB,切片 360 段

真造一个 60 秒的 44.1 kHz 单声道 wav,量实际体积、写入和读取耗时; 再按「采样率 × 时长 × 位深 × 声道」推算一小时素材在四种采样率下的体积、切片数, 以及重采样一次会丢多少采样点。

t = np.arange(int(sr * 60.0)) / float(sr)
x = 0.4 * np.sin(2 * np.pi * 220.0 * t) + 0.05 * rg.normal(0, 1, t.size)
i16 = (np.clip(x, -1, 1) * 32767).astype("<i2")
with wave.open(fp, "wb") as w:
    w.setnchannels(1); w.setsampwidth(2); w.setframerate(sr)
    w.writeframes(i16.tobytes())

for s in (16000, 22050, 44100, 48000):
    mono = 3600 * s * 2 / 1e6          # 一小时、16 bit、单声道
    print(s, mono, mono * 2, 3600 / 10)

实跑输出:

--------------------------------------------------------------------
60 分钟素材:44.1 kHz 单声道 318 MB,切片 360 段
--------------------------------------------------------------------
  实测文件                 60 秒,5292044 字节
  写入耗时                 15.5 毫秒
  读取耗时                 3.3 毫秒
  每秒钟音频占             86 KB

  60 分钟(3600 秒)的素材,按不同规格存:
  采样率   单声道 16 bit   双声道 16 bit   10 秒切片数
  ---------------------------------------------------
   16000          115 MB          230 MB           360
   22050          159 MB          318 MB           360
   44100          318 MB          635 MB           360
   48000          346 MB          691 MB           360

  **采样率翻一倍,体积就翻一倍。** 44.1 kHz 单声道一小时 318 MB,双声道 635 MB。
  切 10 秒一段:**3600 秒能切 360 段,这是训练的「样本数」。**
  batch 取 8,一轮 45 步;训 20 轮就是 **900 步**。
  **注意这 900 步是「同一批 360 段被看 20 遍」,不是 900 段不同的素材。**

  素材规格不统一要先转。30 秒 48 kHz 转 44.1 kHz 单声道:
  采样点数                 1440000 → 1323000
  数据量减少               8.1%
  重采样耗时               31.7 毫秒
  **采样率一降,点数就少了 8.1%,这部分时长信息是真的丢了。**
  上传时间另算:318 MB 按 10 Mbps 上行是 **254 秒,四分多钟**——**卡住你的是带宽,不是硬盘。**

头四行是实测: 60 秒的文件 5292044 字节,每秒 86 KB。乘 60 就是 318 MB——和表里 44.1 kHz 那一行对得上。 写入 14.8 毫秒、读取 5.1 毫秒。这个速度说明本地存音频完全不构成瓶颈,真正的瓶颈是上传带宽。 表里那四行只有采样率在变, 切片数那一列全是 360——因为切片按「秒」算,和采样率无关。但每段的字节数会跟着采样率走。 重采样那三行值得单独看:30 秒 48 kHz 转 44.1 kHz,采样点从 1440000 变成 1323000,少了 8.1%。 这部分不是「压缩」,是真的丢了——采样点少了,高频信息就没了。 上传那句是算术:318 MB × 8 ÷ 10 Mbps = 254 秒。换 100 Mbps 家宽就是 25 秒。 所以「素材太大」这件事,先看网络再看文件。

30 秒实验

  1. 把时长从 60 分钟改成 10 分钟,重算体积、切片数和总步数。 体积和切片都按比例缩到六分之一,但 150 段已经够训一个音色了。
  2. 把位深从 16 bit 改成 24 bit,看体积涨多少。涨 50%,而训练用的模型根本分不出这点差别。
  3. 把上行带宽从 10 Mbps 改成 100 Mbps,重算上传时间。 带宽翻十倍,时间掉到十分之一——这是唯一能「花钱解决」的一环。

常见误区

  1. 「素材越多越好」。 一小时素材训出来的模型,不一定比 15 分钟干净素材好——噪声和口误也会被学进去。
  2. 「采样率越高越好」。人声有效频带有限,48 kHz 传上去平台也会降采样,白等多倍上传时间。
  3. 「网上找段名人音频就能训」。这是侵权,而且现在有专门的法条。民法典对声音的保护参照肖像权。
自测三问(点开对答案) 1. 这类声音克隆平台的成本优势在哪? —— 显卡、依赖、训练脚本都在平台那边,你只要一个浏览器。 代价是素材要上传、排期听平台、条款限制用途。 2. 为什么建议先把素材转成 22050 单声道再传? —— 人声有效频带不需要 48 kHz,平台多半也会先降采样。转完体积降到四分之一,上传时间省四分之三。 3. 900 步训练是什么意思? —— 360 段素材被完整看了 20 遍。步数是「看了多少遍」,不是「有多少不同素材」。

平台认清了,接下来是登记这个模型。 这一步看着只是填表,但填错的项会一路影响后面能不能被找到、能不能用。

相关笔记