danielritchie's picture
disable ssr
36b4082
raw
history blame
2.31 kB
import gradio as gr
from utils.presets import EMOTION_PRESETS
from utils.drama import apply_drama
from utils.color_model import infer_color, scale_rgb, render_color
from utils.visualization import generate_scatter
def process_emotion(emotion, drama):
preset = EMOTION_PRESETS[emotion]
raw = preset["raw"]
target = preset["target"]
cinematic = apply_drama(raw, target, drama)
rgb = infer_color(cinematic)
scaled = scale_rgb(rgb)
color_block = render_color(scaled)
scatter_fig = generate_scatter(raw, cinematic, emotion, drama)
return (
preset["text"],
raw,
cinematic,
scaled,
color_block,
scatter_fig
)
with gr.Blocks(title="VIBE-Eyes 👁️") as demo:
gr.Markdown("# VIBE-Eyes 👁️")
gr.Markdown("**Emotion becomes cinema.**")
with gr.Row():
with gr.Column(scale=1):
emotion = gr.Radio(
choices=list(EMOTION_PRESETS.keys()),
label="Select Emotion",
value="Anger (Red)"
)
drama = gr.Slider(
minimum=0,
maximum=1.5,
value=0,
step=0.05,
label="Drama (Cinematic Amplification)"
)
with gr.Column(scale=2):
text_output = gr.Textbox(label="Preset Text")
with gr.Row():
raw_output = gr.JSON(label="Raw VAD+CC")
cine_output = gr.JSON(label="Cinematic VAD+CC")
rgb_output = gr.JSON(label="RGB + E + I")
color_display = gr.HTML(label="Rendered Color")
scatter_output = gr.Plot(label="Valence–Arousal Space")
emotion.change(
fn=process_emotion,
inputs=[emotion, drama],
outputs=[
text_output,
raw_output,
cine_output,
rgb_output,
color_display,
scatter_output
]
)
drama.change(
fn=process_emotion,
inputs=[emotion, drama],
outputs=[
text_output,
raw_output,
cine_output,
rgb_output,
color_display,
scatter_output
]
)
demo.launch(server_name="0.0.0.0", server_port=7860, ssr_mode=False)