几小时音频调出专属音色:VoiceStudio 微调 TTS 模型实操手册
【免费下载链接】VoiceStudioVoiceStudio is the open-source, fully-local ElevenLabs alternative — voice cloning, voice design, video dubbing, dictation, transcription & audiobook creation in 646 languages.项目地址: https://gitcode.com/GitHub_Trending/om/VoiceStudio
VoiceStudio 是一套完全跑在本地的开源语音合成平台,内置语音克隆、视频配音、有声书制作等能力。本文覆盖 TTS 模型训练与音色微调的完整实操:用几小时录音把 OmniVoice 调成专属音色,从数据清单、音频分词到多卡微调、效果验收,再到接入日常合成,全程在本机闭环完成。
🧭 要不要训、怎么训:目标路线与硬件门槛
本节读完,你会拿到一条与目标匹配的路线,外加一份 GPU、数据、磁盘的准入清单,算力不花在错的地方。
零样本克隆虽能说话,但有三处别扭:每次合成都要把参考音频再喂一遍,音色数据属于内部资产时尤其不便;单靠一条参考,音色容易飘、相似度难提升;录音里的混响和杂音也会被模型学进参数。中任何一条,训练就有必要——音色沉淀进参数后,日常只需要提供文本。
| 训练目标 | 推荐路线 | 卡数 | 总步数 | 峰值学习率 |
|---|---|---|---|---|
| 个人专属音色 | 基于预训练检查点微调 | 2 | 5000 | 5e-5 |
| 多语言 / 多风格大模型 | Emilia 大规模训练(从零学起) | 8 | 300000 | 1e-4 |
| 嘈杂参考下更鲁棒 | 噪声增强管线(叠在主路线上) | 随主路线 | 随主路线 | 随主路线 |
准入门槛对照:
- GPU:微调最少 2 张卡,accelerate 会为每张卡拉起一个进程,进程数必须等于卡数
- 数据量:准备几小时干净人声即可,大规模训练是另一个量级
- 格式:wav、flac、mp3 都能进,采样率在分词阶段统一处理到 24 kHz,不需要自己转码
- 磁盘:tar 分片、检查点都写在本地目录,提前留足空间
门槛满足,就可以动手。
📦 跑通微调主流程:清单、分词、多卡训练
本节走完,你拿到一个推理引擎可直接加载的 checkpoint 目录。
数据清单怎么写
清单用 JSONL 格式,一行一条样本:唯一 ID、音频绝对路径、转写文本,语言代码可选。
{"id": "s001", "audio_path": "/data/audio/s001.wav", "text": "你好,世界", "language_id": "zh"}把数据拆成训练、开发两个 JSONL;开发集仅用于评估,不参与梯度更新。字段细节见 docs/data_preparation.md。
音频分词怎么做
分词是一次性预处理,跑一遍即可。运行omnivoice.scripts.extract_audio_tokens模块,需要三个输入:数据清单、分片输出路径、音频分词器(默认 higgs-audio-v2)。每条音频会被编码为 8 层离散 token,按 WebDataset 格式写成 tar 分片,每个分片旁挂一份元数据 jsonl,最后汇总出 data.lst 清单。示例脚本 examples/run_finetune.sh 内置了这一步,改好清单路径与 GPU 编号即可执行。
多卡微调怎么启动
几小时的数据量,这组参数够用:总步数 5000,峰值学习率 5e-5,bf16 混合精度,每卡每 batch 8192 token,每 500 步保存一个检查点。训练不必从零学起:把init_from_checkpoint指向 OmniVoice 预训练检查点,基础能力直接继承,网络只负责学你的音色。
accelerate launch \ --gpu_ids "0,1" \ --num_processes 2 \ -m omnivoice.cli.train \ --train_config config/train_config_finetune.json \ --data_config config/data_config_finetune.json \ --output_dir exp/omnivoice_finetune若训练中途被打断,将resume_from_checkpoint设为已有检查点路径,再次启动即从断点继续。
检查点出来了,怎么验证?
📊 效果验收:看 WER、SIM-o、UTMOS 三个指标
本节做完,你会拿到三个客观数字,而不是听感判断。
训练中的曲线看这里:日志输出到输出目录的 tensorboard 子目录,TensorBoard 以--logdir指向它,损失与评估曲线随时刷新。损失持续下降只说明在收敛,验收要等训练结束后核对三项:
- WER(字错率):让 ASR 把合成音频转写成文字,与原文比对,越低代表发音越清楚
- SIM-o(说话人嵌入相似度):参考音频与合成音频各提一次声纹再比对,越高代表越像本人
- UTMOS:神经网络预测的 MOS 自然度分,越高越接近真人听感
评估不必手动拼装:跑 examples/run_eval.sh 即可在 LibriSpeech-PC、Seed-TTS 等标准测试集上出分,比凭耳朵判断更可靠。
数字达标,把它接进日常。
🔗 checkpoint 接入工作台:Settings 里启用微调模型
本节完成后,你训练的声音能直接在工作台里出声。
输出目录里的检查点(例如checkpoint-5000)本身就是一个可用的推理模型。加载方式上,OmniVoice 引擎在进程内直接载入,不用单独装任何东西。进入Settings → Engines将目录登记并启用,克隆、配音、有声书等功能都会调用这张音色。
回到工作台敲一句台词,播放出来的就是刚训练好的声音。
数据留在本机,进阶选项看下节。
➕ 可选进阶:Emilia 大规模训练与噪声增强
本节走完,你多两条可叠加的进阶路线;不需要可直接跳过。
Emilia 大规模训练怎么跑(可选)
配置是 8 卡、30 万步、学习率 1e-4、每卡每 batch 8192 token,且不做预训练初始化,模型从零学起。分三步:Emilia 原始数据(EN、ZH)连同训练、开发两份 JSONL 清单统一放到data/emilia/manifests/下;对 4 个数据分割各跑一遍分词;再以 8 个进程启动训练。examples/run_emilia.sh 覆盖全程,参数细节见 docs/training.md。
噪声增强怎么加(可选)
两个脚本,思路相反:denoise_audio.py调用 Sidon 语音增强模型,先把原始音频里的背景噪声剥掉;extract_audio_tokens_add_noise.py则在分词阶段故意混入环境噪声与房间混响,推理时就算喂嘈杂参考,模型表现也不受影响。两个脚本均非必需,按需启用,且能叠到微调或 Emilia 流程之上,详见 docs/data_preparation_advanced.md。
两条路线都能叠加进基础流程。
【免费下载链接】VoiceStudioVoiceStudio is the open-source, fully-local ElevenLabs alternative — voice cloning, voice design, video dubbing, dictation, transcription & audiobook creation in 646 languages.项目地址: https://gitcode.com/GitHub_Trending/om/VoiceStudio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考