Squeezelite vs esphome media player. Pros and Cons

I am experimenting with the the esp32 audio kit boards, which you can get for cheap from aliexpress:

https://www.aliexpress.com/item/1005004949068471.html?spm=a2g0o.order_list.order_list_main.11.4c0b1802vUDOVu

I’ve flashed one with the squeezelite firmware from here:

https://sle118.github.io/squeezelite-esp32-installer/

And the other I’ve adopted into esphome and am using the code found from the forums here:

I’m trying to decide whether to go the squeeze route, or esphome.

On the surface, the esphome code exposes more entities (The media player, the buttons, the amp, and a switch for the headphone jack), but the squeeze lite is only detected as a media player.

The squeeze lite is not detected in esphome, but via either the LMS integration:

Or via Music Assistant which also auto detects the players when you have them configured.

My use case is pretty simple. I want to be able to use an automation to trigger audio to play tts or music in the area in which the player is located. Both squeeze and esphome media player achieve this.

The only pro I can see with the squeeze route is that you don’t actually need to have HA installed at all, and could just use a standalone LMS server to stream music to them, but for me, thats not important.

Does anyone have any thoughts on either approach ?

I went the squeeze and LMS route.
I don’t regret it, independent of HA and integrated into HA where I use players for both TTS announcements and for playing local music and radio. It works without problems with the LMS server that I have been running on Rpi4 for a few years.

I’ve just been testing a bit more, and noticed that the squeeze lite firmware seems to output a very low audio signal when outputting via the headphone jack. Not sure why. Are you using the speaker connections on the board itself, or the headphone output ?

I use the speaker connection on the motherboard.

With the ESP home code, there is an entity exposed called ‘Aux Output’, which when switched on, massively increases the volume of the headphone jack. I’m sure there is a way to do with with the web interface on the squeeze lite, I just cant find the setting.

The other thing that I’ve noticed is that if I try to use the media extractor integration:

No audio plays with the esphome code, unless I route the media player into Music Assistant first as a player provider, and then use music assistants media player, (it usually has the same entity id but with an _2 on the end). I think this might be to do with the audio codec supported on the esphome device, which music assistant is fixing in the background.

EDIT:- I suspect the above issue is related to this bug which I think is still open :

I think music assistant can handle the video format but if sent directly to the esphome device it barfs.

One final addition. When power cycling the audio kit board, it does retain the ‘aux output’ state using the esphome code, but the audio isn’t as loud as normal, and slightly muffled. Toggled the aux output switch fixes this.

Here’s the list of pros for squeezelite vs esphome as I see it:
squeezelize-esp32

  • synced multiroom audio
  • bluetooth, spotify and airplay sink

esphome media player

  • basic single-room media player
  • everything else esphome can do including microwakeword

In many rooms I need/want both, multiroom audio and wakeword, so I actually have two esp32 side by side…

@Dao - Hi there.

Can’t you do multi room audio via music assistant or some simple automations that target multiple players at once ?

The bluetooth possibility is interesting. I’ve not tested that out yet.

Downside to the squeeze is that you don’t (as far as I am aware) get access to the button entities in home assistant, and the headphone output is super low, so you are basically forced to use the on board speaker connections (which is not a huge deal).

EDIT: Turns out fixing the headphone issue was as simple as choosing the right hardware board:

For me at least, there appears to be no obvious difference betwen variant 1 and 2.