Skip to content

Conversation

@Bleznudd
Copy link

I wrote a Dockerfile to have this conveniently packaged
I tested this on a Raspberry Pi 3B with seeedstudio2mic hat on the latest Raspberry Pi OS with the following

docker build -t bleznudd/satellite:2025.9 .
docker run --rm -it \
    --network host \
    --device /dev/snd \
    --group-add audio \
    bleznudd/satellite:2025.9 \
    --debug \
    --name satellite-test \
    --audio-input-device seeed-2mic-voicecard \
    --audio-output-device alsa/plughw:CARD=seeed2micvoicec,DEV=0 \
    --wake-model alexa

I can confirm the following things are working:

  • audio input
  • wakeword datection
  • audio output
  • autodiscovery via zeroconf

@Bleznudd Bleznudd mentioned this pull request Sep 19, 2025
@Solarunit
Copy link

Nice! It would be a solution for those not on Debian-based distros

@omaramin-2000
Copy link

Include a docker compose also so this will be good.

@Solarunit
Copy link

docker compose is a must-have

@lowlyocean
Copy link

Are we able to specify PulseAudio devices made available by the host system as well, please? I had this working with wyoming-satellite by including the following to docker-compose:

    devices:
      - /dev/snd:/dev/snd
    volumes:
      - /var/run/pulse/native:/var/run/pulse/native
    environment:
      - PULSE_SERVER=unix:/var/run/pulse/native
    group_add:
      - audio

And then setting --mic-command to "parecord [...]" and --snd-command to "paplay [...]"

@Solarunit
Copy link

Solarunit commented Sep 20, 2025

PulseAudio is dead no? All big distros are using Pipewire now.
I would like to see pipewire tools support

@dobryc
Copy link

dobryc commented Oct 1, 2025

My build process always hangs on wheel build for pymicro-features :

Building wheels for collected packages: linux-voice-assistant, pymicro-features
  Building editable for linux-voice-assistant (pyproject.toml): started
  Building editable for linux-voice-assistant (pyproject.toml): finished with status 'done'
  Created wheel for linux-voice-assistant: filename=linux_voice_assistant-1.0.0-0.editable-py3-none-any.whl size=8573 sha256=5c8995ac70bfa3a279a6573861c0837f572097b040ce1c63cb643fc276c49353
  Stored in directory: /tmp/pip-ephem-wheel-cache-6dxevtlm/wheels/f7/a1/27/2c1c468ee9d797072fb685fb9d2b01e3269489edc885a78bac
  Building wheel for pymicro-features (pyproject.toml): started

No errors, it just hangs.
I'm on Pi Zero 2w.
What can cause this behaviour? Weak hardware?

@lowlyocean
Copy link

lowlyocean commented Oct 1, 2025

Probably. Are you running the docker build on that machine? If so, it's trying to build software with only 512 MB of RAM and the slowness likely comes from swapping to disk.

It's trying to build because the authors of pymicro-features haven't made a prebuilt wheel for aarch64 available via pypi.

You could wait for the build to finish, or try building the Dockerfile on stronger machine (docker buildx build --platform linux/arm64) and then transferring the images to the Zero 2 W (docker save / docker load). Then just make sure the docker-compose.yml on the Zero 2 W references the transferred image

@dobryc
Copy link

dobryc commented Oct 1, 2025

@lowlyocean Thank you for your reply! I will give it a try!

@andreasntr andreasntr mentioned this pull request Nov 28, 2025
@andreasntr
Copy link

docker compose is a must-have

see #19 (comment)

@andreasntr
Copy link

andreasntr commented Nov 28, 2025

@Bleznudd Thank you for your contribution. This gives me the following error, any idea? (Ignore the device id, the error stays the same even if i only run the container with the "list devices" flags)

For reference, I'm running this in an LXC container in Proxmox (x86). I can pass audio correctly to other containers, such as wyoming-satellite but this uses ALSA instead of pulse.

homeassistant-audio  | Traceback (most recent call last):
homeassistant-audio  |   File "<frozen runpy>", line 198, in _run_module_as_main
homeassistant-audio  |   File "<frozen runpy>", line 88, in _run_code
homeassistant-audio  |   File "/srv/linux_voice_assistant/__main__.py", line 14, in <module>
homeassistant-audio  |     import soundcard as sc
homeassistant-audio  |   File "/srv/.venv/lib/python3.13/site-packages/soundcard/__init__.py", line 4, in <module>
homeassistant-audio  |     from soundcard.pulseaudio import *
homeassistant-audio  |   File "/srv/.venv/lib/python3.13/site-packages/soundcard/pulseaudio.py", line 290, in <module>
homeassistant-audio  |     _pulse = _PulseAudio()
homeassistant-audio  |   File "/srv/.venv/lib/python3.13/site-packages/soundcard/pulseaudio.py", line 101, in __init__
homeassistant-audio  |     assert self._pa_context_get_state(self.context)==_pa.PA_CONTEXT_READY
homeassistant-audio  |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
homeassistant-audio  | AssertionError
homeassistant-audio  | Traceback (most recent call last):
homeassistant-audio  |   File "/srv/./script/run", line 17, in <module>
homeassistant-audio  |     subprocess.check_call([python_exe, "-m", "linux_voice_assistant"] + sys.argv[1:])
homeassistant-audio  |     ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
homeassistant-audio  |   File "/usr/local/lib/python3.13/subprocess.py", line 419, in check_call
homeassistant-audio  |     raise CalledProcessError(retcode, cmd)
homeassistant-audio  | subprocess.CalledProcessError: Command '['/srv/.venv/bin/python3', '-m', 'linux_voice_assistant', '--audio-input-device', 'alsa/hw:0,0']' returned non-zero exit status 1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants