PSST1 speaker anonymization weights

System description: PSST1 System description for VoicePrivacy Challenge 2026 (Théo Nguyen, Ben Luks, Tom Bäckström, Rainer Martin, 2026).

Weights for PSST1Anonymizer in quick-convert. PSST1 replaces the speaker of each utterance with a pseudo-speaker drawn from a flow-matching x-vector generator, compensates the pseudo-speaker for the utterance's emotion, and resynthesizes the speech with a speaker-conditioned HiFi-GAN. Audio is 16 kHz mono.

Usage

pip install "quick-convert[speechbrain,yaapt,speechbrain-ser]"
from quick_convert.systems.anonymization import PSST1Anonymizer

anonymizer = PSST1Anonymizer(seed=52)  # downloads these files on first use
waveform = anonymizer.anonymize("utterance.wav", emotion="hap")  # neu, hap, sad, ang

Without emotion=, labels come from a dataset resource or an emotion recognizer; see the quick-convert PSST1 documentation.

Files

File Contents Origin License
ecapa.ckpt ECAPA-TDNN x-vector extractor (192-d), SpeechBrain state dict VoicePrivacy 2024 pretrained_models_anon_xv (NII); derived from VoxCeleb 1 & 2 CC BY 4.0 (VoxCeleb)
hubert_soft.pt Fine-tuned HuBERT-Base content encoder and 200-unit soft projection, converted from fairseq to torchaudio VoicePrivacy 2024 pretrained_models_anon_xv (NII); derived from HuBERT and LibriSpeech-100h MIT (HuBERT), CC BY 4.0 (LibriSpeech)
hifigan.pt HiFi-GAN generator conditioned on soft units, F0 and x-vector; weight norm folded in VoicePrivacy 2024 libri_tts_clean_100_fbank_xv_ssl_freeze (NII); derived from LibriTTS-100h CC BY 4.0 (LibriTTS)
flow.pt Flow-matching x-vector generator (velocity_net) and per-dimension standardization (mean, std) Trained for this release, see below CC BY-NC 4.0
emotion_boundaries.pt Unit normals of linear SVM emotion boundaries for neu, hap, sad, ang PSST research code; trained on x-vectors of ESD and MSP-Podcast CC BY-NC 4.0; check the ESD and MSP-Podcast terms before use

SHA-256:

2254d005747d43813a7e4b14a61aa067c4cc17613111106a83732ede536ea112  ecapa.ckpt
28b4422c2e099845cbfac93c5faf37ecd1f8dbecf86cc28cdafff10926c7de85  hubert_soft.pt
2c8d6d03ad9d41e01b49f5f2aa13aef3428ade7784baeee89ada387304c7a76c  hifigan.pt
a799b5610a197e11a431cc8f9db3873fb701549165354afcf49bb942641094da  flow.pt
c5ff125f098619c68b79f76964fe6034eace91888630d14ab989d3d1b67134e8  emotion_boundaries.pt

Flow training

The flow models the 192-dimensional x-vectors of LibriSpeech train-clean-360 (104,014 utterances) extracted with the frozen, pretrained ecapa.ckpt, after standardization with the training set's per-dimension mean and standard deviation. Recipe: AdamW (learning rate 2e-4, betas 0.9/0.999, weight decay 0.01), OneCycleLR (10 % warm-up, cosine, div_factor 25, final_div_factor 1000), batch size 128, 301 epochs, seed 1999. Reproduce with quick-convert's precompute spk_ecapa_librispeech and train psst1_flow_librispeech runs.

Differences from the original PSST1 research code

  • Flow weights retrained. The research flow was trained on x-vectors from an ECAPA-TDNN whose pretrained weights were never loaded, so it did not model real x-vectors. This release's flow is trained on x-vectors from the pretrained extractor, as the paper describes.
  • Gaussian blending noise. The research code blended the inverted speaker latent with uniform noise; the flow prior is Gaussian, so quick-convert uses Gaussian noise.
  • Per-dimension standardization. The research code standardized every dimension with the first dimension's statistics; quick-convert uses per-dimension statistics.

Results therefore differ from the numbers in the system description.

License

The release as a whole is for non-commercial use (CC BY-NC 4.0), following PSST. Third-party components keep their own licenses as listed above; give attribution to VoxCeleb, LibriSpeech, LibriTTS, HuBERT and the VoicePrivacy 2024 baseline models when you use them.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support