🔄 System Status
📁 Upload Audio File
Upload speech audio for aphasia classification
Supported: MP3, WAV, M4A (max 50MB)
🔄 Processing Audio...
This may take 2-5 minutes. Please be patient.
#!/usr/bin/env python3 """ Lightweight Aphasia Classification App Optimized for Hugging Face Spaces with lazy loading and fallbacks """ from flask import Flask, request, render_template_string, jsonify import os import tempfile import logging import json import threading import time from pathlib import Path # Set up logging logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') logger = logging.getLogger(__name__) app = Flask(__name__) app.config['MAX_CONTENT_LENGTH'] = 50 * 1024 * 1024 # 50MB max (reduced) print("🚀 Starting Lightweight Aphasia Classification System") # Global state MODULES = {} MODELS_LOADED = False LOADING_STATUS = "Starting up..." def lazy_import_modules(): """Import modules only when needed""" global MODULES, MODELS_LOADED, LOADING_STATUS if MODELS_LOADED: return True try: LOADING_STATUS = "Loading audio processing..." logger.info("Importing utils_audio...") from utils_audio import convert_to_wav MODULES['convert_to_wav'] = convert_to_wav logger.info("✓ Audio processing loaded") LOADING_STATUS = "Loading speech analysis..." logger.info("Importing to_cha...") from to_cha import to_cha_from_wav MODULES['to_cha_from_wav'] = to_cha_from_wav logger.info("✓ Speech analysis loaded") LOADING_STATUS = "Loading data conversion..." logger.info("Importing cha_json...") from cha_json import cha_to_json_file MODULES['cha_to_json_file'] = cha_to_json_file logger.info("✓ Data conversion loaded") LOADING_STATUS = "Loading AI model..." logger.info("Importing output...") from output import predict_from_chajson MODULES['predict_from_chajson'] = predict_from_chajson logger.info("✓ AI model loaded") MODELS_LOADED = True LOADING_STATUS = "Ready!" logger.info("🎉 All modules loaded successfully!") return True except Exception as e: logger.error(f"Failed to load modules: {e}") LOADING_STATUS = f"Error: {str(e)}" return False def background_loader(): """Load modules in background thread""" logger.info("Starting background module loading...") lazy_import_modules() # Start loading modules in background loading_thread = threading.Thread(target=background_loader, daemon=True) loading_thread.start() # HTML Template (simplified) HTML_TEMPLATE = """
AI-powered speech analysis for aphasia identification
Upload speech audio for aphasia classification
Supported: MP3, WAV, M4A (max 50MB)
This may take 2-5 minutes. Please be patient.