Spaces:
Sleeping
Sleeping
File size: 1,858 Bytes
3e69bb2 82a3b65 3e69bb2 89cbeba 82a3b65 5712a10 7cbab11 5712a10 82a3b65 289e144 82a3b65 bed59c8 82a3b65 bed59c8 82a3b65 3e69bb2 82a3b65 |
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 |
import gradio as gr
import numpy as np
import tensorflow as tf
from tensorflow import keras
import torch
from huggingface_hub import hf_hub_download
from speechbrain.inference.TTS import Tacotron2
# Cargar Tacotron2
tacotron2 = Tacotron2.from_hparams(
source="speechbrain/tts-tacotron2-ljspeech",
savedir="tmpdir_tts",
run_opts={"device": "cpu"}
)
# Cargar tu modelo generator.keras
# Cargar tu generator.keras desde HuggingFace
# Cargar tu modelo generator.keras desde HuggingFace
model_path = hf_hub_download(
repo_id="Bmo411/WGAN",
filename="generator_epoch_3500.keras"
)
generator = keras.models.load_model(model_path, compile=False)
# Función de generación
def text_to_audio(text):
# 1. Convertir texto a mel-spectrograma
mel_output, _, _ = tacotron2.encode_text(text)
mel = mel_output.detach().cpu().numpy().astype(np.float32) # (80, frames)
# 2. Preparar para generator
mel_input = np.expand_dims(mel,axis=0) # (1, 80, frames, 1)
mel_input = np.expand_dims(mel_input,axis=-1) # (1, 80, frames, 1)
# 3. Usar generator para generar audio
fake_audio = generator(mel_input, training=False)
fake_audio = np.squeeze(fake_audio, axis=-1) # (samples,)
# 4. Asegurar que esté en [-1, 1] para audio
fake_audio = np.clip(fake_audio, -1.0, 1.0)
# 5. Devolver audio como (numpy_array, sample_rate)
return fake_audio, 8000 # tu modelo está entrenado en 8 kHz, ¿verdad?
# Interfaz Gradio
interface = gr.Interface(
fn=text_to_audio,
inputs=gr.Textbox(lines=1, placeholder="Escribe un número (ej. nine)"),
outputs=gr.Audio(type="numpy", label="Audio generado"),
title="Demo de TTS con Tacotron2 + Generator",
description="Convierte texto en audio usando Tacotron2 + tu modelo generator."
)
# Lanzar app
if __name__ == "__main__":
interface.launch()
|