File size: 1,649 Bytes
85d8db3
 
 
 
 
 
 
8543457
85d8db3
 
 
 
 
 
 
 
 
 
 
8543457
85d8db3
 
 
 
8543457
85d8db3
 
 
 
 
 
 
 
 
 
8543457
85d8db3
 
 
8543457
85d8db3
 
 
 
8543457
85d8db3
 
 
 
 
8543457
85d8db3
8543457
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import gradio as gr
from typing import Dict
from src.application.services import InterviewAnalyzer
from src.infrastructure.llm import LangchainService
from src.infrastructure.emotion import DeepFaceService
from src.infrastructure.speech import GoogleSpeechService


class GradioInterface:
    def __init__(self):
        # Initialize services
        self.emotion_service = DeepFaceService()
        self.speech_service = GoogleSpeechService()
        self.llm_service = LangchainService()

        # Initialize analyzer
        self.analyzer = InterviewAnalyzer(
            emotion_service=self.emotion_service,
            speech_service=self.speech_service,
            llm_service=self.llm_service,
        )

    def create_interface(self) -> gr.Interface:
        def process_submission(
            video_file: str, resume_file: str, job_requirements: str
        ) -> Dict:
            # Implementation for processing submission
            pass

        # Create Gradio interface
        interface = gr.Interface(
            fn=process_submission,
            inputs=[
                gr.Video(label="Interview Recording"),
                gr.File(label="Resume"),
                gr.Textbox(label="Job Requirements", lines=5),
            ],
            outputs=gr.JSON(label="Analysis Results"),
            title="HR Interview Analysis System",
            description="Upload interview recording and resume to analyze candidate performance",
        )

        return interface


def launch_app():
    app = GradioInterface()
    interface = app.create_interface()
    interface.launch()


if __name__ == "__main__":
    launch_app()