๐ก About the Project
SpeakBetter, developed by Mohammed Asim Ahmed, is a platform designed to help people enhance their speech delivery through smart analysis. Users record themselves speaking in front of a camera, capturing both their speech and emotions during the delivery. This data is sent to the backend, where it is processed by a large language model (LLM) for detailed evaluation. The system analyzes the speech based on three key aspects: emotional correction, clarity of speech, and irrelevant content detection. Emotional correction finds sentences where the speakerโs emotions could be improved to make the speech more engaging. Clarity check highlights areas where the speech could be clearer and provides suggestions for improvement. Irrelevant content detection points out sections that are off-topic or unnecessary. Based on this analysis, SpeakBetter generates suggestions that help users to improve their speeches.
๐ Inspiration
Many individuals face challenges in delivering speeches that are clear, engaging, and impactful. Some challenges are difficulty expressing emotions appropriately, unclear speech, and the inclusion of irrelevant or off-topic content, which may weaken the speech. Identifying these issues is important to improve their speeches. This highlights the need for a platform that can analyze and provide suggestions, helping individuals improve their speeches.
๐ ๏ธ How I Built It
SpeakBetter is built as a full-stack monorepo using Turborepo, with:
- Frontend: Next.js, Tailwind CSS, Jotai, and
face-api.jsfor facial emotion detection. - Backend: Express.js, LangChain with Google Gemini for LLM-based analysis, and PostgreSQL with Prisma.
- Registration System: Uses Bloom Filters and in-memory cache with TTL to optimize username/email checks.
- Code and Commit Quality: Commitlint, ESLint, Husky, and
lint-stagedto improve code and commit quality.
๐ Accomplishments That Iโm Proud Of
- Built a full-stack AI-powered speech evaluation tool completely from scratch.
- Successfully integrated facial emotion detection with using
face-api.js. - Designed a smart user registration system using Bloom Filters + cache to reduce unnecessary DB hits.
- Improved code and commit quality with ESLint, Husky, Commitlint, and
lint-staged. - Managed everything efficiently in a monorepo using Turborepo.
๐ฏ What I Learned
- Implemented real-time facial emotion detection using
face-api.js. - Learned to optimize registration using Bloom Filters and cache.
- Gained experience in maintaining code and commit quality with automated hooks.
๐ง Challenges Faced
- Implementing Speech Recognition functionality.
- Syncing speech text with detected facial expressions.
- Implementing Bloom Filters and in-memory cache with TTL to optimize username/email checks.
- Getting LLM feedback based on the three points i mentioned before to improve speech.
Note
Works only on browsers that support Web Speech API
Built With
- bloomfilters
- cache
- express.js
- gemini
- jotai
- langchain
- next.js
- node.js
- postgresql
- prisma
- tailwindcss
- zod
Log in or sign up for Devpost to join the conversation.