|
from src.exception.exception import customexception |
|
from src.logger.logger import logging |
|
from src.components.textprocess import TextProcessor |
|
from src.components.docchat import DocChatProcessor |
|
from src.components.emotionanalyz import EmotionAnalyzer |
|
from src.components.voicesynth import VoiceSynthesizer |
|
import sys |
|
|
|
class AvatarConfig: |
|
def __init__(self): |
|
self.image_size = 512 |
|
self.voice_sample_rate = 22050 |
|
self.max_text_length = 512 |
|
|
|
class AvatarSystem: |
|
def __init__(self, hf_token): |
|
self.config = AvatarConfig() |
|
self.text_processor = TextProcessor(hf_token) |
|
self.emotion_analyzer = EmotionAnalyzer() |
|
self.voice_synthesiser = VoiceSynthesizer() |
|
|
|
|
|
logging.info("Avatar system initiated.") |
|
|
|
def process_input(self, user_input): |
|
try: |
|
|
|
response = self.text_processor.generate_response(user_input) |
|
logging.info("Text response generated.") |
|
|
|
|
|
emotion = self.emotion_analyzer.analyze_emotion(response) |
|
logging.info("Response sentiment received.") |
|
|
|
|
|
self.voice_synthesiser.synthesize_speech(response) |
|
logging.info("Generated response saved as audio mp3 format.") |
|
|
|
return { |
|
'response_text': response, |
|
'emotion': emotion |
|
} |
|
|
|
except Exception as e: |
|
raise customexception(e,sys) |