Our teammate Alex is the best freestyle rapper of all time, and we needed someone to challenge him. The only true rival to Alex is naturally, Alexa.
What it does
The user prompts Alexa to rap, and spits a sick bar. Alexa responds with a young bar of her own. And believe me, her bar ain't chips. It is intelligently formed around the user's verse, so as to roast them directly.
How we built it
- Alexa takes the user's input and sends it to an ngrok server. We use flask to get the input and send it to the backend. A trigram tagger from the natural language toolkit analyses the input for important parts of speech such as prominent nouns and verbs. The datamuse API allows us to find words that are related to the important noun/verb from the user's rap. We then use a simple Context Free Grammar to generate two main phrases, using these rhyming words. The response is then sent back to the Alexa and communicated to the user.
Challenges I ran into
- Getting the key phrase from Alexa with / without a prompt
- Uploading our code base to the Amazon Lambda system
- Generally working with Amazon Web Services
- Generating sentences that make sense in terms of relation between nouns and verbs
Accomplishments that we're proud of / things we learned
- Learning a new framework: Flask
- Learned a new cloud computing service: Amazon Web Services
- Learned how to generate Context Free Grammars
- Learned how to train and utilize an n-gram part of speech tagger
- Learned how to work efficiently as a team and delegate tasks that played to each other's strengths
- Made ourselves feel better because we all got sad at one point but we supported each other as friends to stay motivated
- We now have built a program that even J. Cole couldn't beat
What's next for Lil' Lexie
- Improve sentence generation such that there is more context
- Since we are running this on a local flask server, the next step is to host over HTTPS on our own domain, or using AWS lambda
- Publish and distribute Lil Lexie to the Amazon Alexa Skill Store for anyone around the world to use!