录 3 分钟音频,让 F5-TTS 克隆出你的专属声线
【免费下载链接】F5-TTSOfficial code for "F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching"项目地址: https://gitcode.com/gh_mirrors/f5/F5-TTS
给家人录几分钟干净的说话声,AI 就能用 TA 的声线读故事、配旁白。本文带你用 F5-TTS 搭一套自定义语音库:从录音、数据准备到模型微调,最后用自己的声音朗读任意文本。
能力速览
底层用「流匹配」建模——把一团噪声一步步推向目标语音;文本和音频都会先转成拼音和梅尔频谱(可以理解为声音的指纹图)再喂给模型。了解这一句就够,剩下交给命令。
| 能做什么 | 最低门槛 | 大致耗时 |
|---|---|---|
| 零样本克隆(一段参考音频 + 文本) | 一块 CUDA GPU + 一句干净的参考音频 | 合成一段约分钟级 |
| 微调专属语音库 | 数分钟多句录音 + 一块 CUDA GPU | 预处理分钟级;微调视数据量数小时起 |
| 长文本 / 多说话人 / 实时服务 | 在上面基础上加脚本或容器 | 依部署方式而定 |
🧭 从录音到首次合成的完整路径
按顺序做就能跑通,每步之间几乎没有坑。
环境安装
先建一个干净的 Python 3.11 环境,装好 FFmpeg 和与本机 CUDA 匹配的 PyTorch / torchaudio,再以可编辑模式安装仓库(可编辑模式才能做训练与微调)。
conda create -n f5-tts python=3.11 && conda activate f5-tts conda install ffmpeg # 先装好与本机 CUDA 匹配的 torch / torchaudio git clone https://gitcode.com/gh_mirrors/f5/F5-TTS cd F5-TTS pip install -e .装完后敲f5-tts_infer-cli能打印参数帮助,就说明链路通了。
参考音频录制规格
录库用的音频,规格跟着代码里的硬约束走:
- 采样率:模型目标是
24000 Hz,录完可重采样到这个值。 - 每条时长:落在 0.3 秒到 30 秒之间最稳,超出区间的样本训练时会被跳过;建议一句一段。
- 内容:多录几句不同语气、节奏的话,覆盖数字、停顿和情绪变化。
- 形式:单声道、背景安静,尽量别带音乐和回声。
零样本合成时,参考音频会被自动裁到约 12 秒并做响度归一,所以给一句最干净的即可。
数据准备
把你录好的每一句都记进一张metadata.csv(列名固定为audio_file|text,音频路径写绝对路径),再交给数据准备脚本,它会统一转成拼音、统计时长并写出可训练的raw.arrow。
python src/f5_tts/train/datasets/prepare_csv_wavs.py metadata.csv data/my_voice_pinyin输出目录会生成raw.arrow、duration.json、vocab.txt,并打印总时长(小时)供核对。目录名要满足data/{dataset_name}_{tokenizer},这里就是data/my_voice_pinyin。
微调
确认数据目录就位后启动微调。不带--pretrain时脚本会自动从预训练权重起步,权重最终写进ckpts/my_voice/。
f5-tts_finetune-cli \ --exp_name F5TTS_v1_Base \ --finetune \ --dataset_name my_voice \ --tokenizer pinyin \ --epochs 100 \ --batch_size_per_gpu 3200 \ --learning_rate 1e-5 \ --logger tensorboard每 5000 步存一份model_last.pt、每 50000 步存一份model_{步数}.pt,可以边训边用model_last.pt试听。显存吃紧时,把--batch_size_per_gpu(默认按“帧”计)调小、再用--grad_accumulation_steps把等效批量补回来。想看曲线就pip install tensorboard后用--logger tensorboard。
首次合成
先用默认模型、不带-p跑一次确认环境,再带上你微调的权重试听效果。
f5-tts_infer-cli \ -p ckpts/my_voice/model_last.pt \ -r data/ref/your_ref.wav \ -s "参考音频里说的每句话,逐字对上。" \ -t "这是要合成的新句子。" \ -o tests -w my_voice.wav \ --nfe_step 32 --speed 1.0tests/下会生成my_voice.wav,就是你这版声线的结果。参考文本-s务必逐字对应,否则音色和韵律会跑偏;不填-s会现场调用 ASR 转写(多占一块显存)。
🧮 参数速查:推理与训练关键项
| 参数 | 作用 | 推荐值 | 显存 / 速度影响 |
|---|---|---|---|
speed | 生成语速倍率 | 默认 1.0,0.8~1.2 间微调 | 越大越快越赶,越小越舒缓;不占显存 |
nfe_step | 去噪步数:从噪声还原到声音要走几步 | 默认 32,求快可降到 16 | 步数越多越稳、越慢;不占额外显存 |
cfg_strength | 无分类器引导强度,控制对参考的贴合度 | 默认 2.0 | 影响音色贴合;不占显存 |
sway_sampling_coef | Sway 采样系数,用于改善性能 | 默认 -1.0 | 基本无影响 |
fix_duration | 固定总时长(秒) | 默认不填,按文本长度自动估算 | 用于卡时长场景 |
learning_rate | 微调学习率 | 默认 1e-5,数据少可再调小 | 过大易发散,过小收敛慢 |
epochs | 训练轮数 | 默认 100,小数据建议更小 | 轮数越多耗时越长 |
batch_size_per_gpu | 每卡批量(默认按“帧”计) | 默认 3200 | 越大越吃显存 |
max_samples | frame 批量下每批最多条数 | 默认 64 | 限制单批最长 |
grad_accumulation_steps | 梯度累积步数 | 默认 1 | 显存不足时等效加大批量,用速度换空间 |
seed | 采样随机种子,固定可复现 | 默认 None;基础infer-cli未暴露--seed,在 eval、语音编辑 里可设 | 无 |
🚀 进阶玩法
多风格 / 多说话人
用一份 TOML 定义多个说话人,正文里用[名字]标签切换音色和语速。仓库自带多风格示例,把main、town、country换成你自己的参考音频即可。
model = "F5TTS_v1_Base" ref_audio = "infer/examples/multi/main.flac" gen_file = "infer/examples/multi/story.txt" # 正文里用 [town]/[country]/[main] 切换 [voices.town] ref_audio = "infer/examples/multi/town.flac" speed = 0.8运行f5-tts_infer-cli -c 你的.toml即可。
语音编辑
语音编辑脚本 用来改已合成音频的某几秒:改脚本顶部的audio_to_edit(要改的音频)、origin_text(原句)、target_text(改后整句)、parts_to_edit(要替换片段的起止秒数)和fix_duration(替换片段的固定时长)再运行。定位字符时间戳需要先装ctc-forced-aligner,它按注释里的命令先跑一遍对齐。
实时服务
实时部署 走 Triton + TensorRT-LLM,适合要并发和更低延迟的场景。
cd src/f5_tts/runtime/triton_trtllm MODEL=F5TTS_v1_Base docker compose up python3 client_http.py起服务后用client_http.py/client_grpc.py调用,benchmark.py可测延迟。用自定义 checkpoint 时,在run.sh里设ckpt_file和vocab_file,并保证模型版本与结构匹配。
🩺 问题排查
| 现象 | 可能原因 | 解法 |
|---|---|---|
| 语音不自然、像在读稿 | 参考文本-s与音频没逐字对应;数据太少;nfe_step偏低 | 核对参考文本;多录几句再微调;nfe_step提到 32,配合cfg_strength微调 |
| 发音错误、多音字读错 | 中文未走拼音分词;词表缺字 | 保持--tokenizer pinyin(默认即拼音);核对拼音词表是否覆盖;难读词补进训练样本 |
| 训练过拟合、只认训练句 | 数据量小却跑了太多轮 | 调小epochs、补数据;数据少时把learning_rate再调小;早期 checkpoint 可尝试use_ema=False再试听 |
收尾
录几分钟声音、跑一条命令,就能让 F5-TTS 长出你自己的声线。项目地址:gitcode.com/gh_mirrors/f5/F5-TTS。
【免费下载链接】F5-TTSOfficial code for "F5-TTS: A Fairytaler that Fakes Fluent and Faithful Speech with Flow Matching"项目地址: https://gitcode.com/gh_mirrors/f5/F5-TTS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考