项目简介
F5-TTS :带有 ConvNeXt V2 的扩散变压器,训练和推理速度更快。
E2 TTS :Flat-UNet Transformer,最接近纸面的复制品。
Sway Sampling :推理时间流步进采样策略,大大提高性能
安装
克隆存储库:
git clone https://github.com/SWivid/F5-TTS.git
cd F5-TTS
使用您的 CUDA 版本安装 torch,例如:
pip install torch==2.3.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
pip install torchaudio==2.3.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
安装其他包:
pip install -r requirements.txt
[可选] :我们提供了Dockerfile ,您可以使用以下命令来构建它。
docker build -t f5tts:v1 .
开发
发出 Pull 请求时,请使用预提交来确保代码质量:
pip install pre-commit
pre-commit install
这将在每次提交之前自动运行 linter 和格式化程序。
Manually run using: 手动运行使用:
pre-commit run --all-files
注意:某些模型组件对 E722 具有 linting 例外,以适应张量表示法
准备数据集
Emilia 和 Wenetspeech4TTS 的示例数据处理脚本,您可以定制自己的脚本以及model/dataset.py
中的 Dataset 类。
# prepare custom dataset up to your need
# download corresponding dataset first, and fill in the path in scripts
# Prepare the Emilia dataset
python scripts/prepare_emilia.py
# Prepare the Wenetspeech4TTS dataset
python scripts/prepare_wenetspeech4tts.py
关于微调#57的初步指导。
使用finetune_gradio.py
进行Gradio UI 微调,请参阅#143 。
Wandb日志记录
默认情况下,训练脚本不使用日志记录(假设您没有使用wandb login
手动登录)。
要打开 wandb 日志记录,您可以:
使用
wandb login
手动登录:在此处了解更多信息通过设置环境变量以编程方式自动登录:在https://wandb.ai/site/获取 API KEY 并设置环境变量,如下所示:
在 Mac 和 Linux 上:
export WANDB_API_KEY=<YOUR WANDB API KEY>
在 Windows 上:
set WANDB_API_KEY=<YOUR WANDB API KEY>
此外,如果您无法访问 Wandb 并且想要离线记录指标,您可以按如下方式设置环境变量:
export WANDB_MODE=offline
推理
预训练模型检查点可以通过🤗 Hugging Face和🤖 Model Scope到达,或者使用inference-cli
和gradio_app
自动下载。
目前支持单生成30秒,即提示音频与生成的总长度。 inference-cli
和gradio_app
支持使用块进行批量推理。
为了避免可能的推理失败,请确保您已阅读以下说明。
较长的提示音频允许较短的生成输出。超过30s的部分无法正常生成。考虑使用提示音频 <15s。
大写字母将被逐个字母地读出,因此对于普通单词使用小写字母。
添加一些空格(空白:“”)或标点符号(例如“,”“.”)以明确引入一些停顿。如果在代码转换生成中跳过前几个单词(因为不同语言的速度不同),这可能会有所帮助。
CLI 推理
您可以在inference-cli.toml
中指定所有内容,也可以使用标志覆盖。保留--ref_text ""
将使 ASR 模型自动转录参考音频(使用额外的 GPU 内存)。如果遇到网络错误,考虑使用本地ckpt,只需在inference-cli.py
中设置ckpt_file
对于更改模型,请使用--ckpt_file
指定要加载的模型,
要更改 vocab.txt,请使用--vocab_file
提供您的 vocab.txt 文件。
python inference-cli.py \
--model "F5-TTS" \
--ref_audio "tests/ref_audio/test_en_1_ref_short.wav" \
--ref_text "Some call me nature, others call me mother nature." \
--gen_text "I don't really care what you call me. I've been a silent spectator, watching species evolve, empires rise and fall. But always remember, I am mighty and enduring. Respect me and I'll nurture you; ignore me and you shall face the consequences."
python inference-cli.py \
--model "E2-TTS" \
--ref_audio "tests/ref_audio/test_zh_1_ref_short.wav" \
--ref_text "对,这就是我,万人敬仰的太乙真人。" \
--gen_text "突然,身边一阵笑声。我看着他们,意气风发地挺直了胸膛,甩了甩那稍显肉感的双臂,轻笑道,我身上的肉,是为了掩饰我爆棚的魅力,否则,岂不吓坏了你们呢?"
# Multi voice
python inference-cli.py -c samples/story.toml
项目链接
https://github.com/SWivid/F5-TTS
https://arxiv.org/abs/2410.06885
https://huggingface.co/SWivid/F5-TTS
扫码加入技术交流群,备注「开发语言-城市-昵称」
合作请注明
关注「GitHubStore」公众号