๐Ÿ’ก 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.js for 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-staged to 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

Share this project:

Updates