Home
Login

Modelo leve de texto para fala que gera fala natural e de alta qualidade a partir de descrições em linguagem natural.

Apache-2.0Python 5.3khuggingfaceparler-tts Last Updated: 2024-12-10

Apresentação Detalhada do Projeto Parler TTS

Visão Geral do Projeto

Parler-TTS é um modelo leve de texto para fala (TTS) capaz de gerar fala natural e de alta qualidade, com controle sobre o estilo do falante (gênero, tom, maneira de falar, etc.). Este projeto é uma implementação de código aberto do artigo de pesquisa da Stability AI e da Universidade de Edimburgo, "Natural language guidance of high-fidelity text-to-speech with synthetic annotations".

Características do Projeto

  • Totalmente de Código Aberto: Ao contrário de outros modelos TTS, o Parler-TTS é uma versão totalmente de código aberto.
  • Conjunto de Dados Aberto: Todos os conjuntos de dados, pré-processamento, código de treinamento e pesos são publicados sob uma licença permissiva.
  • Controle de Linguagem Natural: As características da fala podem ser controladas por meio de prompts de texto simples.
  • Múltiplas Escalas de Modelo: Versões de modelo com diferentes tamanhos de parâmetros estão disponíveis.

Versões de Modelo Disponíveis

1. Parler-TTS Mini v1

  • Número de Parâmetros: 880M
  • Dados de Treinamento: 45K horas de dados de audiolivros
  • Características: Leve, adequado para inferência rápida

2. Parler-TTS Large v1

  • Número de Parâmetros: 2.2B parâmetros
  • Dados de Treinamento: 45K horas de dados de áudio
  • Características: Geração de fala de maior qualidade

3. Parler-TTS Mini Expresso

  • Funcionalidades Especiais: Oferece controle emocional superior (alegria, confusão, riso, tristeza) e vozes consistentes (Jerry, Thomas, Elisabeth, Talia)

Instalação

Instalação Básica

pip install git+https://github.com/huggingface/parler-tts.git

Usuários de Apple Silicon

pip3 install --pre torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cpu

Uso

Exemplo de Uso Básico

import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf

device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = ParlerTTSForConditionalGeneration.from_pretrained("parler-tts/parler-tts-mini-v1").to(device)
tokenizer = AutoTokenizer.from_pretrained("parler-tts/parler-tts-mini-v1")

prompt = "Hey, how are you doing today?"
description = "A female speaker delivers a slightly expressive and animated speech with a moderate speed and pitch. The recording is of very high quality, with the speaker's voice sounding clear and very close up."

input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)

generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("parler_tts_out.wav", audio_arr, model.config.sampling_rate)

Usando Falantes Pré-Definidos

O modelo suporta 34 falantes pré-definidos, incluindo: Laura, Gary, Jon, Lea, Karen, Rick, Brenda, David, Eileen, Jordan, Mike, Yann, Joy, James, Eric, Lauren, Rose, Will, Jason, Aaron, Naomie, Alisa, Patrick, Jerry, Tina, Jenna, Bill, Tom, Carol, Barbara, Rebecca, Anna, Bruce, Emily.

prompt = "Hey, how are you doing today?"
description = "Jon's voice is monotone yet slightly fast in delivery, with a very close recording that almost has no background noise."

input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)

generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("parler_tts_out.wav", audio_arr, model.config.sampling_rate)

Dicas de Uso

  • Use "very clear audio" para gerar áudio da mais alta qualidade.
  • Use "very noisy audio" para adicionar um alto nível de ruído de fundo.
  • A pontuação pode ser usada para controlar a prosódia da fala, por exemplo, usando vírgulas para adicionar pequenas pausas na fala.
  • As características restantes da fala (gênero, velocidade da fala, tom e reverberação) podem ser controladas diretamente por meio de prompts.

Treinamento e Ajuste Fino

Treinamento Rápido

accelerate launch ./training/run_parler_tts_training.py ./helpers/training_configs/starting_point_v1.json

Suporte para Ajuste Fino

O projeto fornece um guia completo de treinamento e ajuste fino, incluindo:

  • Introdução à arquitetura
  • Etapas iniciais
  • Guia de treinamento detalhado
  • Exemplos de ajuste fino de conjunto de dados de um único falante

Otimizações Técnicas

O projeto inclui várias otimizações de desempenho:

  • Compatibilidade com SDPA e Flash Attention 2
  • Capacidade de compilação de modelo
  • Suporte para geração de streaming
  • Otimização de cache estático

Estrutura do Projeto

  • Código de Inferência: Funcionalidade principal de inferência TTS
  • Código de Treinamento: Fluxo completo de treinamento e ajuste fino
  • Integração Data-Speech: Trabalha em conjunto com bibliotecas de anotação de conjuntos de dados
  • Ferramentas de Otimização: Várias opções de otimização de velocidade de inferência

Casos de Uso

  • Produção de audiolivros
  • Assistentes de voz
  • Produção de conteúdo educacional
  • Tecnologia assistiva de acessibilidade
  • Criação de conteúdo multimídia

Licença de Código Aberto e Citação

O projeto usa uma licença de código aberto permissiva, incentivando a contribuição da comunidade e o uso comercial. Se você usar este projeto, sugere-se citar:

@misc{lacombe-etal-2024-parler-tts,
author = {Yoach Lacombe and Vaibhav Srivastav and Sanchit Gandhi},
title = {Parler-TTS},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/huggingface/parler-tts}}
}

Contribuições da Comunidade

O projeto acolhe contribuições da comunidade, especialmente nas seguintes áreas:

  • Expansão e diversidade do conjunto de dados
  • Otimização de métodos de treinamento
  • Suporte multilíngue
  • Otimização de desempenho
  • Melhoria de métricas de avaliação

Parler TTS representa um avanço significativo na tecnologia TTS de código aberto, fornecendo uma solução de texto para fala poderosa e flexível para pesquisadores e desenvolvedores.

Star History Chart