import gradio as gr from tabs.heart_rate_variability import create_hrv_tab from tabs.blink_detection import create_blink_tab from tabs.gaze_estimation import create_gaze_estimation_tab from tabs.speech_stress_analysis import create_voice_stress_tab from tabs.head_posture_detection import create_head_posture_tab from tabs.face_expressions import create_face_expressions_tab from tabs.speech_emotion_recognition import create_emotion_recognition_tab from tabs.sleep_quality import create_sleep_quality_tab from tabs.sentiment_analysis import create_sentiment_tab from tabs.emotion_analysis import create_emotion_tab from tabs.body_movement_analysis import create_body_movement_tab from tabs.posture_analysis import create_posture_analysis_tab from tabs.skin_analysis import create_skin_conductance_tab from tabs.FACS_analysis_sad import create_facs_analysis_sad_tab from tabs.roberta_chatbot import create_roberta_chatbot_tab import spaces import torch # Import the UI components from ui_components import CUSTOM_CSS, HEADER_HTML, DISCLAIMER_HTML if torch.cuda.is_available(): device = "cuda" print("Using GPU") else: device = "cpu" print("Using CPU") TAB_STRUCTURE = [ ("Visual Analysis", [ ("Emotional Face Expressions", create_face_expressions_tab), ("FACS for Stress, Anxiety, Depression", create_facs_analysis_sad_tab), ("Gaze Estimation", create_gaze_estimation_tab), ("Head Posture", create_head_posture_tab), ("Blink Rate", create_blink_tab), ("Sleep Quality", create_sleep_quality_tab), ("Heart Rate Variability", create_hrv_tab), ("Body Movement", create_body_movement_tab), ("Posture", create_posture_analysis_tab), ("Skin", create_skin_conductance_tab) ]), ("Speech Analysis", [ ("Speech Stress", create_voice_stress_tab), ("Speech Emotion", create_emotion_recognition_tab) ]), ("Text Analysis", [ ("Sentiment", create_sentiment_tab), ("Emotion", create_emotion_tab), ("Roberta Mental Health Chatbot", create_roberta_chatbot_tab) ]), ("Brain Analysis (coming soon)", [ ]) ] def create_demo(): with gr.Blocks(css=CUSTOM_CSS) as demo: gr.Markdown(HEADER_HTML) with gr.Tabs(elem_classes=["main-tab"]): for main_tab, sub_tabs in TAB_STRUCTURE: with gr.Tab(main_tab): with gr.Tabs(): for sub_tab, create_fn in sub_tabs: with gr.Tab(sub_tab): create_fn() gr.HTML(DISCLAIMER_HTML) return demo # Create the demo instance demo = create_demo() if __name__ == "__main__": demo.queue(api_open=True).launch(share=False)