Files
baketnk--frame-yap/docs/evidence/pcm-range-fix-2026-09-24.md
T

2.3 KiB

Captured PCM range rejection — 2026-09-24

Historical observations; not permission for additional recording or inference.

After the wearer enabled advanced debugging and retried speech, the private worker log showed successful requests followed by an inference-stage exception: ValueError: PCM must contain finite samples in [-1, 1], raised by the runtime's _float_pcm validation. No captured speech or full private log is reproduced here. Both native submission and Python clip reading already rejected nonfinite values; finite amplitude overshoot was not bounded. The precise source of that overshoot (microphone gain, capture processing or resampling) was not measured.

Commit 019b813 saturates finite microphone samples to [-1, 1] after SDL conversion, preserving in-range samples and clip length. It does not rescale whole clips or accept NaN/infinity. Worker::submit independently validates the range before clip-file/IPC mutation. Fake-device and IPC regression tests cover both signs of overshoot, extreme finite values, exact boundaries, unchanged ordinary samples, nonfinite rejection and subsequent capture recovery.

Local default CTest passed 13/13; local native hardware-free CTest passed 16/16. The coordinated native Git snapshot also includes 3c03f88f, which changes the Bindings button to open SteamVR's editor directly. Its source diff was reviewed before the combined build; no competing installer was run.

ARM64 native hardware-free CTest: 16/16. Installed/verified build: 2026-09-24T191513Z-g3c03f88f. Native-only package SHA-256: d8433bc6e9e84ee9b54728d99cf1f7631dd999d6aee562a54cc0d04cad484716. Installed --version, current selection and the relaunched executable path matched. previous retains 2026-09-24T190806Z-g6592e1af.

User config and authorized runtime/model paths hashes were unchanged across installation; advanced debugging remained enabled by the user. No FrameYap process was running at the pre-install check. Only FrameYap was launched; no SteamVR, SSH or user-session process was stopped. The new diagnostic log was mode 0600. No assistant-triggered recording, private-audio replay, public fixture inference or input injection was performed. Actual speech retry after this fix, recognition quality and headset interaction remain wearer-led checks.