EmoSense is a web-based emotion recognition application that analyzes both real-time and pre-recorded voice inputs to detect human emotions using AI-powered models. Designed for therapists, researchers, and individuals, EmoSense provides emotionally intelligent insights through a user-friendly interface. Future versions will support multi-lingual input, emotion analysis reports in printable formats, and further usability enhancements.
EmoSense/
├── client/ # React frontend for UI interaction
└── server/ # Python backend for emotion analysis and API handling
Before running the application, make sure you have the following installed:
- Node.js & npm
- Python 3.12
- pip (Python package installer)
- Git
- PyCharm (optional, for running backend server)
- Postgres (v12+ Recommended)
- Go to Kaggle RAVDESS Dataset
- Download the dataset and extract the contents.
- Place the dataset in an appropriate directory referenced by your backend (e.g.,
server/ravdess/).
- bash
- git clone https://github.com/devowaisys/EmoSense.git
- cd EmoSense
- cd server
- pip install -r requirements.txt
- python EmoSenseApp.py (You can run the backend either using Python or via PyCharm)
- cd client
- npm install
- npm start
- Open pgAdmin.
- Create a new database named EmoSense.
- Right-click on the EmoSense database and select Query Tool.
- Paste the following SQL script and click Execute to create the necessary tables and relationships.
-- This script was generated by the ERD tool in pgAdmin 4.
-- Please log an issue at https://github.com/pgadmin-org/pgadmin4/issues/new/choose if you find any bugs, including reproduction steps.
BEGIN;
CREATE TABLE IF NOT EXISTS public."ANALYSIS"
(
"ANALYSIS_ID" serial NOT NULL,
"PATIENT_EMAIL" character varying(50) COLLATE pg_catalog."default" NOT NULL,
"THERAPIST_ID" integer NOT NULL,
"ANALYSIS_MODE" character varying(30) COLLATE pg_catalog."default" NOT NULL,
"ANALYSIS_DURATION" time without time zone NOT NULL,
"DOMINANT_EMOTION" character varying(30) COLLATE pg_catalog."default" NOT NULL,
"ANALYSIS_SUMMARY" text COLLATE pg_catalog."default" NOT NULL,
"DATE" date NOT NULL,
"SESSION_START" time without time zone NOT NULL,
"SESSION_END" time without time zone NOT NULL,
"SESSION_DURATION" time without time zone NOT NULL,
CONSTRAINT "ANALYSIS_pkey" PRIMARY KEY ("ANALYSIS_ID")
);
CREATE TABLE IF NOT EXISTS public."PATIENTS"
(
"PATIENT_FULLNAME" character varying(50) COLLATE pg_catalog."default" NOT NULL,
"PATIENT_EMAIL" character varying(50) COLLATE pg_catalog."default" NOT NULL,
"PATIENT_CONTACT" bigint NOT NULL,
CONSTRAINT "PATIENTS_pkey" PRIMARY KEY ("PATIENT_EMAIL")
);
CREATE TABLE IF NOT EXISTS public."THERAPIST"
(
"THERAPIST_ID" serial NOT NULL,
"THERAPIST_FULLNAME" character varying(50) COLLATE pg_catalog."default" NOT NULL,
"THERAPIST_EMAIL" character varying(50) COLLATE pg_catalog."default" NOT NULL,
"THERAPIST_PASSWORD" character varying(30) COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT "THERAPIST_pkey" PRIMARY KEY ("THERAPIST_ID")
);
ALTER TABLE IF EXISTS public."ANALYSIS"
ADD CONSTRAINT "ANALYSIS_PATIENT_EMAIL_fkey" FOREIGN KEY ("PATIENT_EMAIL")
REFERENCES public."PATIENTS" ("PATIENT_EMAIL") MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID;
ALTER TABLE IF EXISTS public."ANALYSIS"
ADD CONSTRAINT "ANALYSIS_THERAPIST_ID_fkey" FOREIGN KEY ("THERAPIST_ID")
REFERENCES public."THERAPIST" ("THERAPIST_ID") MATCH SIMPLE
ON UPDATE NO ACTION
ON DELETE NO ACTION
NOT VALID;
END;
💻 UI Pages Overview
Quick access to start real-time or pre-recorded emotion analysis.

Captures voice input directly from the microphone and processes it for live emotion feedback.

Displays detailed emotion analysis results from the uploaded audio, including emotional queues, average scores, and summary insights.

The History Page displays a log of all previous emotion analysis sessions (both real-time and pre-recorded), helping users review and download past reports.

📌 Future Enhancements
- Multi-lingual input support
- Downloadable/Printable emotion reports