This project was made for the Education track for HackDuke 2020! Find the GitHub link at the bottom to download.


The most important part of learning a foreign language is gaining experience directly listening to the language being spoken naturally. The classroom environment allows students to get practice, but now that classes are virtual, and in some cases even asynchronous, foreign language students can't get the practice they need. Music is the universal language, so our project, codenamed UniversalLanguage, allows foreign language students to practice by listening to music.

What it does

Users can either enter their Duolingo login information, or enter a list of vocabulary words in the language they're learning and indicate the language. Our code will then produce a list of songs that mostly contain words that they've either already learned or are currently learning.

How we built it

Our code indexes the top songs in a language and their lyrics by accessing the Musixmatch API database. By getting these lyrics and sorting them by words, we achieve incredibly efficient sorting of the songs based on how many desired words they contain. Then, we either access a user's Duolingo words using a Duolingo API, or directly take their vocab words, and search our existing database.

Challenges we ran into

Due to usage limits on API keys, the song databases for a single language are limited to a few hundred songs, and we were only able to implement a small number of the languages that we wanted to include. However, in the future, a paid API key or a different API would be able to solve this issue.

Accomplishments that we're proud of

Our database search is incredibly efficient, and would easily scale to thousands of songs. The service is also easy to use, and Duolingo users especially have a really easy process - just log in, and we give you songs!

What we learned

HackDuke was the first hackathon for many of our team members, and the second for the rest. We gained a lot of experience using APIs, especially with Musixmatch, which doesn't have a particularly friendly interface. It was also a lot of fun working together to make something awesome!

What's next for UniversalLanguage

We'd like to continue to add languages to the database, and equally importantly, add more songs to each language. Once we've accomplished that, the next step would be to host the code on a website or mobile app, so that it can be more publicly accessed. As of right now, it only runs locally, and making it run on the web would be amazing.

Built With

Share this project: