Homelab Academy / Modules
Guided practice + break/fix + lab gate.
Module: Module 4: Local Voice Assistant
Activity type: Lab (Practice)
Objective: Given working STT/TTS providers, the learner can integrate wake → action → spoken response and prove an internet-disconnected end-to-end pass with staged gates.
Complete gates in order. Do not skip to end-to-end.
Inventory satellite hardware, mic, speaker, network, power, OS/firmware versions (workbook table).
Stable identity. Set hostname + reserved IP. Restrict firewall to required LAN flows only.
hostnamectl
ip -br addr
ping -c 2 HA-IP
ping -c 2 STT-HOST
hostname
ipconfig
ping -n 2 HA-IP
Pin audio devices explicitly (card/device names), not “default” indices that shuffle after reboot.
arecord -l
aplay -l
# Save chosen device strings in workbook
Gate A: audio: record + playback sample; save file hash/path.
Gate B: wake: one wake model; 10/10 log sheet.
Gate C: STT path: Wyoming/satellite transport → transcript proof (Class 12 commands).
Gate D: HA understanding: Assist intent from perfect text; expose only needed entities.
Gate E: action: service call changes entity.
Gate F: TTS + playback: hear response on satellite speaker.
Gate G: E2E: 10 attempts from seating position; log latency + failure layer.
# Example timing wrapper around a manual attempt log:
date -Is | tee -a ~/voice-e2e.log
# after each attempt append: PASS/FAIL layer=... ms=...
Gate H: offline privacy: disable WAN for the test segment without killing LAN routing to HA/STT/TTS.
# Example idea only: use your router/firewall controls preferentially:
# On a test client VLAN, block 0.0.0.0/0 except RFC1918.
ping -c 1 1.1.1.1 || echo WAN_BLOCKED_OK
ping -c 1 HA-IP && echo LAN_HA_OK
Repeat one local voice command successfully. Restore WAN. Confirm normal operation.
Responsibility map: write which box does wake/STT/intent/TTS/playback and where logs live.
All boxes must be true before the next class unlocks. If you fail: feedback → targeted review → new practice → reassess.