Spaces:
Runtime error
Runtime error
from .model_manager import ModelManager | |
from .audio_processor import AudioProcessor | |
from typing import Dict | |
class Analyzer: | |
def __init__(self, model_manager: ModelManager, audio_processor: AudioProcessor): | |
self.model_manager = model_manager | |
self.audio_processor = audio_processor | |
self.model_manager.load_models() | |
def analyze(self, audio_path: str) -> Dict: | |
# Process audio | |
waveform, features = self.audio_processor.process_audio(audio_path) | |
# Get transcription | |
transcription = self.model_manager.transcribe(waveform) | |
# Analyze emotions | |
emotions = self.model_manager.analyze_emotions(transcription) | |
# Analyze mental health indicators | |
mental_health = self.model_manager.analyze_mental_health(transcription) | |
# Combine analysis with audio features | |
mental_health = self._combine_analysis(mental_health, features) | |
return { | |
'transcription': transcription, | |
'emotions': { | |
'scores': emotions, | |
'dominant_emotion': max(emotions.items(), key=lambda x: x[1])[0] | |
}, | |
'mental_health_indicators': mental_health, | |
'audio_features': features | |
} | |
def _combine_analysis(self, mental_health: Dict, features: Dict) -> Dict: | |
"""Combine mental health analysis with audio features""" | |
# Adjust risk scores based on audio features | |
energy_level = features['energy']['mean'] | |
pitch_variability = features['pitch']['std'] | |
# Simple risk score adjustment based on audio features | |
mental_health['depression_risk'] = ( | |
mental_health['depression_risk'] * 0.7 + | |
(1 - energy_level) * 0.3 # Lower energy may indicate depression | |
) | |
mental_health['anxiety_risk'] = ( | |
mental_health['anxiety_risk'] * 0.7 + | |
pitch_variability * 0.3 # Higher pitch variability may indicate anxiety | |
) | |
# Add confidence scores | |
mental_health['confidence'] = { | |
'depression': 0.8, # Example confidence scores | |
'anxiety': 0.8, | |
'stress': 0.7 | |
} | |
return mental_health |