目标是:从 0 → 训练出一个能唱歌的专属声库模型(类似 RVC/So-VITS ),可以拿来给 AI 音乐当“歌手”。

两条路线

  • 路线 A:实用路线(推荐):基于 RVC / So-VITS-SVC 做“声音转换型歌声模型”,上手快,效果好。

  • 路线 B:研究路线:类似 DiffSinger 的 “Text/Note-to-Singing” 模型,真正从歌词 + 音符 → 歌声,工程量更大。


0. 先选路线:到底要哪种“AI 歌声”?

✅ 1)声音转换型(Voice Conversion,RVC / So-VITS)

输入: 已经有人唱好的干声(或 TTS/合成歌声)
输出: 换成你目标歌手的音色

特点:

  • 数据需求:10–30 分钟干净人声就能起飞

  • 训练简单:现成工具链多

  • 适用:做“虚拟歌手”、Cover、给 Suno/Udio 歌曲换人声

如果你想在 1–2 周内搞出一个能用在项目里的模型,选这个


✅ 2)从歌词+音符直接唱:TTS-Singing(DiffSinger 类)

输入: 歌词 + 音符 + 时长 + 表情参数
输出: 直接合成歌声

特点:

  • 数据需求:大量标注好的“对齐数据”(歌词 → 音节 → 时长)

  • 难度:高,依赖音素标注、对齐、声学模型、vocoder 等整套系统

  • 适合:做科研 / 毕设 / 公司级技术储备

如果你要的是可控的歌唱合成系统,可以作为第二阶段目标。

下面的教程先用你更容易落地的路线 A(RVC / So-VITS 型),再给路线 B 的框架。


一、路线 A:基于 RVC 的歌声模型训练

步骤总览

  1. 准备环境(GPU、依赖)

  2. 准备数据(录音 / 切分 / 清洗)

  3. 特征提取(f0 + 语音特征)

  4. 训练 RVC 模型

  5. 推理测试(实时/离线变声)

  6. 调参和优化(音质、稳定性)


1. 环境准备

1)硬件
  • GPU:至少 8GB 显存(RTX 3060 / 4060 级别)

  • 磁盘:几 GB 即可

  • 系统:Windows / Linux 都行,Win 上有现成整合包

2)软件工具(典型组合)
  • Anaconda / Miniconda

  • Python 3.8–3.10

  • PyTorch + CUDA

  • RVC 项目(推荐找带 GUI 的整合版,训练/推理都方便)

可以用这种方式组织环境:

conda create -n rvc python=3.10
conda activate rvc
# 安装 PyTorch(根据你 CUDA 版本选命令)
pip install torch torchvision torchaudio
# 克隆 RVC 项目
git clone https://github.com/<某个RVC仓库>.git
cd rvc
pip install -r requirements.txt

(具体仓库地址你可以选中文社区维护的那几个,带 WebUI 的体验更好)


2. 数据准备:录制 & 清洗人声

2.1 录音要求
  • 时长

    • 最低:10 分钟干净歌声

    • 推荐:30–60 分钟(多几首歌,多种唱法)

  • 内容

    • 有歌词、有旋律的正常歌唱(可混一点说话声,提高泛化)

    • 尽量涵盖不同音高、元音、辅音、强弱

2.2 录音注意事项
  • 使用同一个麦克风、同一个环境

  • 避免混响太重的房间

  • 不要加混响、压缩、EQ 等效果,纯干声

  • 避免背景噪音(键盘、风扇等)

如果暂时不录真人,也可以先用现成歌声数据(比如自己哼唱、翻唱),注意版权不要拿来商用。


2.3 数据处理流程
  1. 统一格式

    • 采样率:一般处理成 44100 Hz 或 48000 Hz

    • 单声道 mono

    • 16-bit PCM

  2. 分段切片

    • 用音频编辑软件(Audacity / Adobe Audition / Reaper)

    • 每段控制在 3–20 秒之间

    • 去掉长时间空白、笑声、杂音

  3. 去伴奏(如果原本是完整歌曲)

    • 你已经在用 Demucs ——非常好

    • 对有伴奏的歌曲:
      → 用 Demucs / UVR5 分离出 Vocal
      → 再清理混响过重 / 泡沫感太严重的片段

  4. 筛选质量

    • 舌头打结、错误、笑场的段落删掉

    • 爆音、削顶、重混响的段落尽量不要用

整理成类似结构:

dataset/
  raw/
    song1_001.wav
    song1_002.wav
    ...

很多 RVC 前端会提供**“自动切分+自动静音裁剪”**,可以先粗切,再回头手工删掉明显不好的段落。


3. 特征提取(Feature Extraction)

以 RVC 为例,典型需要:

  • f0(基频):音高轨迹,常用 rmvpecrepedio 等方法

  • 语音特征 / content features:如 hubert/whisper 提取“内容向量”

大部分 GUI 会有“特征提取”按钮,你的流程大致是:

  1. 选数据集路径:dataset/raw

  2. 选择提取器:

    • content encoder:Hubert-soft / whisper-ppg

    • f0 提取器:rmvpe(更稳)或 crepe

  3. 等待它自动跑出:

    • .npy / .pt 特征文件

    • 对应索引文件(训练用)

如果喜欢命令行,可以看 RVC 的脚本,大概是:

python extract_features.py \
  --data_dir dataset/raw \
  --f0_method rmvpe \
  --encoder hubert-soft \
  --out_dir dataset/processed

4. 训练 AI 歌声模型

以 RVC 为例,一般会有一个训练脚本或 WebUI 的训练 tab。

4.1 关键超参数
  • 采样率:44100 / 48000(需与数据一致)

  • batch size:与显存有关,8~16 通常够用

  • 训练轮数(epochs)

    • 10 分钟数据:大概 20k–40k steps

    • 30–60 分钟数据:40k–80k steps

  • 学习率:1e-4 左右,按项目默认即可

建议策略:

  1. 先跑一个 少 steps 的试训(比如 5k steps),测试模型能否正常收敛;

  2. 然后再开长训练(40k+ steps),中途多导出 checkpoint 观察。


4.2 训练命令

视具体仓库而定,一般类似:

python train.py \
  --exp_name singer_A \
  --data_dir dataset/processed \
  --sample_rate 44100 \
  --epochs 40000 \
  --batch_size 8 \
  --save_every 5000

训练过程中观察:

  • loss 是否逐渐下降

  • 过拟合迹象(训练太久反而 artifact 变多)


5. 推理测试:让模型开始“唱”

训练完成后,你就可以用 参考音频 → 换音色 来测试:

  1. 准备一段你自己唱、别人唱、或 AI 唱的干声(音高较正常)

  2. 在 RVC GUI 中选择:

    • 目标模型:singer_A.pth

    • f0 模式:跟随原声 / 手动调整

    • 防破音参数:一些 GUI 会有浅显的名称(如“避免电音感”)

  3. 进行转换 → 导出 wav

如果是命令行,一般类似:

python infer.py \
  --input test_src.wav \
  --model_path logs/singer_A.pth \
  --output out_singer_A.wav \
  --f0_method rmvpe \
  --transpose 0   # 升降调

6. 如何调优音质与表现?

几个常见技巧:

  1. 数据多样性

    • 录更多不同情绪、强弱、元音的样本

    • 不要全是小声哼唱,适当有大声、真音、气声

  2. 去掉糟糕段落

    • 内容含糊、乱喊、爆麦的样本删掉重新提取特征再训练

  3. 音高 f0 选择

    • 歌声建议用 rmvpe / crepe,稳定性远好于老的 dio/harvest

  4. 分多次训练 + 微调

    • 先在较大多说话/歌唱数据上预训练一个 base 模型

    • 再用你的小数据进行 finetune,会更加稳健(类似 TTS 的 speaker adaptation)

  5. 推理时控制升降调

    • 目标声音不擅长的极高/极低音区,会出现 artifact

    • 可以少升/降几个半音,效果会明显变好


二、路线 B:从歌词+音符直接唱(DiffSinger 思路速览)

如果未来要做“完整歌唱合成系统”,可以从 DiffSinger / N-Singer 等论文入手。一个典型的歌唱 TTS 系统包含:

  1. 前端(Linguistic Frontend)

    • 文本 → 音素序列(zh pinyin + 声调 → 音素)

    • 歌词与音符对齐(音素时长、停顿)

  2. 时长/音高预测模型

    • 给定音素与乐谱,预测每个音素持续时长、F0 曲线

  3. 声学模型(Acoustic Model)

    • 输入:音素嵌入 + F0 + 时长 + 其他控制(情感、力度)

    • 输出:声学特征(mel-spectrogram)

  4. Vocoder

    • mel-spectrogram → 波形(如 HiFi-GAN、BigVGAN)

整体结构与你做过的 TTS 系统很像,只是多了“已知音符”的强约束,模型更偏向“表情控制”。

这条路线的难点

  • 数据集要有:歌词 + 对齐音素 + 音符 + 标注 F0(或可以稳定提取)

  • 标注成本高,大多使用专业歌手 + 专业数据采集

  • 模型训练 pipeline 更复杂(至少 2–3 个子模型)

建议:
如果将来要做科研/论文:

  • 选一个开源歌唱数据集(NUS-48E、Opencpop 等)

  • 帮你搭一个 DiffSinger-mini 的实验仓库结构

  • 设计训练脚本(前端 → 声学模型 → vocoder)


三、一个“从零训练歌声模型”的整体路线图

可以按“两个阶段”来规划:

第 1 阶段(1–2 周):RVC 歌声模型落地

  • 搭好 RVC 训练环境

  • 收集/录制 20–40 分钟干净歌声

  • 用 Demucs 分离已有歌曲的人声

  • 特征提取(Hubert + rmvpe)

  • 训练 20k–50k steps 模型

  • 用几段参考音频测试 & 调参

这个阶段结束时,就有一个可用的 AI 歌手


第 2 阶段(1–3 个月):向“可控歌唱合成”进阶

  • 研究 DiffSinger / N-Singer 等歌唱 TTS 论文

  • 选择一个公开歌唱数据集(如 Opencpop)

  • 搭建:

    • 文本 → 音素 → 时长 → F0 的前端

    • 声学模型(Transformer / Diffusion)

    • Vocoder(HiFi-GAN / BigVGAN)

  • 做一个从“歌词+音符 → 歌声”的最小可行 demo

  • 最终把它作为你“AI 音乐生成系统”的一个模块,接在 MusicGen 之后

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐