Skip to content

v2.0.0 audit remediation: parent tracking issue #12

Closed
12 of 12 issues completed
Closed

Description

@joeljose

Tracking issue for the findings from a full audit of the codebase at v2.0.0 (39e90eb).

How the audit was done

  • Read every file: visualmic.py, tests, Dockerfiles, CI, README, design doc.
  • Ran ruff (0.15.7 and 0.16.9) and the test suite: 28 passed, 7 GPU tests skipped.
  • Built a synthetic vibrating-surface generator with exact sub-pixel Fourier-shift motion and a known audio signal at 2200 fps, and scored recovered audio against the truth for different motion directions, drift and noise.
  • No GPU was available. extract_audio_gpu was run end to end on a CPU PyTorch build (torch 2.14 with pytorch_wavelets HEAD) with the device patched to CPU. This tests its logic and numbers, but not CUDA speed or VRAM use.

Headline findings

  • Vertical motion recovers poorly. Correlation with the true audio is 0.85-0.91, against 0.998 with sign-aware, bounded-lag alignment, because half the DTCWT orientations see the motion inverted.
  • Default settings fail on realistic footage. 0.3 px of drift cuts the in-band level by 12 dB (correlation 0.26).
  • The GPU path drops up to batch_size − 1 final frames when the container over-reports its frame count.
  • Filter edge cases crash after processing (-fl 0, 13-27-frame clips), and a wrong container fps (30 instead of 2200) isn't caught.
  • CI will fail on its next run (ruff 0.16: 11 errors), and it never runs pytest.
  • On the positive side, the CPU and GPU paths agree to a correlation of 1.000.

Phase 1: correctness of recovered audio (≈ 2-3 days)

Phase 2: engineering baseline (≈ 1-2 days)

Phase 3: scale and maintenance

Suggested order

#18 and #19 first, so CI is green and runs the tests. Then #20's ground-truth test, so each algorithm fix can be measured. Then #13, #14 and #17, which change the output and should go in a single release (v3.0.0) with before/after numbers in the CHANGELOG.

Activity

  1. joeljose commented on Oct 5, 2026

    @joeljose
    OwnerAuthor

    All 13 findings from the v2.0.0 audit are fixed and closed:

    Issue Fixed in
    #13 #27
    #14 #27
    #15 #29
    #16 #29
    #17 #31
    #18 #25
    #19 #33
    #20 #26, #37
    #21 #33
    #22 #39
    #23 #25, #34
    #24 #27, #37

    The fixes shipped in releases 3.0.0 through 3.2.0.

    Measured against the sound MIT played, on the Chips2 video:

    SNR segSNR
    v2.0.0 -11.1 dB -9.2 dB
    v3.2.0 with --denoise -2.9 dB -1.1 dB

    On the Plant video, v3.2.0 matches MIT's published result on segmental SNR and coherence.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions