 osobhandClaude Opus 4.7
|
938b54a2b0
|
rtx-csm: AudioSeal watermark — Rust port end-to-end
SEANet generator + detector matching `facebook/audioseal` reference layout
(weight_norm-merged via pure-Rust pickle reader). Verified on real CSM
speech: mean_presence=0.9943, 16/16 message bits decoded.
- src/audioseal.rs: SeanetEncoder (4-stage strided downsample, 2-layer
LSTM bottleneck at 512 channels, 128-dim projection), MsgProcessor
(16-bit message via embedding sum + broadcast-add), SeanetDecoder,
Generator (encoder+msg+decoder), Detector (encoder + single 320×
reverse_convolution + 1×1 head). Padding mirrors audiocraft
_get_extra_padding_for_conv1d exactly.
- src/audioseal_convert.rs: candle_core::pickle reads .pth directly;
merge_weight_norm computes g*v/‖v‖ over all axes except 0; writes
flat safetensors keyed identically to what Generator/Detector read.
- examples/audioseal_inspect.rs: dumps tensor keys + shapes.
- examples/audioseal_convert.rs: HF download + convert CLI.
- examples/audioseal_demo.rs: load + embed + detect on real WAV or
synthetic burst, optionally writes watermarked WAV.
- audio_io.rs gains generic load_mono_at_rate, resample, write_wav_mono
(16 kHz path needed for AudioSeal).
12 new unit tests + 2 converter tests; 63 lib tests total green.
Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
|
2026-04-25 19:26:13 -07:00 |
|