Remote microphone for HiveMind
Project description
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-coredoes 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/:
- Overview & satellite spectrum
- Getting started
- Configuration reference
- Architecture (advanced)
- Deployment (systemd, Raspberry Pi)
- Troubleshooting
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hivemind_mic_satellite-0.8.0a4.tar.gz.
File metadata
- Download URL: hivemind_mic_satellite-0.8.0a4.tar.gz
- Upload date:
- Size: 85.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
768b52bfb6e3d905352b845c706153ce0808c3cd7bc9c911be00cd727b0ba76f
|
|
| MD5 |
551c27ea8e679f5374a5b74315d47ed4
|
|
| BLAKE2b-256 |
c606ded0f602fafcc59af9f3ec7b3253d35e95d090445f7c1e0dd8fba7cd9d77
|
File details
Details for the file hivemind_mic_satellite-0.8.0a4-py3-none-any.whl.
File metadata
- Download URL: hivemind_mic_satellite-0.8.0a4-py3-none-any.whl
- Upload date:
- Size: 79.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8afdbbfa15fbdcc8c56f80d0b909e62946678fc6dbb4e9018c5f5bcb55af63e8
|
|
| MD5 |
79d8dc9843c14e8b12738f362e35d36f
|
|
| BLAKE2b-256 |
922d017f45ee3eb74c517eb17a3a86b225d1ccc9ce53b379a0967d8a385f0b4b
|