Song & Spell

A key-logger that will play an audio track when particular words are pressed and a web-app to configure the words and songs.

Introduction

The volume of information available to anyone with a screen and an internet connection is hard to comprehend; the vastness is matched only by the variety.

It's frankly miraculous that so much information is so readily available, giving anyone with a web-browser the abilities of a minor deity from Greek mythology.

And yet as a mere mortal it's also difficult to navigate without getting sucked into emotional little corners designed to illicit a response regardless of the veracity of the content.

In my humble opinion most adults are not well prepared for this, and small people with malleable minds don't stand a chance. Aside from that, the NHS guidance on screen time in general can be summarised as "nothing for those under two years old and very little for those two to five".

And yet it's great fun to sing and dance to music on your phone with a small person! Not only that but a genre I would call toddler-folk-music is actually pretty decent.

Giving a small person your phone to play something on a FAANG+ music service seems pretty dicey to me: you're trusting a commercial company whose interests are not likely to align with your own, not to mention trolls and the wider community of people you don't know. Of course, you can just use the device for the smalls, but it would be better if you didn't have to and they had the agency to choose something for themselves.

Anyway, it would be great if there was a more limited way for small people to:

  • play a limited selection of audio media that you can choose in advance
  • positively interact with technology without using a screen
  • learn the alphabet and encourage spelling

Song & Spell

Enter the raspberry-pi-400: a cheap, general purpose PC with on-board wifi, bluetooth and I/O pins that is enclosed in its own keyboard 🤯

Song-and-Spell is a script that turns this wonder of the information age into a way to do just this. The idea is that you can use it without a screen. When the PC powers on it will automatically connect to a bluetooth speaker, use it as an audio sink and start a web-app from which you can:

  • upload files with songs to be played when certain words are typed on the keyboard
  • download the audio track for videos directly from youtube to be played when certain words are typed on the keyboard
  • set the speaker-volume (or just mute it)
  • trigger playing the the songs directly, or remove them

The web-ui looks like this on my phone:

It does just this, no more or less. It was great to see it in action in the past few days, after ten minutes one happy little beta-tester could spell (type) words like "lizard" without assistance even though they were previously unaware of those letters.

Conclusion

I'm pretty happy with how this project turned out. Most of the coding was the product of one evening while trying to get into the Christmas spirit (Die Hard was on in the background) just after a government announcement had forbid our upcoming plans. It then took considerably more effort to correctly setup the headless bluetooth & audio sink. The code (and installation guide) is on Github and also available on PyPI.

There are some things I'm still not sure about: since there is no screen there should probably be some audio feedback after a key is pressed, or maybe just an LED flash. A beep could become annoying... someone speaking the letter was my first idea but these days phonics are taught instead. I've also ordered stickers for the keyboard with lower-case letters. If you have any insights about user-interfaces for small people then drop me a line or feel free to fork the project. Also, in case it's not obvious the web-server runs insecurely over HTTP and isn't designed to be accessible outside of your LAN. To secure it I'd recommend something simple like running nginx with SSL termination in front with .htaccess for authentication.

This is such a tiny facet of what this device can do, and I see it as just the beginning of a journey of education about technology that will of course, one day, when they're ready, include a screen and an unfettered internet connection.

Go Top