What is this?
Just Sing! is a (mostly K-pop) karaoke game that actually listens to you! (ノ≧▽≦)ノ
Pick your favorite song, sing along, and watch your voice follow the melody in real time! Follow synchronized lyrics in Hangul, romanization, and English while earning instant ratings (PERFECT! / GREAT / OKAY / BAD / MISS) for every phrase.
After each performance, get a detailed breakdown of your pitch, timing, and pronunciation, along with some encouragement from our adorable mascot, Mic-chan!
Want to sing with a friend? Try two-player mode, where you take turns singing verses and choruses! With 13 songs to choose from and shortened practice clips. There's lots of cool songs! ♪(´▽`)
How we built it
We built the interface with React and TypeScript, backend with FastAPI and Python. The browser uses Web Audio for playback and microphone capture with live pitch detection and phrase scoring.
We created the karaoke feature through a offline ML pipeline that separates recordings into vocal and instrumental stems, extracts a reference pitch contour and assembles timed lyrics into a shared song manifest. Pretrained speech models also generate lyric fingerprints for checking whether a performance matches the expected words.
A local author tool lets us inspect timelines, correct lyrics, and adjust player assignments without rebuilding the entire pipeline.
Challenges we ran into
The main issue we ran into was grading pitch consistently. At first, we realized how different our voices were. Some of our voices were naturally higher pitched than others. So, we implemented an octave feature to allow people with lower voices to compete fairly with others and vice versa. Then, after getting everyone on the same level, we saw how erratic the pitch bar flew up and down. To resolve this, we made the pitch tracker smoother and hid the tracker when the microphone records a sharp frequency.
Accomplishments that we're proud of
We created a working karaoke app that can be played locally and online anywhere in the world! This karaoke game grades the user based off of pitch, timing, and their pronunciation. We had a ton of fun demoing this app and sharing it with our friends.
What we learned
This was our first time developing a project accessible to anyone on the web using a cloud server. With that complexity (frontend, backend, and ML models), we learned a lot about role distribution. At first, we each strictly adhered to our roles, but as we understood more of our project we realized how we could assist each other and break out from our self-made confinements.
What's next for just sing! ♫⋆。♪ ₊˚♬゚.
Adding a wider catalogue of songs, more languages, customization, and improving pronunciation feedback!
Inspiration…
I was born in a small town on the east side of Chicago. "Man, you suck at singing." "Why is your Korean pronunciation so bad?" "You could never learn Japanese even if you were immortal." I constantly heard remarks such as these from peers around me. So, I resolved to improve my singing ability. No matter what it takes! I drafted a team of specialized, highly intelligent individuals to develop this project. Hopefully, I will become the greatest singer some day.
Built With
- css
- demucs
- electron
- fastapi
- fasterwhisper
- gemini
- javascript
- love
- music
- peace
- pitchy
- python
- react
- tigerdata
- torchecrepe
- typescript
- vite
- vultr

