Mello-TTS-Portugues-Teste

Adaptação experimental e em andamento do MeloTTS para português do Brasil.

📦 Pesos, áudios e amostras: aqui. 💻 Código: github.com/MatheusMarquesEiras/Mello-TTS-Portugues-Teste (também espelhado em codigo/ neste repositório)

⚠️ Isto não é um modelo pronto para uso. É um estudo de caso em progresso. Os checkpoints aqui foram treinados por poucas dezenas de milhares de passos e ainda não produzem fala de qualidade utilizável. Estão publicados para registrar o processo e permitir que outras pessoas retomem o trabalho, não para serem usados em produção.

O MeloTTS oferece inglês, espanhol, francês, chinês, japonês e coreano, mas não português — pedido aberto na comunidade desde 2024 (issue #7, issue #78). Este repositório documenta uma tentativa de preencher essa lacuna.

O achado principal

O português brasileiro cabe no MeloTTS sem nenhuma mudança de arquitetura. Isso não era óbvio, e foi verificado por medição:

Símbolos fonéticos novos necessários 0 (dos 219 existentes)
Slots de idioma livres no checkpoint 3 (language_emb é 10×192, só 7 em uso)
Slots de tom livres 2 (tone_emb é 16×192, 14 em uso)

O PT entra como language_id=7 e tone_start=14. O inventário do gruut em modo brasileiro cabe inteiro na tabela existente depois de uma normalização Unicode NFD — as vogais nasais pré-compostas (õ ĩ ẽ ũ) se decompõem em vogal + til combinante (U+0303), símbolo que já existia. Isso preserva os índices do embedding e permite carregar o checkpoint pré-treinado com strict=True.

Como o frontend de texto foi feito

  • Fonemizador: gruut com use_espeak_phonemes=False. Esse detalhe é decisivo: com True o gruut produz português europeu (de); com False usa o léxico próprio, que é brasileiro (dedʒi, leitelejtʃi, calmakɐwmɐ). O código de idioma não muda nada — pt-br é apenas alias de pt no gruut.
  • BERT: BERTimbau Base (768 dims, que é o que o MeloTTS espera para idiomas não chineses).
  • Normalizador pt-BR próprio para moeda, horas, datas, porcentagens, ordinais e abreviações — o gruut erra feio nisso (lê 15h30 como data e ignora R$).

Base do treino

Os pesos pré-treinados oficiais do MeloTTS (myshell-public-repo-host.s3.amazonaws.com/openvoice/basespeakers/pretrained/) saíram do ar — devolvem 404 para G.pth, D.pth e DUR.pth. Por isso:

  • O gerador parte de myshell-ai/MeloTTS-Spanish, idioma mais próximo (34 dos 42 símbolos observados em comum).
  • O discriminador e o duration discriminator começaram do zero, porque não existe cópia pública deles. Isso torna a convergência mais lenta que um fine-tune normal.

Dados

TTS-Portuguese Corpus — locutor único, brasileiro, gravado especificamente para TTS.

Preparação aplicada: reamostragem de 48 kHz para 44,1 kHz (taxa em que as janelas de espectrograma do MeloTTS foram calibradas), trim conservador de silêncio, filtro de duração e descarte de 5 arquivos com transcrições duplicadas conflitantes presentes no texts.csv original.

Resultado: 3.001 clipes, 6,75 horas.

Conteúdo

  • G_*.pth — gerador (é o necessário para inferência)
  • D_*.pth, DUR_*.pth — discriminadores (necessários apenas para retomar o treino)
  • config.json — configuração do modelo; precisa acompanhar o checkpoint
  • amostras/ — a mesma frase sintetizada em cada checkpoint, para ouvir a evolução da pronúncia ao longo do treino

Uso

O suporte a português não existe no MeloTTS oficial — ele está aqui, em codigo/. Instruções completas em codigo/COMO_USAR.md.

from melo.api import TTS

modelo = TTS(language='PT', device='cpu',
             config_path='config.json',
             ckpt_path='checkpoints/G_44695.pth')
modelo.tts_to_file('O rato roeu a roupa do rei de Roma.',
                   modelo.hps.data.spk2id['PT-BR'], 'saida.wav')

O código vai separado de propósito:

  • codigo/melo/ — arquivos novos, deste projeto (frontend PT completo)
  • codigo/melotts-ptbr.patch — as alterações nos arquivos do MeloTTS upstream, como diff, em vez de redistribuir arquivos de terceiros como se fossem meus
  • codigo/ferramentas/ — preparação de corpus, painel de acompanhamento, geração de amostras, teste de generalização (não precisa para inferência)

O estudo completo, com todas as medições, está em ESTUDO_PT_BR.md.

Créditos e licenças

Este trabalho é uma adaptação. O mérito das partes originais é de:

MeloTTS — MIT · myshell-ai/MeloTTS Wenliang Zhao, Xumin Yu, Zengyi Qin (MIT e MyShell.ai)

@software{zhao2024melo,
  author = {Zhao, Wenliang and Yu, Xumin and Qin, Zengyi},
  title  = {MeloTTS: High-quality Multi-lingual Multi-accent Text-to-Speech},
  url    = {https://github.com/myshell-ai/MeloTTS},
  year   = {2023}
}

TTS-Portuguese Corpus — CC BY 4.0 · Edresson/TTS-Portuguese-Corpus

@article{casanova2022tts,
  title   = {TTS-Portuguese Corpus: a corpus for speech synthesis in Brazilian Portuguese},
  author  = {Casanova, Edresson and Candido Junior, Arnaldo and Shulby, Christopher
             and Oliveira, Frederico Santos de and Teixeira, Jo{\~a}o Paulo and
             Ponti, Moacir Antonelli and Alu{\'i}sio, Sandra Maria},
  journal = {Language Resources and Evaluation},
  year    = {2022},
  doi     = {10.1007/s10579-021-09570-4}
}

BERTimbau — MIT · neuralmind/bert-base-portuguese-cased

@inproceedings{souza2020bertimbau,
  author    = {F\'abio Souza and Rodrigo Nogueira and Roberto Lotufo},
  title     = {{BERT}imbau: pretrained {BERT} models for {B}razilian {P}ortuguese},
  booktitle = {9th Brazilian Conference on Intelligent Systems, {BRACIS}},
  year      = {2020}
}

gruut — MIT · rhasspy/gruut · Michael Hansen

Gerador basemyshell-ai/MeloTTS-Spanish, MIT


Os pesos deste repositório seguem a licença MIT do MeloTTS. O corpus usado no treino é CC BY 4.0, o que exige atribuição — mantida acima.

Downloads last month
34
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for MatheusMarquesEiras/Mello-TTS-Portugues-Teste

Finetuned
(1)
this model