The ESP32-based M5Stack is equipped with an LCD screen, three hardware buttons and a speaker connected to pin 25 of the digital/analog output of the ESP32. I played a little with the MP3 streaming capabilities of ANNEX32-RDS on this M5Stack hardware.
It works well, although the internal sound of the M5 is a bit scratchy and prone to WLAN interference. This seems to be due to the lack of sufficient filtering and decoupling of the 3V3 supply, as my experiment with a separate ESP32 nodeMCU has shown.
With an external I2S digital-to-analog converter the sound works fine.
But for the small amount of hardware and a simple ANNEX32 BASIC script it works fine.
In version 1 you can select one of three internet radio stations with the three M5Stack hardware buttons or via the web interface.
The links for the MP3 streams may have expired. At the moment the PLAY.NETWORKS command from ANNEX32 cannot follow a forwarding URL - but the developer has announced a solution for this in the upcoming beta version.
The script will work on M5Stack with ANNEX32-firmware but also on other ESP32-boards e.g. ESP32-NodeMCU.
ANNEX32 can use the internal DAC or any external I2S-DAC, which will produce a much better audio quality.
For own experiments: The buttons at pin 37,38,39 of the M5 do a pulldown when pressed.