Skip to content

About

Voice assistant for Android tablets with Home Assistant integration

Resources

Stars

58 stars

Watchers

10 watching

Forks

Latest commit

 

History

22 Commits

Folders and files

Repository files navigation

DashVoice

Turn any Android tablet into a smart display that listens on the device.

DashVoice is a smart home voice assistant, a Home Assistant dashboard, and a synchronized multiroom speaker in one app. Wake word and speech recognition run entirely on the tablet — your microphone audio never leaves the device. What you do with the transcript (your HA agent, TTS, music) is yours to keep local or send to a cloud you chose.

Give the tablet in your drawer a second life: mount it on the wall, say "Hey Jarvis, turn on the kitchen lights", and it just works. The tablet isn't only showing your smart home — it's part of it. It listens, it answers, it announces, it rings, and it plays music in sync with every other tablet in the house.

Google Play Android Release

DashVoice Demo
▶️ Watch the demo


Why DashVoice?

DashVoice was born out of frustration. For years, we used Fully Kiosk Browser with Home Assistant to create wall-mounted tablet dashboards. Fully Kiosk is excellent for displaying dashboards, but it couldn't do the one thing we really wanted: voice control.

We wanted to say "Hey Jarvis, turn on the lights" and have it just work — without shipping the audio of our house to somebody's server, and without a monthly fee. Just a tablet on the wall that listens for a wake word and controls our smart home.

Then we wanted music. Not just on one tablet, but synchronized across every room. So we added Sendspin multiroom audio, and now every DashVoice tablet is also a speaker in your whole-home audio system.

So we built DashVoice.


What's new (0.1.587 / sideload 0.1.588)

  • Encrypted Sendspin with Music Assistant 2.10 (Noise). Setup → allow playback without pairing; leave Allow legacy clients on until that player has played. First encrypted connect may mint a new player id.
  • More reliable wake after the room has been quiet for hours
  • Screensaver stays up during voice; Wand on the photo strip
  • Optional tablet camera JPEG for Frigate (off by default)
  • Stronger local HTTP API passwords; Android 16 (targetSdk 36)

Full notes: CHANGELOG.md.


Features

Voice, fully on-device

  • Custom wake words - "Hey Jarvis", "Okay Nabu", and more (fully on-device via openWakeWord)
  • On-device speech recognition - Using sherpa-onnx, so there's no internet round-trip just to understand you. Or leverage the Wyoming protocol for Home Assistant's voice pipeline
  • Your audio never leaves the tablet - Only the transcript travels, only after the wake word, and only to your own Home Assistant
  • Natural language commands - Handled by whichever conversation agent you've set up in HA, via the Conversation API
  • High-quality TTS - Via Piper or OpenAI-compatible endpoints like Kokoro
  • Typically 1-2 seconds from wake word to spoken reply on Tab S7-class hardware

Answers without the cloud

Some things shouldn't need a server at all. Timers and announcements are matched and handled on the tablet itself — they keep working when Home Assistant is unreachable.

  • Native timers - "set a pizza timer for twelve minutes". Multiple named timers at once, pause/resume/cancel by voice, a full-screen alarm when they fire, and they survive an app restart
  • Announcements - "announce that dinner is ready" lights up every tablet in the house with a full-screen card, a chime, and the spoken message
  • No conversation agent involved - no LLM, no network round-trip, no cloud dependency

See Announcements & timers below for the phrases that work.

Whole-home audio (multiroom)

  • Music Assistant integration - Each tablet registers as a speaker in your whole-home audio system
  • Encrypted Sendspin - From 0.1.587 the Music Assistant link uses Noise encryption on your LAN (not a plaintext WebSocket). Allow unpaired playback in MA; a pairing PIN is not required
  • Synchronized playback - Time-synced audio across DashVoice tablets using the Sendspin protocol. Plays in step across rooms; start-to-start timing varies, so we don't advertise a millisecond bound
  • Voice music control - "play LCD Soundsystem radio on the main floor": on-device music intents drive Music Assistant search, radio mode, and synchronized multi-room zones — no LLM needed (guide)
  • Voice-controlled zones - Group any rooms into named zones ("main floor", "everywhere") and start synchronized playback by voice
  • Now Playing overlay - Glassmorphic UI with album art, playback controls, and track info
  • Group transport from any tablet - Stop, pause or skip on one tablet and the whole group follows
  • System volume control - Music Assistant controls your tablet's actual volume; group members get relative gain
  • Multi-codec support - FLAC, PCM, and Opus decoding via Android MediaCodec
  • Automatic discovery - Tablets register via mDNS and appear in Music Assistant automatically

A dashboard worth mounting

  • Home Assistant WebView - Display any Lovelace dashboard with full SPA routing support
  • Screensaver mode - Show photos from Immich via ImmichFrame, or use any URL (DAKboard, weather displays, custom pages)
  • Night mode - Dim red clock display (iOS StandBy-style, preserves night vision)
  • Auto-brightness - Logarithmic brightness curve with configurable dim/wake thresholds and ambient light hysteresis
  • Slide-out control drawer - Quick access to brightness, volume, mic mute, screensaver, and settings
  • Photo feedback strip - Love, Wand, Fewer-like-this, Next, Exit — without leaving the screensaver. Photos stay up during a voice command
  • Optional camera JPEG - Off by default. When enabled, /cam.jpg is for your Frigate or Home Assistant, not us

Fits into Home Assistant properly

  • MQTT auto-discovery - Device sensors and controls appear automatically in Home Assistant
  • Wyoming satellite - Native HA voice pipeline satellite support
  • Device sensors - Battery level, ambient light, charging state, and motion exposed to HA
  • Remote configuration - Control dashboard URL, screensaver, wake word, TTS settings, and more via MQTT or HTTP API
  • Fully Kiosk compatible API - Works with the HA Fully Kiosk integration out of the box

Set up the second tablet in one tap

  • Guided onboarding - A setup wizard walks you through Home Assistant connection, wake word, voice, and a Power Features step that auto-detects MQTT on your network
  • Copy settings between tablets - Set up your first tablet, then new tablets discover it over the network and import its configuration in one tap — no re-entering URLs, agents, or endpoints

Privacy

The claim worth making is the specific one: wake word detection and speech recognition run on the device. Your audio never leaves the tablet. What travels is the transcript, only after the wake word, and only to the Home Assistant instance you configured.

  • No analytics SDK, no crash-reporting SDK, no third-party telemetry of any kind — nothing is collected, so there is nothing to opt out of
  • No account, no subscription — DashVoice doesn't have a login and there is nothing to sign up for
  • Secrets stored in Android's encrypted SharedPreferences (AES-256, Keystore-backed)
  • Timers run entirely on the tablet. Announcements go to your own MQTT broker, and to your Home Assistant if you've configured it — nowhere else

What DashVoice deliberately doesn't claim: "100% local & private." That slogan was never accurate, and nothing in 0.1.587 made it less true. Wake word and ASR are on-device. After that, you choose the rest: the HA conversation agent may be a cloud LLM, TTS may be hosted, Music Assistant providers are usually streaming services, and optional Loki/camera-stream send data to servers you named. All of that can be fully local. See the Privacy Policy.

Compatibility

  • Android 8.0 or newer; arm64 on Google Play, with a legacy sideload build for 32-bit ARM
  • Works great on budget tablets (Samsung Galaxy Tab S7 FE, Lenovo Tab M10, etc.)
  • The small streaming speech model runs on essentially any 64-bit device; the 0.6B high-accuracy models need roughly 7 GB of RAM and won't load below that
  • Optimized for wall-mounted kiosk use, landscape and portrait
  • Low power consumption in standby
  • OTA updates via HTTP API for headless deployments

Announcements & timers

The two features that demo instantly and cost nothing to try. Neither needs a conversation agent, an LLM, or Home Assistant to be up. Timers run entirely on the tablet; announcements travel over your own MQTT broker, which is how the tablets find each other.

Announcements broadcast to every DashVoice tablet in the house: a full-screen card, a chime, and the spoken message.

  • "Hey Jarvis, announce that dinner is ready"
  • "Hey Jarvis, broadcast the movie is starting"
  • "Hey Jarvis, tell everyone it's time to leave"

Announcements need your tablets to share an MQTT broker — that's how they find each other. See the MQTT setup guide.

Timers are native, named, and fully offline. Run several at once, ask how long is left, and get a full-screen alarm when one fires — dismiss it with a tap or by saying "stop".

  • "Hey Jarvis, set a 10 minute timer"
  • "Hey Jarvis, set a pizza timer for twelve minutes"
  • "Hey Jarvis, set a timer for an hour and a half"
  • "Hey Jarvis, how much time is left on the pasta timer?"

And a few more things handled on the tablet, with everything else falling through to your Home Assistant agent untouched:

Say this What happens
"play LCD Soundsystem radio on the main floor" Artist radio, synced across the zone
"play the dinner party playlist in the kitchen" Playlists, albums and tracks by name
"turn it down" / "next song" / "stop the music" Zone-aware transport and volume
"turn on the kitchen lights" Passed straight to Home Assistant

Screenshots

Voice Control in Action

Listening Processing
Listening Processing

Onboarding

Welcome Connect to HA Wake Word Selection
Welcome Connection Wake Word

Voice Configuration

Voice Processing TTS & Agent Hotword Import
Voice Processing Voice Agent Hotwords

Settings

Home Assistant Presence Detection MQTT
Settings HA Presence MQTT
View all onboarding screenshots
Step Screenshot
Welcome
Permissions
Device Discovery
HA Connection
Authentication
Auth Success
Device Name
Voice Processing
Wake Word
Voice Enrollment
Voice Output
Conversation Agent
Hotword Import
Dashboard Setup
Complete

Requirements & what's optional

Required

  • An Android tablet running Android 8.0 or newer
  • A Home Assistant instance on your network — HA is the brain; DashVoice is the face, the ears and the speaker
  • Wi-Fi

Optional

what it adds without it
Music Assistant Multiroom audio and voice music control Everything else works; the tablet just isn't a speaker
MQTT broker Device sensors and controls in HA, plus house-wide announcements Voice, dashboard and timers are unaffected
Immich / ImmichFrame Photo screensaver Point the screensaver at any URL instead, or turn it off

Optional, and entirely your call: the cloud. Wake word and speech recognition are always on the device. Beyond that, the conversation agent that answers you is whichever one you configured in Home Assistant — that may be a local one or a cloud LLM. Text-to-speech may be local Piper or a hosted OpenAI-compatible endpoint. Music Assistant providers are usually streaming services. DashVoice doesn't pick any of those for you, and a fully local setup is a supported configuration.


Which build do I want?

Google Play (recommended) Legacy sideload APK
For Anything from roughly the last several years Older or 32-bit tablets, LineageOS on legacy hardware
Price $9.99 one-time — a Play purchase covers every tablet on your Google account Free; optional tip link, since a sideloaded app can't charge through Play
Architecture arm64 (Play's 16 KB page-size requirement) Adds 32-bit ARM (armeabi-v7a)
Android 8.0+ 8.0+
Updates Automatic Manual — check back here
Support Supported Best-effort, unsupported
Get it Play Store Latest release

The sideload build is not a free tier. Play requires 64-bit ARM, which rules out exactly the older hardware this app exists to revive — so that build is there for tablets Play can't reach, and it runs on the honour system.

Install from Google Play unless it refuses to install on your tablet. If it does refuse — usually a 32-bit device — take the legacy build. These are older, low-RAM devices, so voice works but runs slower. On first run DashVoice sizes up your tablet's RAM and pre-selects a speech engine that fits, and falls back to the lighter pipeline if the modern one can't start; it won't override an engine you pick yourself, so if you change it, choose a small one. To sideload, enable "Install unknown apps" for your browser or file manager, then open the downloaded APK.


Quick Start

  1. Install DashVoice from Google Play (or the legacy APK for older devices)
  2. Complete onboarding - connect to your Home Assistant
  3. Generate a Long-Lived Access Token in Home Assistant (instructions)
  4. Say "Hey Jarvis" and start controlling your smart home!

For detailed setup instructions, see the Setup Guide.


Documentation

Power Feature Guides

These optional integrations add a lot of value once you're up and running:

  • MQTT Setup - Auto-discover every tablet as device sensors and controls in Home Assistant
  • Loki Setup - Ship logs from all your tablets to Grafana for fleet-wide visibility
  • Text-to-Speech Setup - Piper vs. Kokoro vs. OpenAI — quality, latency, and cost compared
  • Voice Music Control - Play music in any room (or every room) by voice via Music Assistant — zones, radio mode, and multi-room sync

Support

☕ Support development

DashVoice is built and maintained by one developer. If it's useful to you — especially if you're running it on hardware the Play Store can't reach — a tip helps keep it going:

buymeacoffee.com/ecohash_co


Older or 32-bit devices (LineageOS, Android 8.x)

See Which build do I want? above — the legacy sideload APK adds 32-bit ARM (armeabi-v7a) support for tablets the Play build can't reach.

→ Latest legacy sideload release

Only the current sideload build is published. Older ones are removed when a new one goes up, so the link above is always the version we'd recommend — bookmark it rather than a version number.


Architecture

┌──────────────────────────────────────────────────────────────┐
│                          DashVoice                           │
│                                                              │
│  ┌─────────────────┐      ┌─────────────────┐               │
│  │  openWakeWord   │      │   sherpa-onnx   │               │
│  │  "Hey Jarvis"   │─────▶│   Local ASR     │               │
│  └─────────────────┘      └────────┬────────┘               │
│                                    │                         │
│                                    ▼                         │
│                           ┌─────────────────┐               │
│                           │ HA Conversation │               │
│                           │      API        │               │
│                           └────────┬────────┘               │
│                                    │                         │
│                                    ▼                         │
│                           ┌─────────────────┐               │
│                           │  TTS Playback   │               │
│                           │ (Kokoro/Piper)  │               │
│                           └─────────────────┘               │
│                                                              │
│  ┌─────────────────┐      ┌─────────────────┐               │
│  │    Sendspin     │      │   Now Playing   │               │
│  │  Audio Client   │─────▶│    Overlay      │               │
│  └─────────────────┘      └─────────────────┘               │
│                                                              │
│  ┌─────────────────┐      ┌─────────────────┐               │
│  │    Wyoming      │      │     MQTT        │               │
│  │   Satellite     │      │   Heartbeat     │               │
│  └─────────────────┘      └─────────────────┘               │
└──────────────────────────────────────────────────────────────┘

Related Projects

DashVoice works great with these open-source projects:

Core Platform

Project Description
Home Assistant Open-source home automation platform
Music Assistant Universal music player for Home Assistant (multiroom audio)
MQTT Integration Message broker for real-time device updates
Wyoming Protocol Home Assistant's local voice assistant pipeline

Voice & AI

Project Description
Extended OpenAI Conversation LLM-powered conversation for Home Assistant
openWakeWord On-device wake word detection
sherpa-onnx On-device speech recognition
Piper Fast, local neural text-to-speech
Kokoro High-quality OpenAI-compatible TTS
Whisper OpenAI's speech recognition (runs locally)

Display & Media

Project Description
Immich Self-hosted photo management
ImmichFrame Digital photo frame for Immich
Sendspin / aiosendspin Multiroom audio sync protocol
Fully Kiosk Browser The app that inspired DashVoice's dashboard features

License

DashVoice is proprietary software. This repository contains documentation and issue tracking only.


Made with care for the smart home community

About

Voice assistant for Android tablets with Home Assistant integration

Resources

Stars

58 stars

Watchers

10 watching

Forks

Releases

Packages

Contributors