I needed a few text-to-speech announcement nodes dotted around the house, to work with my openHAB and Rhasspy based home automation system. The basic idea was to find a cheap, small speaker with decent audio quality for voice output, and drive it from an ESP32-based board with the ESP32 Rhasspy Satellite firmware.
Amazon sells these cheap (<€20) little speaker pairs called “Amazon Basics PC speakers”, which I used for the project. I find their audio quality good enough for the intended voice announcement use case. It consists of one “active” speaker powered by USB, which has a little power amplifier PCB inside, and a second one that is a “passive” speaker driven by the first one. I used the “active” part for this one, and kept the “passive” one for another project.
The schematics and complete bill of materials are available in Github.
I opened the “active” speaker, removes all the hot glue they used to fix the little amplifier PCB, and then removed the PCB. In its place, I used a prototype board that has a footprint for an ESP8266 or ESP32 module. The prototype board needs to be cut to have the same irregular shape as their little amplifier PCB. I made a cardboard template cut to size and used that to test the fit inside the speaker enclosure.
Theoretically, one could also connect a digital microphone to the ESP32 module, the firmware supports the INMP441 and similar models. I tried one, but didn’t manage to position it in such a way that the sound quality was good enough for voice recognition purposes — I just don’t have the skills of an audio engineer.
A more detailed description is available in my blog.