3 pontos por GN⁺ 2026-01-10 | 1 comentários | Compartilhar no WhatsApp
  • Sopro TTS é um modelo leve de texto para fala focado em inglês, com suporte a clonagem de voz zero-shot e geração em streaming
  • Tem 169 milhões de parâmetros e gera 30 segundos de áudio em cerca de 7,5 segundos, com velocidade de 0,25 RTF em CPU
  • Consegue clonar a voz de um falante usando apenas 3 a 12 segundos de áudio de referência, com uma arquitetura baseada em dilated conv no estilo WaveNet e cross-attention leve
  • É um projeto de baixo orçamento treinado com uma única GPU L40S, com espaço para melhoria de desempenho à medida que a qualidade dos dados evoluir
  • Suporta modos streaming e não streaming, além de CLI, API Python e demo web, oferecendo alta utilidade para experimentação e integração por desenvolvedores

Visão geral do Sopro TTS

  • Sopro significa “fôlego” em português e foi desenvolvido como um modelo TTS leve para inglês
    • Arquitetura que combina dilated convolution e cross-attention em vez de Transformer
    • Projeto individual treinado com uma única GPU L40S
  • Principais características
    • 169M de parâmetros, suporte a streaming e clonagem de voz zero-shot
    • 0,25 RTF em CPU, gerando 30 segundos de áudio em 7,5 segundos
    • Clonagem de voz com áudio de referência de 3 a 12 segundos

Instalação e execução

  • Apenas versões mínimas de dependências são especificadas, então é possível instalar sem criar um ambiente separado
    • Exemplo: a versão torch==2.6.0 melhora o desempenho em cerca de 3x em CPU M3
  • Como instalar
    • PyPI: pip install sopro
    • Repositório GitHub: após git clone, execute pip install -e .

Exemplos de uso

  • Exemplo de execução via CLI
    • É possível definir texto, áudio de referência e arquivo de saída
    • São fornecidos parâmetros de controle detalhados como --style_strength, --no_stop_head, --stop_threshold, --stop_patience
  • Exemplo com API Python
    • Carregamento do modelo com SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")
    • Suporte tanto a modo não streaming quanto a modo streaming
    • No modo streaming, os chunks de áudio gerados podem ser combinados em sequência

Demo interativa de streaming

  • Após a instalação, execute um servidor local com o comando uvicorn demo.server:app
  • Ou faça build e execute com Docker
    • docker build -t sopro-demo .
    • docker run --rm -p 8000:8000 sopro-demo
  • No navegador, acesse http://localhost:8000 para ver a demo

Observações e limitações

  • Pode haver falta de consistência na saída, exigindo ajuste de parâmetros
  • A qualidade da clonagem de voz depende fortemente da qualidade do microfone e do ruído ambiente
  • A versão não streaming oferece melhor qualidade de áudio
  • O comprimento de geração é limitado a cerca de 32 segundos (400 frames); acima disso, ocorrem saídas alucinatórias
  • Ao usar torchaudio, ffmpeg é necessário; recomenda-se usar soundfile
  • Os dados de treino estão em formato pré-tokenizado, e o áudio original foi descartado por limitações de armazenamento
  • Há menção a planos futuros para abrir o código de treinamento e ampliar o suporte multilíngue

Dados de treinamento

  • Uso dos datasets Emilia YODAS, LibriTTS-R, Mozilla Common Voice 22 e MLS

Referências e tecnologias de base

  • Baseado em pesquisas e código como Mimi Codec (Kyutai), WaveNet, Attentive Stats Pooling, AudioLM e CSM

1 comentários

 
GN⁺ 2026-01-10
Comentários do Hacker News
  • Projeto muito legal e útil
    Pessoalmente, acho que o Chatterbox-TTS-Server é a melhor alternativa
    É mais lento, mas a qualidade de áudio é bem alta

    • Eu prefiro o IndexTTS2
      Acho esse modelo uma ferramenta muito poderosa porque permite clonagem de voz e controle manual de emoção por meio de vetores de emoção
      Foi especialmente útil em um projeto de orquestração de modelos no qual estou trabalhando
      Um modelo externo de classificação de emoções controla ao mesmo tempo a persona do LLM e a saída do TTS para manter consistência
      A probabilidade de busca de “memória” também muda conforme o estado emocional, e quase não existe TTS com um nível de controle tão fino quanto o IndexTTS2
    • Mas a qualidade de saída do Chatterbox-TTS é muito superior
      A saída do Sopro TTS, com base no vídeo do GitHub, é seriamente ruim e em nível impraticável para uso real
      Já o Chatterbox produz resultados impressionantes
      Minha GPU é uma RTX5090, e ele é bem rápido, com cerca de 2 segundos de runtime para gerar 1 segundo de áudio
      Dá para conferir o primeiro exemplo e o segundo exemplo. O segundo é uma demo clonando a voz do youtuber ArbitorIan
  • Muito legal!
    Eu uso Kokoro (82M) localmente, e funciona rápido com qualidade de áudio excelente

    • Alguém conhece uma boa stack open source de assistente de voz?
      Eu faço a ativação por voz com ricky0123/vad, uso a Web Speech API para reconhecimento rápido e depois TTS comercial
      Ainda não encontrei nada open source que seja rápido
    • Também testei o Kokoro-JS rodando no navegador, mas a latência era alta demais e ele não suportava o idioma que eu queria
  • Fiquei curioso sobre o que significa “zero-shot

    • Zero-shot é uma forma de fazer o modelo funcionar com um único prompt (ou com contexto adicional na forma de arquivo)
      Few-shot é quando você orienta o modelo com alguns exemplos, e multi-shot é quando passa por várias rodadas de prompt e correção
    • Neste caso, parece significar que dá para obter um bom clone sem fornecer outras amostras de voz
  • Dá a impressão de que conseguiram fazer clonagem de voz em nível Mission Impossible sem uma compilação longa
    Também compartilho um vídeo no YouTube relacionado e um poema cheio de trocadilhos linguísticos

  • Testei em inglês e achei bastante impressionante
    Para um projeto de baixo orçamento, o resultado foi surpreendente e foi muito fácil de usar

    • Mas como é só para inglês, não consegui testar outros idiomas
      Se existisse uma versão em alemão, eu certamente gostaria de experimentar
  • Considerando as restrições, é um resultado bem impressionante
    Fico curioso se há planos de lançar uma versão mais poderosa, com menos artefatos e maior custo computacional
    Eu uso principalmente o Chatterbox, mas se isto evoluir para alta qualidade pode virar uma boa alternativa

    • Este é o meu projeto paralelo
      O custo computacional é bem alto, mas se a reação da comunidade for boa, penso em desenvolver mais
      Aliás, o Chatterbox é um excelente modelo e uma fonte de inspiração
  • Fiquei curioso sobre o significado de “zero-shot”

    • Acho que esses termos em *-shot são, na prática, jargão da indústria sem muito sentido
      São ainda mais arbitrários do que notação Big O
    • Segundo a definição da Wikipedia, zero-shot é um cenário em que se predizem, no teste, amostras de classes que não foram vistas no treinamento
      Ou seja, se o modelo aprende a probabilidade condicional P(Audio|Voice) e consegue amostrar para classes de voz não vistas durante o treino, então é zero-shot
      Fornecer áudio de referência não muda os pesos do modelo; isso entra na categoria de fornecimento de contexto
  • Ouvi o áudio e fiquei surpreso com o quanto a qualidade sonora é horrível
    É pior do que vozes de computador de 15 anos atrás, e não entendo por que as pessoas estão dizendo que é bom
    Testei em vários navegadores e foi igual

    • Algumas vozes de referência podem causar queda de qualidade
      Se estiver tão ruim assim, pode haver outro problema, então eu gostaria de investigar junto
    • Se esta amostra é a melhor da demo, a distorção de pronúncia foi tão forte que me causou rejeição imediata
    • Por um momento achei que era a voz do RFK
    • Testei várias vozes, mas o áudio gerado não era nada parecido e nem soava como uma voz de verdade
    • Também achei difícil de acreditar ouvindo. A qualidade sonora desagradável era tanta que ficou difícil ouvir por mais de 1 minuto
  • Tecnologia realmente muito legal
    Acho que vai melhorar ainda mais no futuro
    Mas, nem que seja como solução provisória, seria bom adicionar um pós-processamento simples de áudio para reduzir a aspereza vocal (razziness)

  • Fico curioso se algum desses modelos funciona na forma de um modulador de voz speech-to-speech
    Ou seja, recebe uma amostra de voz fixa (prompt) e um fluxo de áudio de entrada em tempo real, e converte a voz de entrada para o tom e timbre do prompt
    No caso de V-tubers, não haveria necessidade de trocar o prompt com frequência, então talvez desse até para aplicar um timbre fixo com um único fine-tuning

    • O Chatterbox TTS suporta isso no modo “voice cloning”
      Mas o processamento em streaming precisa ser implementado por conta própria
      Ele recebe áudio A (estilo) e B (conteúdo) e combina o timbre de A com a pronúncia e entonação de B
      Na prática, esse tipo de modelo faz mais sentido como S+STS (speech+style to speech) do que como “TTS” propriamente dito
    • Não conheço opções open source, mas a ElevenLabs já implementa essa ideia há bastante tempo
      Está explicado em detalhes no blog oficial
    • RVC (Retrieval Voice Conversion) também é um bom conversor de voz open source
      Mas houve conflito entre o criador original e os desenvolvedores, então é melhor evitar o fork principal e procurar um fork atualizado mantido em inglês
    • Na prática, muitos V-tubers usam esse tipo de tecnologia, então com certeza deve existir uma solução estável