Skip to content

F5-TTS-api

该项目源码地址 https://github.com/jianchang512/f5-tts-api

这是用于 F5-TTS 项目的api和webui

F5-TTS 是一款先进的文本转语音系统,它使用深度学习技术生成逼真、高质量的人声。只需短短10秒的音频样本,就能克隆出你的声音。F5-TTS 能够准确再现语音,并赋予其丰富的感情色彩。

原音色女儿国国王

克隆后音频

Windows集成包 (包含F5-TTS模型及运行环境)

123网盘下载 https://www.123684.com/s/03Sxjv-kKjB3

huggingface下载地址: https://huggingface.co/spaces/mortimerme/s4/resolve/main/f5-tts-api-v0.3.7z?download=true

2024-11-27 补丁下载

下载补丁后解压到 api.py 所在文件夹覆盖,即完成升级

补丁下载地址: https://github.com/jianchang512/f5-tts-api/releases/download/v0.1/2024-1127-buding.7z

适用系统: Windows 10/11 (下载后解压即可使用)

使用方法:

启动API服务: 双击 run-api.bat 文件,API地址为 http://127.0.0.1:5010/apiimage.png

必须启动api服务才可在翻译软件中使用

集成包默认使用CUDA 11.8版本。如果您有英伟达显卡并已配置好CUDA/cuDNN环境,系统会自动使用GPU加速。 如果想使用更高版本的cuda,比如12.4,请如下操作

进入到 api.py 所在文件夹,在文件夹地址栏输入cmd后回车,然后在弹出的终端中分别执行以下命令

.\runtime\python -m pip uninstall -y torch torchaudio

.\runtime\python -m pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu124

F5-TTS 的优势在于其高效性和高质量的语音输出。相比于需要较长音频样本的同类技术,F5-TTS 只需很短的音频就能生成高保真的语音,并能很好地表达情感,提升听感,这是许多现有技术难以做到的。

目前,F5-TTS支持英语和中文两种语言。

总而言之,F5-TTS 是一款强大的文本转语音工具,它不仅语音质量高,还能生成富有表现力的语音。通过便捷的语音克隆功能,您可以轻松将文本转换成逼真、富有情感的音频。缺点就是生成速度有点慢。

使用提示:代理/VPN

模型需要从 huggingface.co 网站下载。由于该网站在国内无法访问,请提前设置系统代理或全局代理,否则模型下载将会失败。

整合包已集成大部分所需模型,但可能会检测更新或下载其他依赖小模型,所以如果终端出现 HTTPSConnect 错误时,仍需设置系统代理

在视频翻译软件中使用

  1. 启动API服务。必须启动api服务才可在翻译软件中使用

  2. 打开视频翻译软件,找到TTS设置,选择F5-TTS,输入API地址(默认为 http://127.0.0.1:5010)。

  3. 输入参考音频和音频文本。

  4. Model建议选择f5-tts 生成质量更好

快速测试

不需要测试则无需此操作

  1. 整合包下载解压后,复制一份api.py文件,然后将复制后的该文件改名为 test.py,再删掉 test.py 里所有内容,将以下内容粘贴到test.py中。
  2. 找一段10s左右想克隆音色音频文件,格式为wav,发声清晰无噪音,重命名为 1.wav 放在 test.py同目录下,将 1.wav 中对应的发声文字填写到下方代码的"ref_text" 后,不要换行。
  3. 将想要合成的文字填写到下方代码的 "gen_text" 后。
  4. 双击 run-api.py启动api服务,当启动成功后,在 test.py 所在文件夹地址栏输入cmd,然后回车,输入命令 .\runtime\python test.py,等待执行完毕,文件夹内会生成一个 ceshi.wav,这就是克隆后的声音。

image.png

image.png

import requests

res=requests.post('http://127.0.0.1:5010/api',data={
    "ref_text": '这里填写 1.wav 中对应的文字内容',
    "gen_text": '''这里填写要生成的文本。''',
    "model": 'f5-tts'
},files={"audio":open('./1.wav','rb')})

if res.status_code!=200:
    print(res.text)
    exit()

with open("ceshi.wav",'wb') as f:
    f.write(res.content)

image.png