从零做一个 AI 歌声模型的训练教程
本文介绍了两种训练AI歌声模型的方法:路线A(实用型)基于RVC/So-VITS进行声音转换,只需10-30分钟人声数据,1-2周即可完成训练,适合快速实现虚拟歌手、歌曲翻唱等应用。路线B(研究型)采用DiffSinger等文本/音符到歌声的合成方案,需要大量标注数据,适合科研或长期项目开发。文章重点阐述了路线A的实现步骤,包括环境配置、数据准备、特征提取、模型训练和调优技巧,并简要概述了路线B的
目标是:从 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 的歌声模型训练
步骤总览
-
准备环境(GPU、依赖)
-
准备数据(录音 / 切分 / 清洗)
-
特征提取(f0 + 语音特征)
-
训练 RVC 模型
-
推理测试(实时/离线变声)
-
调参和优化(音质、稳定性)
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 数据处理流程
-
统一格式
-
采样率:一般处理成 44100 Hz 或 48000 Hz
-
单声道 mono
-
16-bit PCM
-
-
分段切片
-
用音频编辑软件(Audacity / Adobe Audition / Reaper)
-
每段控制在 3–20 秒之间
-
去掉长时间空白、笑声、杂音
-
-
去伴奏(如果原本是完整歌曲)
-
你已经在用 Demucs ——非常好
-
对有伴奏的歌曲:
→ 用 Demucs / UVR5 分离出 Vocal
→ 再清理混响过重 / 泡沫感太严重的片段
-
-
筛选质量
-
舌头打结、错误、笑场的段落删掉
-
爆音、削顶、重混响的段落尽量不要用
-
整理成类似结构:
dataset/
raw/
song1_001.wav
song1_002.wav
...
很多 RVC 前端会提供**“自动切分+自动静音裁剪”**,可以先粗切,再回头手工删掉明显不好的段落。
3. 特征提取(Feature Extraction)
以 RVC 为例,典型需要:
-
f0(基频):音高轨迹,常用
rmvpe、crepe、dio等方法 -
语音特征 / content features:如 hubert/whisper 提取“内容向量”
大部分 GUI 会有“特征提取”按钮,你的流程大致是:
-
选数据集路径:
dataset/raw -
选择提取器:
-
content encoder:
Hubert-soft/whisper-ppg -
f0 提取器:
rmvpe(更稳)或crepe
-
-
等待它自动跑出:
-
.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 左右,按项目默认即可
建议策略:
-
先跑一个 少 steps 的试训(比如 5k steps),测试模型能否正常收敛;
-
然后再开长训练(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. 推理测试:让模型开始“唱”
训练完成后,你就可以用 参考音频 → 换音色 来测试:
-
准备一段你自己唱、别人唱、或 AI 唱的干声(音高较正常)
-
在 RVC GUI 中选择:
-
目标模型:
singer_A.pth -
f0 模式:跟随原声 / 手动调整
-
防破音参数:一些 GUI 会有浅显的名称(如“避免电音感”)
-
-
进行转换 → 导出 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. 如何调优音质与表现?
几个常见技巧:
-
数据多样性
-
录更多不同情绪、强弱、元音的样本
-
不要全是小声哼唱,适当有大声、真音、气声
-
-
去掉糟糕段落
-
内容含糊、乱喊、爆麦的样本删掉重新提取特征再训练
-
-
音高 f0 选择
-
歌声建议用
rmvpe/crepe,稳定性远好于老的dio/harvest
-
-
分多次训练 + 微调
-
先在较大多说话/歌唱数据上预训练一个 base 模型
-
再用你的小数据进行 finetune,会更加稳健(类似 TTS 的 speaker adaptation)
-
-
推理时控制升降调
-
目标声音不擅长的极高/极低音区,会出现 artifact
-
可以少升/降几个半音,效果会明显变好
-
二、路线 B:从歌词+音符直接唱(DiffSinger 思路速览)
如果未来要做“完整歌唱合成系统”,可以从 DiffSinger / N-Singer 等论文入手。一个典型的歌唱 TTS 系统包含:
-
前端(Linguistic Frontend)
-
文本 → 音素序列(zh pinyin + 声调 → 音素)
-
歌词与音符对齐(音素时长、停顿)
-
-
时长/音高预测模型
-
给定音素与乐谱,预测每个音素持续时长、F0 曲线
-
-
声学模型(Acoustic Model)
-
输入:音素嵌入 + F0 + 时长 + 其他控制(情感、力度)
-
输出:声学特征(mel-spectrogram)
-
-
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 之后
更多推荐



所有评论(0)