Prometheus / app.py
Praieiro's picture
Update app.py
6814531 verified
Raw History Blame Contribute Delete
1.5 kB
import io
import os
import soundfile as sf
import gradio as gr
import spaces
from huggingface_hub import hf_hub_download
from f5_tts.api import F5TTS
REF_AUDIO_PATH = "PraieiroVox.wav"
f5tts_instance = None
def get_model():
global f5tts_instance
if f5tts_instance is None:
print("Carregando modelo F5-TTS pt-br na GPU...")
ckpt = hf_hub_download("firstpixel/F5-TTS-pt-br", "pt-br/model_last.safetensors")
f5tts_instance = F5TTS(model="F5TTS_Base", ckpt_file=ckpt, device="cuda")
return f5tts_instance
@spaces.GPU(duration=60)
def clone_voice(text: str):
if not text or not text.strip():
return None
model = get_model()
wav, sr, _ = model.infer(
ref_file=REF_AUDIO_PATH,
ref_text="",
gen_text=text.strip(),
remove_silence=True,
)
return sr, wav
with gr.Blocks(title="Praieiro Vox · Clonagem de Voz") as demo:
gr.Markdown("# 🌊 Praieiro Vox · Voz Oficial do Praieiro Bot")
gr.Markdown("Motor de clonagem F5-TTS (pt-BR) rodando na GPU do Praieiro.")
text_input = gr.Textbox(
label="Texto a ser falado",
value="Fala meu brother! Seu pedido na praia já tá sendo preparado e chega voando!",
lines=3,
)
btn = gr.Button("🎤 Gerar Fala com a Voz Clonada", variant="primary")
audio_output = gr.Audio(label="Áudio Gerado", type="numpy")
btn.click(fn=clone_voice, inputs=[text_input], outputs=[audio_output], api_name="clone_voice")
demo.launch()