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: comTrueo gruut produz português europeu (de→dɨ); comFalseusa o léxico próprio, que é brasileiro (de→dʒi,leite→lejtʃi,calma→kɐwmɐ). O código de idioma não muda nada —pt-bré apenas alias deptno 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ê
15h30como data e ignoraR$).
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 checkpointamostras/— 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 meuscodigo/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 base — myshell-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
Model tree for MatheusMarquesEiras/Mello-TTS-Portugues-Teste
Base model
myshell-ai/MeloTTS-Spanish