Skip to main content

Remote microphone for HiveMind

Project description

Ask DeepWiki License PyPI

HiveMind Microphone Satellite

The thinnest HiveMind satellite — Microphone + VAD only. All speech processing happens on the hive.

Audio is streamed from this device to a HiveMind server running hivemind-audio-binary-protocol. The server handles wakeword detection, STT, intent, and TTS synthesis; the satellite receives the synthesized speech audio and plays it back locally. No local STT or TTS models are needed — ideal for cheap, low-power hardware such as a Raspberry Pi Zero.


Satellite spectrum — where does processing happen?

Satellite Mic VAD Wakeword STT TTS Best for
HiveMind-cli Text-only (keyboard/script)
hivemind-mic-satellite (this repo) local local server server server Cheapest HW / homelab; no local models
HiveMind-voice-relay local local local server server Local wakeword; scales as a service
HiveMind-voice-sat local local local local local Full local stack, sends text

Server requirements

Important: The default hivemind-core does not include audio processing.
You need hivemind-audio-binary-protocol installed server-side to enable server-side wakeword, STT, and TTS.


Why mic-satellite — and when not to

mic-satellite exists for one reason: device resources. With only a microphone and VAD on-device, it runs on the cheapest hardware (a Raspberry Pi Zero, a recycled phone) with zero local models. Everything else — wakeword, STT, intent, TTS — is owned by the hive and gated behind the same access-key authentication as the rest of the mesh. The hive operator decides the engines, models, and voice, uniformly; a satellite cannot override them. (Same ownership model as voice-relay — see its docs for the "HiveMind as a service" framing.)

The trade-off, and the limit. Because there is no local wakeword, the satellite streams every detected voice segment upstream (VAD-gated, but not gated by a wakeword). That continuous audio stream is bandwidth-heavy and puts the full STT load on the server for all speech, not just commands. It is the right call for a homelab with a handful of personal devices, where on-device resources are the binding constraint. It does not scale for HiveMind-as-a-service across many tenants — streaming raw audio per client is too costly. For a scalable, service-style deployment, prefer voice-relay: local wakeword means audio only leaves the device after activation.


Install

pip install hivemind-mic-satellite

Requires Python ≥ 3.10.


60-second quickstart

1. On the hive (server) — create an access key for this device:

hivemind-core add-client --name my-mic-sat
# note the access_key and password printed

2. On the satellite device — set the identity:

hivemind-client set-identity \
  --key <access_key> \
  --password <password> \
  --host <hive-host-or-ip>

3. Run:

hivemind-mic-sat

Or pass credentials directly without storing them:

hivemind-mic-sat --key <key> --password <password> --host <host> --port 5678

Minimal configuration

The satellite shares the standard OpenVoiceOS config file ~/.config/mycroft/mycroft.conf.
At minimum you need a microphone plugin and a VAD plugin:

{
  "microphone": {
    "module": "ovos-microphone-plugin-alsa"
  },
  "VAD": {
    "module": "ovos-vad-plugin-silero"
  }
}

See docs/configuration.md for all options, plugin selection, and audio device tuning.


Supported plugins

Plugin type Required Purpose
Microphone Yes Captures audio from hardware
VAD Yes Voice activity detection (when to stream)
PHAL No Platform/hardware abstraction (e.g. LEDs, buttons)
TTS Transformers No Mutate TTS audio before playback
G2P No Visemes / mouth movement (e.g. Mycroft Mk1)
Media Playback No "Play Metallica"-style media commands
OCP Plugins No URL playback (YouTube, etc.)

Features not present (handled server-side)

  • STT (speech-to-text) — runs on server
  • TTS (text-to-speech) synthesis — runs on server
  • Wakeword detection — runs on server
  • Continuous listening / hybrid listening / sleep mode / recording mode
  • Multiple wakewords
  • Audio / dialog transformer plugins

Documentation

Full zero-to-hero documentation is in docs/:


Related

Project Role
HiveMind-core The hive — manages connected satellites
hivemind-audio-binary-protocol Server-side audio processing (required)
HiveMind-voice-relay Satellite with local wakeword
HiveMind-voice-sat Full local stack satellite
HiveMind-cli Text-only satellite
ovos-plugin-manager Plugin framework (mic, VAD, PHAL, …)

License

Apache-2.0 — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hivemind_mic_satellite-0.8.0a3.tar.gz (84.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hivemind_mic_satellite-0.8.0a3-py3-none-any.whl (79.9 kB view details)

Uploaded Python 3

File details

Details for the file hivemind_mic_satellite-0.8.0a3.tar.gz.

File metadata

  • Download URL: hivemind_mic_satellite-0.8.0a3.tar.gz
  • Upload date:
  • Size: 84.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hivemind_mic_satellite-0.8.0a3.tar.gz
Algorithm Hash digest
SHA256 74151bcc6e0a6729e48d13bb93e56a64ead3339a5bdf55043a2b19ffade03a17
MD5 f693cf37a50905bf9d38e91c0e063845
BLAKE2b-256 e473d884d01d20b04bc00ea7d4f00794a854f52b1eb420673947457ea5084720

See more details on using hashes here.

File details

Details for the file hivemind_mic_satellite-0.8.0a3-py3-none-any.whl.

File metadata

File hashes

Hashes for hivemind_mic_satellite-0.8.0a3-py3-none-any.whl
Algorithm Hash digest
SHA256 8a55f332669b3eebb55a298885de065972fd018bbac036bc13c6cba8803ebf95
MD5 1d83e8e5d420aec3eb51ac96258a1941
BLAKE2b-256 be117801b01344cbf638ac030c5fd2078765136f130a3766aca475633db35a84

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page