| 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) | |