上海交通大学开源的非常牛音生成模型 F5-TTS

文摘   2024-10-25 09:16   湖北  

项目简介

F5-TTS :带有 ConvNeXt V2 的扩散变压器,训练和推理速度更快。

E2 TTS :Flat-UNet Transformer,最接近纸面的复制品。


Sway Sampling :推理时间流步进采样策略,大大提高性能

安装

克隆存储库:

git clone https://github.com/SWivid/F5-TTS.gitcd F5-TTS

使用您的 CUDA 版本安装 torch,例如:

pip install torch==2.3.0+cu118 --extra-index-url https://download.pytorch.org/whl/cu118pip 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-commitpre-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 datasetpython scripts/prepare_emilia.py
# Prepare the Wenetspeech4TTS datasetpython scripts/prepare_wenetspeech4tts.py

关于微调#57的初步指导。

使用finetune_gradio.py进行Gradio UI 微调,请参阅#143 。


Wandb日志记录

默认情况下,训练脚本不使用日志记录(假设您没有使用wandb login手动登录)。


要打开 wandb 日志记录,您可以:

  1. 使用wandb login手动登录:在此处了解更多信息

  2. 通过设置环境变量以编程方式自动登录:在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-cligradio_app自动下载。


目前支持单生成30秒,即提示音频与生成的长度。 inference-cligradio_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 voicepython 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」公众号


GitHubStore
分享有意思的开源项目
 最新文章