Window Shopping Chirp For Arduino... Actually, ESP32
Lately local fellow maker Emily has been tinkering with the Mozzi sound synthesis library for building an Arduino-based noise making contraption. I pitched in occasionally on the software side of her project, picking up bits and pieces of Mozzi along the way. Naturally I started thinking about how I might use Mozzi in a project of my own. I floated the idea of using Mozzi to create a synthetic robotic voice for Sawppy, similar to the voices created for silver screen robots R2-D2, WALL-E, and BB-8.
"That'd be neat," she said, "but there's this other thing you should look into."
I was shown a YouTube video by Alex of Hackster.io. (Also embedded below.) Where a system was prototyped to create a voice for her robot companion Archimedes. And Archie's candidate new voice isn't just a set of noises for fun's sake, they encode data and thus an actual sensible verbal language for a robot.
This "acoustic data transmission" magic is the core offering of Chirp.io, which was created for purposes completely unrelated to cute robot voices. The idea is to allow communication of short bursts of data without the overhead of joining a WiFi network or pairing Bluetooth devices. Almost every modern device -- laptop, phone, or tablet -- already has a microphone and a speaker for Chirp.io to leverage. Their developer portal lists a wide variety of platforms with Chirp.io SDK support.
Companion robot owls and motorized Mars rovers models weren't part of the original set of target platforms, but that is fine. We're makers and we can make it work. I was encouraged when I saw a link for the Chirp for Arduino SDK. Then a scan through documentation of the current release revealed it would be more accurately called the Chirp for Espressif ESP32 SDK as it doesn't support original genuine Arduino boards. The target platform is actually the ESP32 hardware (connected to audio input and output peripherals) running in its Arduino IDE compatible mode. It didn't matter to me, ESP32 is the platform I've been meaning to gain some proficiency at anyway, but might be annoying to someone who actually wanted to use it on other Arduino and compatible boards.
Getting Chirp.io on an ESP32 up and running sounds like fun, and it's free to start experimenting. So thanks to Emily, I now have another project for my to-do list.
[UPDATE: Chirp technology has been acquired by Sonos. The developer portal and all SDKs have disappeared. Fortunately, we have an open-source alternative: GGWave.]
https://www.youtube.com/watch?v=eZ2tmXocepA