Microservices Overview
The application consists of several microservices, each with a distinct responsibility. Below is an overview of all microservices and their roles within the system.
Orchestrator
- Purpose: Coordinates tasks across all microservices.
- Key Functionality:
- Generates
meetingIDfor each meeting. - Uses Redis for managing meeting metadata and task statuses.
- Distributes tasks to transcription, OCR, summary, report generator, and mailer services via RabbitMQ.
- Monitors task completion and transitions the meeting process through stages.
- Generates
Transcription Service
- Purpose: Processes audio fragments to generate transcriptions and identify speakers.
- Implementation:
- Speaker Diarization: Uses
pyannote/diarizationand related models to identify distinct speakers. - Transcription: Uses
whisperfor high-accuracy speech-to-text processing. - Speaker Matching: Updates or retrieves speaker embeddings from MongoDB for consistent speaker identification across fragments.
- Speaker Diarization: Uses
- Input: File path to audio fragment (.wav) and
meeting_idvia RabbitMQ (transcription_queue). - Output: Transcriptions stored in MongoDB (
transcriptionscollection) and updated embeddings in theembeddingscollection.
OCR Service
- Purpose: Extracts text from images or screenshots.
- Implementation:
- Uses an OCR model (e.g., OpenAI’s OCR model) for text extraction.
- Input: Screenshot file path and
meeting_idprovided via RabbitMQ (ocr_queue). - Output: OCR results stored in MongoDB (
ocr_resultscollection).
Summary Service
- Purpose: Generates concise summaries of transcriptions.
- Implementation:
- Fetches transcriptions from MongoDB.
- Uses LLMs (e.g., OpenAI or LLaMA with Groq) to generate structured summaries.
- Input:
meeting_idvia RabbitMQ (summary_queue). - Output: Summaries stored in MongoDB (
summariescollection).
Report Generator
- Purpose: Combines processed data into a structured PDF report.
- Implementation:
- Fetches transcriptions, summaries, OCR results, and screenshots from MongoDB and shared volumes.
- Generates a PDF report with structured sections.
- Input:
meeting_idvia RabbitMQ (report_queue). - Output: PDF report stored in a shared volume (
shared-report).
Mailer Service
- Purpose: Sends the final PDF report to the user.
- Implementation:
- Gets the user’s email from RabbitMQ message.
- Retrieves the PDF report from the shared volume.
- Sends the email with the report attached.
- Input: File path to report and email provided via RabbitMQ (
email_queue). - Output: Email sent to the user with the attached report.
Logger Service
- Purpose: Collects and stores logs from various microservices.
- Implementation:
- Listens to log messages on the
logs_queue. - Saves logs to MongoDB (
logscollection) for debugging, monitoring, and auditing purposes.
- Listens to log messages on the
- Input: Log messages (structured in JSON format) sent by other services via RabbitMQ.
- Output: Logs stored in MongoDB (
logscollection).
Additional Details
Each service is designed to be modular, scalable, and independent, allowing for easy updates and debugging. Services communicate asynchronously using RabbitMQ to ensure reliability and fault tolerance.