A chrome extension to monitor and control your speech speed during presentations
I was inspired to build this project because I have always struggled to keep up with teachers that speak somewhat fast. I've also zoned out a lot with some teachers who speak quite slowly. A lot of times, they may not be aware of it either. Moreover, students may not be able to comfortably tell the teacher to slow down. On the other hand, as a student myself, I struggle to make sure I am speaking at an appropriate pace. I have been told by peers and teachers that I speak too fast which could be a result of a multitude of factors such as nervousness or excitement. Serenity is a chrome extension that uses Chome's side panel feature. When you hit the start button, it'll start recording you using the microphone. It will begin to show a live transcription as well. Every time you take a pause, perhaps between sentences, the speed of speech will update and provide cues on if you should slow down or keep going at the current pace. You can stop recording by verbally stating, 'stop recording'. The recording will then stop and display the full transcription of what you said. The tool can help teachers keep pace and can help students practice/deliver presentations. I built it using Manifest V3, chrome's web extension API. I used the new beta Side Panel API to create a better experience. The Side panel is capable of allowing the recording to continue no matter what window or tab you switch to. The user interface was designed with HTML CSS JS. Natural language processing was done with Deepgram's API. I established a web socket between the extension and Deepgram which enabled the extension to relay raw recording data to the API and retrieve parsed information such as the duration of speech and words stated. Lastly, the extension was set into production using Webpack for bundling. The major challenge I ran into was the fact that the Side Panel API is a very new Chrome feature. In fact, extensions can't even run it outside the Chrome Beta. Thankfully, the Chrome beta is publically available, so I was able to make use of the amazing feature. That being said, since the feature is so new, there are very few online resources to help out with development. As such, a lot of trial and error was involved as I had to come up with my own workarounds for never-before-seen situations. Thanfully, Google's documentation is very thorough and gave me the building blocks to work off of. Another challenge I faced was accurately determining words per minute. I found that actually doing words/minutes was not effective and more often produced unreasonable results. Instead, I found the total number of characters spoken and divided it by five (the average English word is about 5 characters long). This produced a much more useful result. I am particularly proud of the final product since I have never built a chrome extension before. Moreover, this is my first time using NLP, so I am proud that I could find a real-world application for it that can directly help me in my day-to-day life. Serenity is very scalable and has a lot of room for growth. I am thinking of adding support for other languages. Moreover, I will also look into implementing it on Safari. Lastly, I can expand on the NLP portion of the project and explore topic detection to detect when the speaker is going off-topic.