import os import gradio as gr from transformers import BarkModel, AutoProcessor import torch # función para el título animado js = """ function createGradioAnimation() { var container = document.createElement('div'); container.id = 'gradio-animation'; container.style.fontSize = '2em'; container.style.fontWeight = 'bold'; container.style.textAlign = 'center'; container.style.marginBottom = '20px'; var text = 'Audio Generation!'; for (var i = 0; i < text.length; i++) { (function(i){ setTimeout(function(){ var letter = document.createElement('span'); letter.style.opacity = '0'; letter.style.transition = 'opacity 0.5s'; letter.innerText = text[i]; container.appendChild(letter); setTimeout(function() { letter.style.opacity = '1'; }, 50); }, i * 250); })(i); } var gradioContainer = document.querySelector('.gradio-container'); gradioContainer.insertBefore(container, gradioContainer.firstChild); return 'Animation created'; } """ # Desactivar paralelismo en tokenizers para evitar advertencias os.environ["TOKENIZERS_PARALLELISM"] = "false" device = "cuda" if torch.cuda.is_available() else "cpu" def say_something(text): processor = AutoProcessor.from_pretrained("suno/bark-small") model = BarkModel.from_pretrained("suno/bark-small").to(device) inputs = processor(text) audio_array = model.generate(**inputs) audio_array = audio_array.cpu().numpy().squeeze() # Devuelve el audio como un numpy array junto con el sample rate sample_rate = model.generation_config.sample_rate return (sample_rate, audio_array) with gr.Blocks(js=js) as demo: textBox = gr.Textbox(label="Text", value="Hello! [laugths]. This is a test!") button = gr.Button("Generate Audio", variant="primary") audio_output = gr.Audio(label="Generated Audio") button.click(say_something, inputs=textBox, outputs=audio_output) demo.launch()