Spaces:
Sleeping
Sleeping
import gradio as gr | |
import requests | |
from PIL import Image | |
from transformers import BlipProcessor, BlipForConditionalGeneration | |
import torch | |
import soundfile as sf | |
from diffusers import StableAudioPipeline | |
import os | |
os.environ['CUDA_VISIBLE_DEVICES'] = '' | |
from huggingface_hub import login | |
from torch.nn.utils.parametrizations import weight_norm | |
login(token=os.environ["HF_TOKEN"]) | |
device = torch.device("cpu") | |
processor = BlipProcessor.from_pretrained("Salesforce/blip-image-captioning-large") | |
model = BlipForConditionalGeneration.from_pretrained("Salesforce/blip-image-captioning-large").to("cpu") | |
pipe = StableAudioPipeline.from_pretrained("stabilityai/stable-audio-open-1.0") | |
pipe = pipe.to("cpu") | |
#img_url = 'https://www.caracteristicass.de/wp-content/uploads/2023/02/imagenes-artisticas.jpg' | |
class Aspecto(): | |
pass | |
screen = Aspecto() | |
with gr.Blocks(theme=gr.themes.Ocean(primary_hue="pink", neutral_hue="indigo", font=[gr.themes.GoogleFont("Montserrat"), "Playwrite England SemiJoine", "Quicksand"])) as demo: | |
textbox = gr.Textbox(label="Url") | |
with gr.Row(): | |
button = gr.Button("Describir", variant="primary") | |
clear = gr.Button("Borrar") | |
output = gr.Textbox(label="Resumen") | |
output2 = gr.Audio(label="Audio") | |
def describir(url): | |
raw_image = Image.open(requests.get(url, stream=True).raw).convert('RGB') | |
inputs = processor(raw_image, return_tensors="pt").to("cpu") | |
out = model.generate(**inputs) | |
leer(processor.decode(out[0], skip_special_tokens=True)) | |
return processor.decode(out[0], skip_special_tokens=True) | |
def leer(texto): | |
prompt = texto | |
negative_prompt = "Low quality." | |
# set the seed for generator | |
generator = torch.Generator("cpu").manual_seed(0) | |
# run the generation | |
audio = pipe( | |
prompt, | |
negative_prompt=negative_prompt, | |
num_inference_steps=200, | |
audio_end_in_s=10.0, | |
num_waveforms_per_prompt=3, | |
generator=generator, | |
).audios | |
salida = audio[0].T.float().cpu().numpy() | |
sf.write("demo.wav", salida, pipe.vae.sampling_rate) | |
return sf.read("demo.wav") | |
button.click(describir, [textbox], output, leer, [output], output2) | |
demo.launch(debug=True) |