Verified built Hermes Python reports feature_missing("stt.faster_whisper") == () and imports faster_whisper/numpy
Verified local STT transcribes the test OGG via tools.transcription_tools.transcribe_audio(..., model="tiny")
Note
sounddevice still cannot import standalone on NixOS because PortAudio is not discoverable via ctypes.util.find_library; this does not block Matrix voice-message transcription, which uses faster-whisper on cached audio files rather than microphone capture.
## Summary
- Add the Hermes `voice` optional dependency group to `m3-hermes`
- Keep the existing Matrix/Honcho/Exa/Edge TTS groups and update the comment to mention local STT
- This bakes `faster-whisper` into the sealed Nix Hermes environment so Matrix voice messages can be transcribed without runtime pip/uv mutation
## Validation
- `nix shell nixpkgs#alejandra -c alejandra hosts/m3-hermes/services/hermes-agent.nix`
- `nix build .#nixosConfigurations.m3-hermes.config.system.build.toplevel --no-link --show-trace`
- Verified built Hermes Python reports `feature_missing("stt.faster_whisper") == ()` and imports `faster_whisper`/`numpy`
- Verified local STT transcribes the test OGG via `tools.transcription_tools.transcribe_audio(..., model="tiny")`
## Note
- `sounddevice` still cannot import standalone on NixOS because PortAudio is not discoverable via `ctypes.util.find_library`; this does not block Matrix voice-message transcription, which uses `faster-whisper` on cached audio files rather than microphone capture.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
voiceoptional dependency group tom3-hermesfaster-whisperinto the sealed Nix Hermes environment so Matrix voice messages can be transcribed without runtime pip/uv mutationValidation
nix shell nixpkgs#alejandra -c alejandra hosts/m3-hermes/services/hermes-agent.nixnix build .#nixosConfigurations.m3-hermes.config.system.build.toplevel --no-link --show-tracefeature_missing("stt.faster_whisper") == ()and importsfaster_whisper/numpytools.transcription_tools.transcribe_audio(..., model="tiny")Note
sounddevicestill cannot import standalone on NixOS because PortAudio is not discoverable viactypes.util.find_library; this does not block Matrix voice-message transcription, which usesfaster-whisperon cached audio files rather than microphone capture.