AI个人学习
和实操指南

F5-TTS:少样本语音克隆,生成流畅且感情丰富的克隆声音

综合介绍

F5-TTS 是一种新型非自回归文本到语音(TTS)系统,基于流匹配的扩散变换器(Diffusion Transformer, DiT)。该系统通过使用 ConvNeXt 模型来优化文本表示,使其更容易与语音对齐,从而显著提升了合成质量和效率。F5-TTS 支持多语言数据集训练,具备高度自然和富有表现力的零样本能力、无缝代码切换能力以及速度控制效率。该项目开源,旨在促进社区发展。

这款模型摒弃了传统 TTS 系统中的复杂模块,例如时长模型、音素对齐和文本编码器等,而是通过将文本填充至与输入语音相同的长度,并应用去噪方法实现语音生成。

F5-TTS 的一大创新点是 Sway Sampling 策略,在推理阶段显著提升了效率,使其具备实时处理能力。这种特性适用于需要快速语音合成的场景,如语音助手和交互式语音系统。


F5-TTS 支持 零样本语音克隆,无需大量训练数据即可生成多种声音和口音,还提供了 情绪控制速度调整 功能。该系统多语言支持强大,特别适合需要生成多样音频内容的应用场景,比如有声书、电子学习模块和营销材料等。

 

F5-TTS:少样本语音克隆,生成流畅且感情丰富的克隆声音-1

 

F5-TTS:少样本语音克隆,生成流畅且感情丰富的克隆声音-1

 

功能列表

  • 文本到语音转换:将输入文本转换为自然流畅的语音。
  • 零样本生成:无需预先录制样本即可生成高质量语音。
  • 情绪复刻:支持生成带有情感的语音。
  • 速度控制:用户可以控制语音生成的速度。
  • 多语言支持:支持多种语言的语音生成。
  • 开源代码:提供完整的代码和模型检查点,方便社区使用和开发。

 

使用帮助

安装流程

conda create -n f5-tts python=3.10
conda activate f5-tts

sudo apt update
sudo apt install -y ffmpeg

pip uninstall torch torchvision torchaudio transformers

# 安装 PyTorch(包含 CUDA 支持)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

# 安装 transformers
pip install transformers

git clone https://github.com/SWivid/F5-TTS.git
cd F5-TTS
pip install -e .

# Launch a Gradio app (web interface)
f5-tts_infer-gradio

# Specify the port/host
f5-tts_infer-gradio --port 7860 --host 0.0.0.0

# Launch a share link
f5-tts_infer-gradio --share

F5-TTS一键安装命令

conda create -n f5-tts python=3.10 -y && \
conda activate f5-tts && \
sudo apt update && sudo apt install -y ffmpeg && \
pip uninstall -y torch torchvision torchaudio transformers && \
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 transformers && \
git clone https://github.com/SWivid/F5-TTS.git && \
cd F5-TTS && \
pip install -e . && \
f5-tts_infer-gradio --port 7860 --host 0.0.0.0

 

F5-TTS google Colab运行

注意:需要ngrok注册后申请密钥,实现内网穿透。

 

!pip install pyngrok transformers gradio

# 导入所需库
import os
from pyngrok import ngrok

!apt-get update && apt-get install -y ffmpeg
!pip uninstall -y torch torchvision torchaudio transformers
!pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 transformers

# 克隆并安装项目
!git clone https://github.com/SWivid/F5-TTS.git
%cd F5-TTS
!pip install -e .

!ngrok config add-authtoken 2hKI7tLqJVdnbgM8pxM4nyYP7kQ_3vL3RWtqXQUUdwY5JE4nj

# 配置 ngrok 和 gradio
import gradio as gr
from pyngrok import ngrok
import threading
import time
import socket
import requests

def is_port_in_use(port):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        return s.connect_ex(('localhost', port)) == 0

def wait_for_server(port, timeout=60):
    start_time = time.time()
    while time.time() - start_time < timeout:
        if is_port_in_use(port):
            try:
                response = requests.get(f'http://localhost:{port}')
                if response.status_code == 200:
                    return True
            except:
                pass
        time.sleep(2)
    return False

# 确保 ngrok 没有在运行
ngrok.kill()

# 在新线程中启动 Gradio
def run_gradio():
    import sys
    import f5_tts.infer.infer_gradio
    sys.argv = ['f5-tts_infer-gradio', '--port', '7860', '--host', '0.0.0.0']
    f5_tts.infer.infer_gradio.main()

thread = threading.Thread(target=run_gradio)
thread.daemon = True
thread.start()

# 等待 Gradio 服务启动
print("等待 Gradio 服务启动...")
if wait_for_server(7860):
    print("Gradio 服务已启动")
    # 启动 ngrok
    public_url = ngrok.connect(7860)
    print(f"\n=== 访问信息 ===")
    print(f"Ngrok URL: {public_url}")
    print("===============\n")
else:
    print("Gradio 服务启动超时")

# 保持程序运行
while True:
    try:
        time.sleep(1)
    except KeyboardInterrupt:
        ngrok.kill()
        break

!f5-tts_infer-cli \
--model "F5-TTS" \
--ref_audio "/content/test.MP3" \
--ref_text "欢迎来到首席AI分享圈,微软发布了一款基于大模型的屏幕解析工具OmniParser.这款工具是专为增强用户界面自动化而设计的它." \
--gen_text "欢迎来到首席AI分享圈,今天将为大家详细演示另一款开源语音克隆项目。"

 

使用流程

训练模型

  1. 配置加速设置,例如使用多 GPU 和 FP16:
    accelerate config
    
  2. 启动训练:
    accelerate launch test_train.py
    

推理

  1. 下载预训练模型检查点。
  2. 单次推理:
    • 修改配置文件以满足需求,例如固定时长和步长:
      python test_infer_single.py
      
  3. 批量推理:
    • 准备测试数据集并更新路径:
      bash test_infer_batch.sh
      

详细操作流程

  1. 文本到语音转换
    • 输入文本后,系统会自动将其转换为语音,用户可以选择不同的语音风格和情感。
  2. 零样本生成
    • 用户无需提供任何预先录制的样本,系统会根据输入文本生成高质量的语音。
  3. 情绪复刻
    • 用户可以选择不同的情感标签,系统会生成带有相应情感的语音。
  4. 速度控制
    • 用户可以通过调整参数来控制语音生成的速度,满足不同场景的需求。
  5. 多语言支持
    • 系统支持多种语言的语音生成,用户可以根据需要选择不同的语言。
AI轻松学

普通人的AI入门指南

帮助你以低成本、零基础学会如何利用AI工具。AI就像办公软件一样,是每个人的必备技能。 掌握AI会让你在求职中占据优势,在未来的工作和学习中事半功倍。

查看详情>
未经允许不得转载:首席AI分享圈 » F5-TTS:少样本语音克隆,生成流畅且感情丰富的克隆声音

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文