VOSSA: Voiceprint Optimization for Streaming Speech Architectures

Pretrained checkpoints for VOSSA, a real-time streaming voice conversion model (Interspeech 2026, Best Student Paper Award).

Paper · arXiv · Code · Demo page

Model description

VOSSA converts speech from a source speaker to a target speaker in real time, from a short reference recording of the target. Instead of relying on an external speaker-verification model, it extracts the speaker embedding from intermediate layers of its own streaming content encoder, pools it with attentive statistics pooling, and trains it jointly with the voice conversion objectives.

  • Content encoder: causal CNN + 8-layer transformer, 50 Hz frames, 2 s look-back, factorized VQ trained on HuBERT k-means units (frozen).
  • Speaker embedding: from the last CNN layer and every other transformer layer of the content encoder.
  • Decoder: time-varying timbre module conditioned on the speaker embedding, mel synthesizer, and a neural vocoder.
  • Audio: 16 kHz mono in and out.

Files

File Size Used for
config.yaml <1 KB names the checkpoints below; read by the loader
vossa_epoch=52-val_loss=0.6670.ckpt 1.09 GB full VOSSA model (includes content encoder and vocoder weights)
mimivocoder.ckpt 839 MB vocoder, needed to build the model
mimi_pasrv2_withquant_la4.ckpt 451 MB content encoder, needed for training only

The checkpoints are PyTorch Lightning checkpoints and include optimizer states for resuming training.

Usage

Install the code from GitHub:

git clone https://github.com/Morris88826/VOSSA.git
cd VOSSA
pip install torch==2.8.0 torchaudio==2.8.0 --index-url https://download.pytorch.org/whl/cu128
pip install -r requirements.txt

Offline conversion (checkpoints download automatically on first use):

import librosa, torch
from src.pretrained import load_vossa

model = load_vossa()
src, _ = librosa.load("source.wav", sr=16000)
tgt, _ = librosa.load("target_reference.wav", sr=16000)

with torch.no_grad():
    to_tensor = lambda a: torch.from_numpy(a).view(1, 1, -1).to(model.device)
    converted = model(to_tensor(src), to_tensor(tgt)).view(-1)[: len(src)].cpu().numpy()

Streaming conversion (60 ms chunks, any input block size):

from src.streaming import VossaStreamer

streamer = VossaStreamer(model, chunk_frames=3, lookahead=0)
session = streamer.session(tgt)          # 16 kHz reference of the target speaker
for block in microphone_blocks:
    play(session.push(block))
play(session.flush())

See the GitHub repository for notebooks and more details.

Citation

@inproceedings{tseng26c_interspeech,
  title     = {{VOSSA: Voiceprint Optimization for Streaming Speech Architectures}},
  author    = {Mu-Ruei Tseng and Waris Quamer and Ghady Nasrallah and Ricardo Gutierrez-Osuna},
  year      = {2026},
  booktitle = {{Interspeech 2026}},
  pages     = {4716--4720},
  doi       = {10.21437/Interspeech.2026-2763},
  issn      = {2958-1796},
}
Downloads last month
18
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Paper for Morris88826/vossa