ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

录 3 分钟音频,让 F5-TTS 克隆出你的专属声线

录 3 分钟音频,让 F5-TTS 克隆出你的专属声线

录 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.0

tests/下会生成my_voice.wav,就是你这版声线的结果。参考文本-s务必逐字对应,否则音色和韵律会跑偏;不填-s会现场调用 ASR 转写(多占一块显存)。

🧮 参数速查:推理与训练关键项

参数作用推荐值显存 / 速度影响
speed生成语速倍率默认 1.0,0.8~1.2 间微调越大越快越赶,越小越舒缓;不占显存
nfe_step去噪步数:从噪声还原到声音要走几步默认 32,求快可降到 16步数越多越稳、越慢;不占额外显存
cfg_strength无分类器引导强度,控制对参考的贴合度默认 2.0影响音色贴合;不占显存
sway_sampling_coefSway 采样系数,用于改善性能默认 -1.0基本无影响
fix_duration固定总时长(秒)默认不填,按文本长度自动估算用于卡时长场景
learning_rate微调学习率默认 1e-5,数据少可再调小过大易发散,过小收敛慢
epochs训练轮数默认 100,小数据建议更小轮数越多耗时越长
batch_size_per_gpu每卡批量(默认按“帧”计)默认 3200越大越吃显存
max_samplesframe 批量下每批最多条数默认 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),仅供参考

返回列表