# NPU voice/audio local-file pipeline This is the first-slice local-file voice/audio path for the NPU maximization program: ```text local audio file or already-staged attachment -> OpenVINO NPU Whisper (:18816) -> OpenVINO NPU classifier (:18819) -> explicit advisory gate -> Atlas/Hermes only after separate approval ``` The implementation is `scripts/npu_voice_audio_pipeline.py`. It is a CLI wrapper only; it starts no listener and performs no outbound sends, Obsidian writes, memory writes, vector DB mutations, Kanban mutations, service restarts, platform API calls, or live Atlas/Hermes routing changes. ## Safety gates Closed unless explicitly approved later: - Telegram/Discord fetching by bot token or attachment URL. - Outbound messages or auto-sends. - Obsidian/vault writes. - Memory writes. - Vector DB mutation or reindex. - Automatic Kanban mutation. - Service restarts or new persistent listeners. - Private-directory root broadening. - Live Atlas/Hermes routing authority changes. HTTP success is not NPU proof. For NPU claims, require real inference plus positive `/sys/class/accel/accel0/device/npu_busy_time_us` deltas. The CLI reports response deltas and observed sysfs deltas for Whisper and classifier calls. ## Example: synthetic local WAV smoke ```bash cd /home/will/lab/swarm python - <<'PY' import math, struct, wave path = '/tmp/npu-voice-smoke.wav' sr = 16000 with wave.open(path, 'wb') as w: w.setnchannels(1) w.setsampwidth(2) w.setframerate(sr) frames = bytearray() for i in range(int(sr * 0.6)): frames.extend(struct.pack('