I recently downsized my Pi-based webradio project to a Pico2W. With a webradio, you can play mp3-streams “broadcasted” via internet from radio-stations from all over the world. With a new notable exception: BBC stopped streaming MP3 recently and switched to higher quality codecs killing all sorts of DIY players (and probably also some commercial grade webradios).
MP3 decoding is not available for MicroPython but built into CircuitPython, so this is CP based. I support various setups, e.g. using a Pirate-Audio Hat (without any hassles because of virtual environments or other installation issues). A very neat and compact solution and also very portable:
Below the Hat is my Pico-Pi adapter (the image has a Pico-W, but the Pico2-W is actually used):
.Another setup:
.This uses a Waveshare ESP32S3-Pico, but a Pico2W or Pimoroni Pico Plus 2W would also be fine.
Sound quality depends solely on the used DAC, since the Pico2W just decodes the MP3 and then sends the still digital data using I2S to the DAC. This all works well at least up to cbr256. Some streams don’t work at all but that is the absolute exception. And sometimes the decoder does not lock into the downloaded stream, that’s why I added a reload button ;-)
The whole project is available from: GitHub - bablokb/cp-webradio: CircuitPython based Webradio using I2S to play MP3-Streams.