Introdução geral
O F5-TTS é um novo sistema não-autoregressivo de conversão de texto em fala (TTS) baseado em um transformador de difusão (DiT) compatível com o fluxo. O sistema aprimora significativamente a qualidade e a eficiência da síntese usando o modelo ConvNeXt para otimizar a representação do texto e facilitar o alinhamento com a fala. O F5-TTS oferece suporte ao treinamento em conjuntos de dados multilíngues com recursos de amostra zero altamente naturais e expressivos, alternância de código contínua e eficiência de controle de velocidade. O projeto é de código aberto e visa a promover o desenvolvimento da comunidade.
Esse modelo elimina os módulos complexos dos sistemas TTS tradicionais, como modelos de duração, alinhamento de fonemas e codificadores de texto, e, em vez disso, consegue gerar a fala preenchendo o texto com o mesmo comprimento da fala de entrada e aplicando métodos de redução de ruído.
Uma das principais inovações do F5-TTS é Amostragem de oscilação que melhora significativamente a eficiência na fase de inferência e permite recursos de processamento em tempo real. Esse recurso é adequado para cenários que exigem síntese rápida de fala, como assistentes de voz e sistemas de fala interativa.
Suporte ao F5-TTS clonagem de fala de amostra zeroEle também oferece a capacidade de gerar uma ampla variedade de vozes e sotaques sem a necessidade de grandes quantidades de dados de treinamento. controle emocional responder cantando Ajuste de velocidade Funcionalidade. Com forte suporte multilíngue, o sistema é particularmente adequado para aplicativos que exigem a geração de conteúdo de áudio diversificado, como audiolivros, módulos de e-learning e materiais de marketing.
Lista de funções
- Conversão de texto em fala: converta o texto de entrada em uma fala natural e suave.
- Geração de amostra zero: gere fala de alta qualidade sem amostras pré-gravadas.
- Reprodução emocional: suporte para gerar discurso com emoções.
- Controle de velocidade: o usuário pode controlar a velocidade de geração da fala.
- Suporte a vários idiomas: suporta a geração de fala em vários idiomas.
- Código-fonte aberto: o código completo e os pontos de verificação do modelo são fornecidos para facilitar o uso e o desenvolvimento da comunidade.
Usando a Ajuda
Processo de instalação
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 # Instalar o PyTorch (com suporte a CUDA) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # Instalar transformadores pip install transformers git clone https://github.com/SWivid/F5-TTS.git cd F5-TTS pip install -e . # Inicie um aplicativo Gradio (interface da Web) f5-tts_infer-gradio # Especifique a porta/host f5-tts_infer-gradio --port 7860 --host 0.0.0.0 # Inicie um link de compartilhamento f5-tts_infer-gradio --share
Comando de instalação em um clique do 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 . pip install -e . && \ f5-tts_infer-gradio --port 7860 --host 0.0.0.0
F5-TTS google Colab em execução
Observação: o registro no ngrok é necessário para solicitar uma chave para obter penetração na intranet.
!pip install pyngrok transformers gradio # Importe as bibliotecas necessárias importar 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 # Clone e instale o projeto !git clone https://github.com/SWivid/F5-TTS.git F5-TTS !pip install -e . !ngrok config add-authtoken 2hKI7tLqJVdnbgM8pxM4nyYP7kQ_3vL3RWtqXQUUdwY5JE4nj # Configuração do ngrok e do gradio import gradio as gr from pyngrok import ngrok importar threading import time import socket import requests def is_port_in_use(port): with socket.socket(socket.AF_INET, socket. with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:: return s.connect_ex(('localhost', port)) == 0 return s.connect_ex(('localhost', port)) == 0 def wait_for_server(port, timeout=60): start_time = time. start_time = time.time() while time.time() - start_time < timeout. if is_port_in_use(port). start_time = time. response = requests.get(f'http://localhost:{port}') if response.status_code == 200:: if response.status_code == 200 return True exceto. passar time.sleep(2) return False # Certifique-se de que o ngrok não esteja em execução ngrok.kill() # Inicie o Gradio em um novo thread 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() # Aguardando o início do serviço Gradio print("Aguardando o início do serviço Gradio...") print("Aguardando o início do serviço Gradio...") if wait_for_server(7860). print("O serviço Gradio foi iniciado") # Iniciando o ngrok public_url = ngrok.connect(7860) print(f"\n=== Informações de acesso ===") print(f "URL do ngrok: {public_url}") print("===============\n") print(f "URL do Ngrok: {public_url}") print("Tempo limite de inicialização do serviço Gradio") # Mantenha o aplicativo em execução while True. time.sleep(1) time.sleep(1) except KeyboardInterrupt: ngrok.kill() ngrok.kill() ngrok.kill() !f5-tts_infer-cli \\ ---modelo "F5-TTS" \\ --ref_audio "/content/test.MP3" \\ --ref_text "Bem-vindo ao Chief AI Sharing Circle, a Microsoft lançou o OmniParser, uma grande ferramenta de análise de tela baseada em modelo. Essa ferramenta foi projetada para aprimorar a automação da interface do usuário." \ --gen_text "Bem-vindo ao Círculo de Compartilhamento do Chefe de IA, hoje demonstraremos em detalhes outro projeto de clonagem de fala de código aberto."
Processo de uso
Modelos de treinamento
- Defina as configurações de aceleração, como o uso de várias GPUs e FP16:
acelerar a configuração
- Iniciar o treinamento:
acelerar o lançamento do arquivo test_train.py
inferência
- Faça o download dos pontos de controle do modelo pré-treinado.
- Raciocínio único:
- Modifique o arquivo de configuração para atender aos requisitos, por exemplo, duração fixa e tamanho da etapa:
python teste_inferir_single.py
- Modifique o arquivo de configuração para atender aos requisitos, por exemplo, duração fixa e tamanho da etapa:
- Raciocínio de lote:
- Prepare o conjunto de dados de teste e atualize o caminho:
bash test_infer_batch.sh
- Prepare o conjunto de dados de teste e atualize o caminho:
Procedimento de operação detalhado
- Conversão de texto em fala::
- Depois que o texto é inserido, o sistema o converte automaticamente em fala, e o usuário pode selecionar diferentes estilos de fala e emoções.
- Geração de amostra zero::
- O usuário não precisa fornecer nenhuma amostra pré-gravada e o sistema gera uma fala de alta qualidade com base no texto de entrada.
- reprodução emocional::
- Os usuários podem selecionar diferentes rótulos de emoção e o sistema gerará a fala com a emoção correspondente.
- controle de velocidade::
- Os usuários podem controlar a velocidade da geração de fala ajustando os parâmetros para atender às necessidades de diferentes cenários.
- Suporte a vários idiomas::
- O sistema suporta a geração de fala em vários idiomas, e os usuários podem escolher diferentes idiomas conforme necessário.