SingAlign β€” released checkpoints

Weights for SingAlign, a unified forced-alignment toolkit for singing voice. The code lives in the GitHub repository; this repository holds only the checkpoints it downloads.

Files here are named exactly as configs/models/<name>.yaml declares them, so the toolkit's resolver (modules/common/api/checkpoints.py) fetches them by name and verifies the pinned SHA256 before it puts anything on disk.

File Family Size SHA256
hfa-mandarin-fullweak-v1.ckpt HubertFA 54.2 MB d38f7d5839e2cd93e8dec5b77b6bd3ed28aa1318d5ed069c2cd81c899dd3c057

hfa-mandarin-fullweak-v1

A HubertFA alignment head over a frozen chinese-hubert-base front-end, trained in-repo with train_hfa.py. It is SingAlign's default model.

  • Recipe: configs/hfa/train_fullweak_v1.yaml, data configs/hfa/binarize_fullweak.yaml.
  • Training data: 51.4 h full-label (GTSinger, M4Singer, Opencpop) + 7627 h weak-label Mandarin singing (lyrics only, no phoneme durations).
  • Step 15000, selected by CBER on a held-out validation set β€” not the final step-60000 weights, whose validation curve had already degraded.
  • Phoneme inventory: 117 phones, sofa-expanded-v1 profile (identity against the toolkit's canonical Mandarin inventory).
  • G2P: G2pW β€” no pronunciation dictionary to configure.

Results

Scored on cloudtest-verified-v1: 8 recently released original songs (90 clips, 1971 phones, 535.6 s) with hand-verified word + ph tiers, none of whose song IDs or "artist – title" pairs appear in any training manifest. Every system was fed the same gold phoneme sequence with G2P and breath detection off, so this measures acoustic alignment only.

System VER20 ↓ VER50 ↓ mIoU ↑ CBER ↓
hfa-mandarin-fullweak-v1 0.2265 0.0571 0.8030 0.1737
HubertFA v0.0.7 (upstream ONNX) 0.2075 0.0786 0.7734 0.2223
SOFA ConvNeXt (in-repo) 0.2519 0.0835 0.7747 0.2159
SOFA pretrained_mandarin_singing 0.2575 0.0946 0.7501 0.2901
STARS (Chinese) 0.3379 0.1674 0.6072 0.6547

VER20/VER50 are vlabeler edit ratios at 20 ms / 50 ms boundary tolerance and include SP; mIoU and CBER exclude it. Point estimates, no confidence intervals.

Read this as an error profile, not a ranking. This model leads on VER50, mIoU and CBER but trails upstream v0.0.7 by ~9% on VER20: it makes fewer large errors and more small ones. If your criterion is a 20 ms tolerance, the upstream model is the better pick.

Runtime dependency

The torch path does not carry its own SSL front-end. The checkpoint records hubert_config.model_path, and those encoder weights (TencentGameMate/chinese-hubert-base, ~380 MB) must be present. python scripts/download_assets.py in the toolkit fetches this checkpoint, the encoder and the G2pW model together.

Usage

git clone https://github.com/pymaster17/SingAlign && cd SingAlign
uv sync --extra pitch && source .venv/bin/activate
python scripts/download_assets.py           # this checkpoint + encoder + G2pW
python infer_one.py -a audio.wav -t "δΈ­ζ–‡ζ­Œθ―" --out_formats textgrid,json
from modules.api import HubertFATorchAligner

aligner = HubertFATorchAligner()             # resolves to this checkpoint
results = aligner.align([{"id": "x", "audio_path": "a.wav", "text": "δΈ­ζ–‡ζ­Œθ―"}])

Caveats

  • confidence does not transfer across models. SOFA scores land in ~[0.79, 1] and HubertFA in ~[0.67, 0.95], and the score is a top-2 pairwise margin. Any threshold inherited from another model has to be re-calibrated.
  • Mandarin only. The inventory and the frozen encoder are both Chinese; there is no released multilingual checkpoint.
  • The weak-label half of the training data is scraped Mandarin singing whose underlying recordings are third-party copyrighted works. The weights are released for non-commercial research (CC-BY-NC-4.0) for that reason; the toolkit's source code is MIT and licensed separately.

Citation

Upstream work this builds on: SOFA and HubertFA.

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