Dia - modelo TTS de pesos abertos que gera conversas realistas
(github.com/nari-labs)- Dia é um modelo TTS de 1,6B de parâmetros que gera voz conversacional de alta qualidade com base em falas em texto, permitindo controlar emoção e tom por meio de prompts de áudio
- Foi desenvolvido pela Nari Labs, e "Nari" significa "lírio" em coreano puro
- É possível definir os falantes com [S1], [S2], e também gerar expressões não verbais como
(laughs)e(coughs), além de oferecer clonagem de voz simples - Pode ser executado diretamente no HuggingFace, com testes no navegador sem instalação adicional e suporte a ZeroGPU
- Atualmente suporta apenas inglês, exige mais de 10GB de VRAM e há planos para modelos quantizados e suporte multilíngue no futuro
Dia: modelo de síntese de voz focado em diálogo
- Dia é um modelo TTS de pesos abertos com 1,6B de parâmetros desenvolvido pela Nari Labs
- Em vez de gerar vozes separadas por falante como nos TTS tradicionais, ele usa uma abordagem que gera a conversa inteira de uma vez
- Demo: Hugging Face Space
- Código: repositório no GitHub
Principais recursos
Geração de voz conversacional
- É possível especificar os falantes com
[S1],[S2]no texto - Também é possível inserir em texto sons não verbais como
(laughs)e(coughs) - Emoção, tom e estilo de voz podem ser definidos com prompts de áudio
Clonagem de voz
- Ao fornecer um áudio de exemplo junto com a fala correspondente em texto, a função de clonagem de voz é ativada
- É possível testar isso após enviar um áudio no Hugging Face Space
- Para exemplos detalhados, consulte
example/voice_clone.py
Uso como biblioteca
from dia.model import Dia
model = Dia.from_pretrained("nari-labs/Dia-1.6B")
output = model.generate(text)
- É possível exportar em MP3 com
soundfile - Um pacote no PyPI e uma ferramenta CLI também serão disponibilizados em breve
Instalação e execução
Forma rápida de executar (baseada em Gradio)
git clone https://github.com/nari-labs/dia.git
cd dia && uv run app.py
Ou, se você não tiver uv:
cd dia
python -m venv .venv
source .venv/bin/activate
pip install uv
uv run app.py
- O Descript Audio Codec é baixado automaticamente na execução
- A voz é gerada aleatoriamente a cada execução, então é necessário fixar o prompt ou a seed para manter consistência
Desempenho e requisitos de hardware
- Ambiente de teste: PyTorch 2.0+, CUDA 12.6 ou superior
- VRAM recomendada: 10GB ou mais, com versão quantizada prevista para breve
- Em uma GPU A4000, gera cerca de 40 tokens por segundo (86 tokens = cerca de 1 segundo de voz)
- É possível melhorar a velocidade usando
torch.compile
Planos futuros e TODO
- Suporte a Docker
- Otimização da velocidade de inferência
- Quantização do modelo (eficiência de memória)
- Está sendo considerada a expansão para suporte multilíngue e mais falantes
Licença e restrições de uso
- Licença Apache 2.0
- Exemplos de uso proibido:
- Gerar a voz de outra pessoa sem permissão (Identity Misuse)
- Gerar desinformação (como fake news)
- Finalidades ilegais ou maliciosas
Comunidade e contribuições
- A equipe de pesquisa é pequena, composta por 1 pessoa em tempo integral + 1 pessoa em meio período
- É possível compartilhar feedback e sugerir recursos pelo servidor no Discord
- Um projeto orientado a open source que cresce junto com os contribuidores
Referências e base técnica
- Modelo de som: inspirado em SoundStorm, Parakeet e Descript Audio Codec
- Suporte computacional: Google TPU Research Cloud, programa HuggingFace ZeroGPU
- "Nari" significa "lírio" em coreano puro
13 comentários
Uau, isso ficou muito bom. Imagino que não tenha sido nada fácil para vocês dois conseguirem até mesmo os dados de treinamento, então é realmente impressionante.
O próprio criador apareceu por aqui~ Acho que também vou testar uma vez.
Estou ansioso pelo suporte ao coreano!!
Ah, eu ia criar e postar isso, mas você já publicou rapidinho antes. Obrigado.
Nossa, então foi feito por uma pessoa da Coreia! Ouvindo e comparando na página de demonstração, o desempenho está realmente muito bom. Se eu fornecer um prompt de áudio, ele usa aquela voz como referência? Fiquei na dúvida se é preciso inserir separadamente cada exemplo distinguido como s1 e s2.
Obrigado! Não é necessário incluir exemplos separados por [S1] e [S2] no prompt de áudio. Você pode colocar apenas [S1], ou tanto [S1] quanto [S2]. Só precisa garantir que [S1] venha sempre primeiro.
Recebeu muitos upvotes no Hacker News, então o GN+ resumiu automaticamente. Eu só organizei e complementei um pouco.
Torcendo por vocês!!
Obrigado :))
É um modelo que eu criei haha...
Fantástico!! Vou usar muito bem T_T/
Obrigado :)) por favor, deem uma estrela no GitHub rsrs
Concluído! Espero ver notícias em coreano em breve também!! Obrigado
Opiniões no Hacker News
Admiração técnica e elogios
Avaliação da qualidade da voz e das características
Relatos de uso da demo e testes diretos
Discussão sobre uso em audiolivros e romances
Pedidos de recursos e perguntas sobre síntese de voz
Licença e open source
Perguntas sobre dados de treinamento e processo de treino
Controvérsia sobre nome duplicado
Feedback sobre usabilidade e melhorias
venvCasos de desenvolvimento/aplicação e integração
Outros