File size: 3,803 Bytes
b59e10d 69aeb7e b59e10d 69aeb7e a295d2a b59e10d 69aeb7e b59e10d 69aeb7e b59e10d 69aeb7e b59e10d a295d2a b59e10d 69aeb7e a295d2a 69aeb7e b59e10d 69aeb7e b59e10d a295d2a 69aeb7e b59e10d 69aeb7e b59e10d 69aeb7e b59e10d 69aeb7e b59e10d 69aeb7e b59e10d 69aeb7e b59e10d 69aeb7e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
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 = """
<h3>Guia do Usuário</h3>
<p>1. Insira o texto em português no campo de entrada (até 500 tokens).</p>
<p>2. Selecione a voz desejada (masculina ou feminina).</p>
<p>3. Clique em "Submit" para gerar o áudio.</p>
<p>4. Reproduza o áudio gerado ou faça o download.</p>
"""
# 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() |