Voice Satellite Card - Turn any browser into a voice satellite for Assist

Hey all,

I’ve been working on a custom Lovelace card that I think a lot of people running wall-mounted tablets or kiosk dashboards might find useful, so I wanted to share it here.

I have a couple of tablets around the house running HA dashboards, and I wanted them to double as voice satellites for Assist. The existing options all require dedicated hardware (ESP32-S3 boxes, etc.), but these tablets already have perfectly good microphones sitting right there. Seemed wasteful to stick a separate voice satellite next to a device that already has everything it needs.

Voice Satellite Card is a custom card that turns any browser with a microphone into a fully functional Assist voice satellite. It hooks into your existing Assist pipeline (wake word, STT, conversation agent, TTS – the whole thing) and runs the wake word detection server-side through Wyoming/openWakeWord, just like a regular satellite would.

You drop it into any dashboard view and it works invisibly in the background. When it picks up the wake word, it shows a subtle gradient animation bar and transcription bubbles, processes your request through the pipeline, and plays back the TTS response through the device speakers.

What it does:

  • Listens for wake words using your existing wake word setup (server-side, not local to the browser)
  • Streams audio to your Assist pipeline for STT, conversation, and TTS
  • Stays active across dashboard view changes
  • Auto-starts on page load (with a manual fallback button if the browser blocks auto-start)
  • Shows visual feedback via a customizable gradient bar and speech transcription bubbles
  • Works with Fully Kiosk Browser – can disable the screensaver when the wake word is detected so the screen wakes up for the interaction
  • Configurable chime sounds on wake word detection and request completion
  • Supports noise suppression, echo cancellation, and auto gain control

Requirements:

  • A working Assist pipeline (wake word + STT + conversation agent + TTS)
  • Browser with microphone access over HTTPS
  • The screen/device needs to stay on (use a screensaver rather than screen-off, otherwise the mic goes to sleep)

Installation:

Available through HACS as a custom repository, or manual install by dropping the JS file into your www folder. Basic config is just:

yaml

type: custom:voice-satellite-card

That’s literally it for the default setup. There are a bunch of appearance and behavior options if you want to customize things further.

I’ve been running this on a couple of Samsung tablets with Fully Kiosk and it’s been working well. It’s nice not having to buy separate satellite hardware for rooms that already have a tablet on the wall.

GitHub: GitHub - jxlarrea/Voice-Satellite-Card-for-Home-Assistant: Transform any browser into a voice-activated satellite for Home Assistant's Assist. This custom card captures microphone audio and streams it to your Assist pipeline for wake word detection, speech recognition, and voice responses - turning tablets, wall-mounted displays, or any device with a microphone into a hands-free voice assistant.

Feedback, bug reports, and PRs are all welcome. Let me know if you run into any issues.

5 Likes

Very nice, I just recently got into using voice myself but I still bought a Atom Echo. Your card however could be useful when already on the computer and having the HASS tab active (as I don’t have a permanent tablet on in Kiosk mode). It’s excellent in combination with a local LLM.

Let me know how it goes. Just keep in mind that modern browsers require a user gesture to allow mic access. Fully Kiosk does not have this restriction. If the card detects this, it will show a mic button on the lower right on the dashboard. Once you tap it, the mic starts working and the button goes away.

That sounds/looks fantastic! Does this card work within the iOS Companion App?

The new release works on the Companion App. But you need to enable “Autoplay videos” on the Companion App settings first otherwise TTS wont work.

I only tested this on Android since I dont currently have access to an iOS device.

Please let me know if it works for you!

no option „Autoplay videos“ in the ios version of the companion app.

However, this option (Autoplay videos) is not necessary for the card to work with the companion app on iOS.
But HTTPS is!

I’m struggling with the “one dashboard for all” approach.

According to the setup guide, I should create a separate integration entry for each device (e.g., assist_satellite.tablet_1, assist_satellite.tablet_2). However, since all my tablets share the same Lovelace dashboard, hardcoding the satellite_entity in the card YAML doesn’t seem to work for multiple rooms.

Is there a way to let the card automatically “handshake” with the integration to pick up a unique ID per browser session? Or is the intended way to use conditional cards/visibility settings based on the logged-in user?

Any advice on best practices for a multi-room setup would be greatly appreciated!

That’s actually a great insight. Can you post this on Github to track it as an Enhancement?

Hey Xavier, thanks for this. I’m gonna try it asap with my fire tablet running fully kiosk. Just FYI, the links in your original post render to 404.

Hey, yes, this is the new repo: GitHub - jxlarrea/voice-satellite-card-integration: Transform any browser into a voice-activated satellite for Home Assistant's Assist. This custom card captures microphone audio and streams it to your Assist pipeline for wake word detection, speech recognition, and voice responses - turning tablets, wall-mounted displays, or any device with a microphone into a hands-free voice assistant.

Hi. Many Thanks for this Awesome Projekt. But i have one Question, is there a way to hide or move the the blue microphone button ? Because when you have your Navigation Bar on the Bottom, the Button is over the Menue.

Can you show me a screenshot to see what you mean?

Hi. On Tablett Dashboard it is no Problem with the Bottom bar, but when you have the Navbar on Bootom on Mobile, the Mic is over the Navbar Button. Here the SCreenshot. Thanks for help.