Skip to content

[Accuracy] PersonaPlex resamples input audio differently from the Native reference loader and changes the Mimi input codes #1749

Closed

Description

@chaofengw-nv

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_parity gate (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

  1. self-assigned this
    on Oct 16, 2026
  2. changed the title [-][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[/+] on Oct 18, 2026
  3. chaofengw-nv commented on Oct 21, 2026

    @chaofengw-nv
    CollaboratorAuthor

    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.

    • The earlier 18/20 result used soxr-HQ input and does not carry over, because the Native baseline changes with the input.
    • Clips 7 and 11 failed even with identical input; that is a separate problem.
    • The runtime still resamples non-24 kHz input with its windowed-sinc implementation, which differs from upstream sphn. That would be tracked separately if a product use case needs parity there.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions