import gradio as gr import tempfile from TTS.utils.synthesizer import Synthesizer from huggingface_hub import hf_hub_download # Repositório do modelo no Hugging Face Hub REPO_ID = "mbarnig/lb-de-fr-en-pt-coqui-vits-tts" # Configurações da interface my_title = "🇵🇹 Sintetizador de Fala em Português com Coqui TTS" my_description = "Um sintetizador de fala em português baseado no modelo YourTTS da Coqui.ai. Insira o texto e gere o áudio!" # Texto de exemplo com o máximo de tokens (500 tokens) max_tokens_text = """ O vento norte e o Sol discutiam quem era o mais forte, quando surgiu um viajante envolvido numa capa. O vento começou a soprar com toda a força, mas quanto mais soprava, mais o viajante se enrolava em sua capa. Então, o Sol começou a brilhar suavemente, e o viajante, sentindo o calor, logo tirou a capa. Assim, o Sol provou que o calor e a gentileza são mais eficazes do que a força bruta. Esta história nos ensina que, muitas vezes, a delicadeza e a paciência são mais poderosas do que a agressividade. Em nossa vida diária, podemos aplicar essa lição ao lidar com os outros, buscando sempre a compreensão e o diálogo. A natureza nos oferece muitos exemplos de como a suavidade pode superar a força, e essa é uma lição valiosa para todos nós. Que possamos sempre lembrar dessa história e agir com sabedoria em nossas interações com os outros. """ # Vozes disponíveis para português TTS_VOICES = [ "Ed", # Voz masculina "Linda" # Voz feminina ] # Exemplo de uso my_examples = [ [max_tokens_text, "Ed"], # Texto com máximo de tokens e voz masculina [max_tokens_text, "Linda"] # Texto com máximo de tokens e voz feminina ] # Artigo com informações adicionais my_article = """

Guia do Usuário

1. Insira o texto em português no campo de entrada (até 500 tokens).

2. Selecione a voz desejada (masculina ou feminina).

3. Clique em "Submit" para gerar o áudio.

4. Reproduza o áudio gerado ou faça o download.

""" # Componentes de entrada e saída my_inputs = [ gr.Textbox(lines=10, label="Texto em Português", placeholder="Insira o texto aqui... (até 500 tokens)"), gr.Radio(label="Voz", choices=TTS_VOICES, value="Ed") # Voz padrão: masculina ] my_outputs = gr.Audio(type="filepath", label="Áudio Gerado") # Função para sintetizar a fala def tts(text: str, speaker_idx: str): # Baixar os arquivos do modelo best_model_path = hf_hub_download(repo_id=REPO_ID, filename="best_model.pth") config_path = hf_hub_download(repo_id=REPO_ID, filename="config.json") speakers_path = hf_hub_download(repo_id=REPO_ID, filename="speakers.pth") languages_path = hf_hub_download(repo_id=REPO_ID, filename="language_ids.json") speaker_encoder_model_path = hf_hub_download(repo_id=REPO_ID, filename="model_se.pth") speaker_encoder_config_path = hf_hub_download(repo_id=REPO_ID, filename="config_se.json") # Inicializar o sintetizador synthesizer = Synthesizer( best_model_path, config_path, speakers_path, languages_path, None, None, speaker_encoder_model_path, speaker_encoder_config_path, False ) # Gerar o áudio wavs = synthesizer.tts(text, speaker_idx, "Português") # Idioma fixo: Português # Salvar o áudio em um arquivo temporário with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as fp: synthesizer.save_wav(wavs, fp) return fp.name # Criar a interface Gradio iface = gr.Interface( fn=tts, inputs=my_inputs, outputs=my_outputs, title=my_title, description=my_description, article=my_article, examples=my_examples, allow_flagging=False ) # Iniciar a interface iface.launch()