Inspiration

I submitted another Skill in mid December where it plays 30 seconds of a nursery rhyme and you guess the song name.. the faster you answer, the more points. I watched the logs and metrics of those using it and it seems only the old nursery rhymes were answered correctly which led me to theorize that the parents were the ones playing. I also confirmed that my focus on tolerating chatter and giving time for the users to talk amongst themselves was a great idea this holiday season from the family playing it.. so I felt I was on to something which a group could play. Then I noticed the kids singing along with mostly the modern pre-K through 2nd grade songs (got those from my wife who actually teaches those songs to the kids), but they did NOT know the song name. The kids mostly know the lyrics. Hence, I decided to pivot and build this skill

What it does

This is a game which plays the most familiar parts of lyric-free nursery rhymes and movie songs and stops right before a popular phrase or stanza. The kids then must finish the next logical phrase or stanza and, if they get it right, the song continues for a bit, where it seems everyone wants to continue singing, and they get that round correct. If you get it wrong, it plays a funny sound and lightly tells you that it wasn't quite right. Six songs are played and they get a score and badge at the end. It also cleverly pauses and waits in places where the kids and/or group playing can chat or celebrate getting the song words correct.

How I built it

AWS Lambda, Java 8. By myself, in my basement.

Challenges I ran into

Finding license-free lyric-free music was the biggest challenge. Everything is locked down like crazy but I searched for license-free midi files which are becoming dinosaurs or had my 16-year old play the songs on our piano. I then equalized the volume levels, converted them to mp3s, and clipped out only the most familiar parts of those nursery rhymes or movie themes.

Also, interesting to learn that people do and WILL chat out of order for a conversational skill. I think I have this part nailed down by tracking state and conversation steps to predict, handle, and tolerate out-of-order or unexpected intents.

Another challenge, how to describe the next stanza or phrase in a song to a 5 year old. I iterated on this and ended up at "bunch of words".

Finally, since it was a game, I wanted to pick a skill name that the Echo will allows one to say "Play ...". My other submission, despite using a crazy unique name, did not tolerate that - and with this skill, it can.

Accomplishments that I'm proud of

Dealing with chatter and conversation when the song is answered and allowing the user to say wait before continuing to the next song. Also, as noted above, I think I have out-of-order conversations and intents nailed by tracking state and conversation steps to predict, handle, and tolerate out-of-order or unexpected intents.

We will see, but I feel using the words "bunch of words" helps kids keep the lid on how many lyrics kids belt out.

Designing to accommodate variability for how many words kids might belt out was a challenge. I have somewhere around 3 options per song. I also tried to pick areas of the song which end in logical song boundaries while also being familiar.

What I learned

I love java8. Also considered internationalizing but discovered that this is way way difficult due to the natural tendency to do string concatenation within the code.

Also, seems Alexa can tolerate the users singing the lyrics. This is quite remarkable.

What's next for Kids Sing Along

Adding more songs! And to add more lyric options for each song. At this point, it will likely to all be my 16year old playing on the piano or sax since I have seemed to exhaust the midi option.

Built With

  • java8
Share this project:

Updates

posted an update

ok, think I'm done. Been on this journey since October. Pretty proud of the production quality.. Mechanics of this game were quite different from where I pivoted from and were far more challenging. Fingers crossed!

Log in or sign up for Devpost to join the conversation.