Repository navigation
[Accuracy] PersonaPlex resamples input audio differently from the Native reference loader and changes the Mimi input codes #1749
Description
Affected area
Inference output or task execution
TensorRT-Model-Connect version
268e03e56c9206d21611e5943c656ab97c4a08e1 (current main).
Installation method
Development container / source build.
Model and revision
nvidia/personaplex-7b-v1 @ fdaf4090a61cb315c138a1faee287ffd6c716309
Environment
- NVIDIA GB300, CUDA 13.0, TensorRT 11.2.0.113, FP16 bundle with the profile's
fp32_layers: [0, 1]. - AIPerf qualification profile
personaplex-7b: 20 LibriSpeech test-clean clips (16 kHz),audio_paritygate (duration ratio 0.8-1.2, RMS ratio 0.5-2.0, log-spectral distance <= 3.0 dB, all 20 required) against the Native FP16 reference.
Minimal reproducer
The Native reference that the profile compares against loads the 16 kHz input with librosa.resample(..., target_sr=24000), whose default is soxr's HQ recipe (linear phase, passband ending at 91.3% of Nyquist, ~126 dB rejection). Upstream PersonaPlex resamples with sphn (an FFT resampler) instead; the test environment's sphn stand-in reads 24 kHz files only, so the qualification reference uses librosa. SpeechPipeline resamples with resample_linear: a 32-tap Hann-windowed sinc cut at Nyquist. The waveforms differ by about 2% RMS in the interior of every clip, and Mimi tokenizes the difference:
| Input to the Mimi encoder | Mimi codes differing from the Native soxr-HQ path, per clip (20 clips) |
|---|---|
| Runtime resampler | 10 to 528 |
| Exact librosa soxr-HQ audio | 0 to 23 (the encoder's own numerics) |
Feeding TensorRT the exact soxr-HQ 24 kHz audio (Native requests unchanged) raises the profile from 14/20 to 18/20 on the same bundle.
Observed behavior
The profile fails: 6/20 on main; the input codes, and therefore the generated speech, diverge from the reference on every clip.
Expected behavior
The runtime should resample like the Native reference loader so the model is conditioned on the same Mimi codes.
Relevant logs
A dependency-free Kaiser-windowed sinc with soxr-HQ's band edges matches librosa soxr-HQ to 4e-6..5.6e-4 relative RMS and changes 0 to 14 codes per clip. Related: #767 (closed, different benchmark).
Validated follow-up (2026-10-18)
PR #1798 addresses the remaining approximation in the bounded Kaiser implementation. With the true FP16 temporal/depth core and the original gate, clip 18 first receives different user codes at frame 23. On the same engine, Native's resampled waveform passes at 1.08 dB; the Kaiser waveform fails at 3.78 dB and reproduces the prior output digest. This isolates an input-resampling cause rather than a depth-output defect.
The family-local runtime loader in #1798 uses system libsoxr HQ without development headers or a link-time libsoxr dependency. A missing runtime is reported explicitly. On the original 20 waveforms, lengths match Native and maximum absolute error is 7.152557e-7 (not bit-exact). The same final CPU regression gives one numerical failure on the Kaiser implementation and 6/6 passes on the fix, with zero errors or skips on both controls.
Final published-code qualification remains 18/20 in one build: clip 18 passes; clips 7 and 11 fail at 5.58 and 6.42 dB. Fresh same-batch Native reproduces all 20 frozen PCM outputs and output-frame counts. Exact input re-exposes clip 7, which had passed with changed Kaiser input codes. The original requests, Native baseline and 3 dB gate are unchanged.
Activity
fix(personaplex): resample input audio with libsoxr like the reference
[-][Accuracy] PersonaPlex resamples input audio differently from the reference loader and changes the Mimi input codes[/-][+][Accuracy] PersonaPlex resamples input audio differently from the Native reference loader and changes the Mimi input codes[/+]revert(personaplex): move input resampling out of this PR
fix(personaplex): match Native HQ audio resampling
fix(personaplex): feed both sides the same 24 kHz audio
chaofengw-nv commentedon Oct 21, 2026
Update on the fix path: the runtime libsoxr change (#1798, later folded into #1751) has been dropped from #1751. It added an LGPL system dependency only to reproduce the qualification reference's librosa resampling, which the official PersonaPlex loader (
sphn) does not use.#1809 instead resamples the AIPerf speech suites once to 24 kHz, including the LibriSpeech speech-parity suite reported here. Native and TRTMC then encode identical samples, so resampling can no longer make their Mimi input codes diverge. #1809 closes this issue on merge; the speech-parity profile must first be rerun on the 24 kHz suite.
sphn. That would be tracked separately if a product use case needs parity there.feat(personaplex): qualify spoken QA with AIPerf (#1809)