invincible-jha's picture
Upload app.py
46e3bf1 verified
raw
history blame
1.86 kB
import gradio as gr
from models import ModelManager, AudioProcessor, Analyzer
from utils import visualizer, GPUOptimizer, ModelCache
# Initialize components
optimizer = GPUOptimizer()
optimizer.optimize()
model_manager = ModelManager()
audio_processor = AudioProcessor()
analyzer = Analyzer(model_manager, audio_processor)
cache = ModelCache()
def process_audio(audio_file):
try:
# Check cache
with open(audio_file, 'rb') as f:
cache_key = cache.get_cache_key(f.read())
cached_result = cache.cache_result(cache_key, None)
if cached_result:
return cached_result
# Process audio
results = analyzer.analyze(audio_file)
# Format outputs
outputs = (
results['transcription'],
visualizer.create_emotion_plot(results['emotions']['scores']),
_format_indicators(results['mental_health_indicators'])
)
# Cache results
cache.cache_result(cache_key, outputs)
return outputs
except Exception as e:
return str(e), "Error in analysis", "Error in analysis"
def _format_indicators(indicators):
return f"""
### Mental Health Indicators
- Depression Risk: {indicators['depression_risk']:.2f}
- Anxiety Risk: {indicators['anxiety_risk']:.2f}
- Stress Level: {indicators['stress_level']:.2f}
"""
interface = gr.Interface(
fn=process_audio,
inputs=gr.Audio(source="microphone", type="filepath"),
outputs=[
gr.Textbox(label="Transcription"),
gr.HTML(label="Emotion Analysis"),
gr.Markdown(label="Mental Health Indicators")
],
title="Vocal Biomarker Analysis",
description="Analyze voice for emotional and mental health indicators"
)
if __name__ == "__main__":
interface.launch()