ronniet's picture
Update app.py
a2a6f2c
import gradio as gr
from transformers import pipeline
import librosa
import numpy as np
import torch
# from transformers import SpeechT5Processor, SpeechT5ForTextToSpeech, SpeechT5HifiGan
from transformers import AutoProcessor, AutoModelForCausalLM
# checkpoint = "microsoft/speecht5_tts"
# tts_processor = SpeechT5Processor.from_pretrained(checkpoint)
# tts_model = SpeechT5ForTextToSpeech.from_pretrained(checkpoint)
# vocoder = SpeechT5HifiGan.from_pretrained("microsoft/speecht5_hifigan")
vqa_processor = AutoProcessor.from_pretrained("ronniet/git-large-vqa-env")
vqa_model = AutoModelForCausalLM.from_pretrained("ronniet/git-large-vqa-env")
# def tts(text):
# if len(text.strip()) == 0:
# return (16000, np.zeros(0).astype(np.int16))
# inputs = tts_processor(text=text, return_tensors="pt")
# # limit input length
# input_ids = inputs["input_ids"]
# input_ids = input_ids[..., :tts_model.config.max_text_positions]
# speaker_embedding = np.load("cmu_us_bdl_arctic-wav-arctic_a0009.npy")
# speaker_embedding = torch.tensor(speaker_embedding).unsqueeze(0)
# speech = tts_model.generate_speech(input_ids, speaker_embedding, vocoder=vocoder)
# speech = (speech.numpy() * 32767).astype(np.int16)
# return (16000, speech)
# captioner = pipeline(model="microsoft/git-base")
# tts = TTS(model_name="tts_models/multilingual/multi-dataset/your_tts", progress_bar=False, gpu=False)
def predict(image, prompt):
pixel_values = vqa_processor(images=image, return_tensors="pt").pixel_values
# prompt = "what is in the scene?"
prompt_ids = vqa_processor(text=prompt, add_special_tokens=False).input_ids
prompt_ids = [vqa_processor.tokenizer.cls_token_id] + prompt_ids
prompt_ids = torch.tensor(prompt_ids).unsqueeze(0)
text_ids = vqa_model.generate(pixel_values=pixel_values, input_ids=prompt_ids, max_length=50)
text = vqa_processor.batch_decode(text_ids, skip_special_tokens=True)[0][len(prompt):]
# audio = tts(text)
return text
demo = gr.Interface(
fn=predict,
inputs=[gr.Image(type="pil",label="Environment"), gr.Textbox(label="Prompt", value="What is in the scene?")],
outputs=gr.Textbox(label="Caption"),
css=".gradio-container {background-color: #002A5B}",
theme=gr.themes.Soft() #.set(
# button_primary_background_fill="#AAAAAA",
# button_primary_border="*button_primary_background_fill_dark"
# )
)
demo.launch()