I’ve got a big music library on my home server and I was still paying for streaming to listen to it around the house. Here’s how I got my own library playing on the house speakers, controlled by voice, with no extra subscription.
The pieces
- Navidrome is a small music server that runs on my NAS. It reads my library and serves it to apps.
- Music Assistant is a Home Assistant add-on. It takes music from Navidrome (and YouTube Music) and sends it to speakers.
- Home Assistant ties it to voice control, so I can ask for music out loud.
Jellyfin stays for the TVs. I kept music out of it on purpose.
Setting it up
- Install the Music Assistant add-on in Home Assistant, set it to start on boot and add it to the sidebar.
- Add Navidrome as a source. Music Assistant treats it as an “OpenSubsonic” server. Enter the address and your login, and leave the API key and path boxes empty.
- Add the Music Assistant integration in Home Assistant. This creates a media player for each speaker.
- For YouTube Music, run a second add-on, the PO Token Generator, alongside. YouTube Music won’t play streams without it.
My players are two Google Nest Minis (also grouped as “Minis”), an AV receiver and the TV.
What went wrong
Alexa speakers can’t play any of this. Music Assistant has no Alexa player, and Alexa won’t stream from a Navidrome server, so a room with an Echo is stuck. For the bedroom I could either get a Nest Mini, which gives voice control, or send Bluetooth from my phone to an old speaker using a Subsonic app like Symfonium, with no voice control.
The voice assistant also picked the wrong speaker. When I asked for music it kept choosing an Echo Dot, which fails. I hid the Echos, Fire TVs and a few other players from the assistant. That only changes what the assistant can see, and nothing was removed.
The old entries were duplicates too. Home Assistant already had Cast entries for the same Nest Minis, so I hid those, and now the assistant only sees the Music Assistant versions.
The YouTube Music caveat
I connected YouTube Music for the days when I can’t decide what to play. It works with a login cookie copied from the browser, which is an unofficial route. Google could break it at any time, and the cookie can expire. If YouTube tracks stop playing, copy a fresh cookie. Treat that cookie like a password. It only lives inside Music Assistant.
Where it stands
A first test played a track on the kitchen speaker at 30% volume and stopped on command. I’m still testing voice control through the assistant: “play X in the kitchen”, “stop the music”. Next jobs are a Nest Mini for the bedroom and switching my voice setup back to local speech recognition.
Was it worth it?
Yes, if you own a library and have a few cast-capable speakers. It costs some setup time, and Alexa households need a different plan.

