Model card: add the breath head nll-hubert-ls960-v1 and M4Singer attribution
Browse files
README.md
CHANGED
|
@@ -7,6 +7,7 @@ tags:
|
|
| 7 |
- forced-alignment
|
| 8 |
- singing-voice
|
| 9 |
- phoneme-alignment
|
|
|
|
| 10 |
- hubert
|
| 11 |
library_name: singalign
|
| 12 |
pipeline_tag: audio-to-audio
|
|
@@ -26,6 +27,7 @@ name and verifies the pinned SHA256 before it puts anything on disk.
|
|
| 26 |
|---|---|---:|---|
|
| 27 |
| `hfa-mandarin-fullweak-v1.ckpt` | HubertFA | 54.2 MB | `d38f7d5839e2cd93e8dec5b77b6bd3ed28aa1318d5ed069c2cd81c899dd3c057` |
|
| 28 |
| `hfa-english-fullweak-v1.ckpt` | HubertFA | 54.1 MB | `c1b2baa939a87b3ed832c97e18eba9fcb27214b39f50ff346c062601bd11c513` |
|
|
|
|
| 29 |
|
| 30 |
## `hfa-mandarin-fullweak-v1`
|
| 31 |
|
|
@@ -157,16 +159,70 @@ aligner = HubertFATorchAligner(ckpt="hfa-english-fullweak-v1", g2p="G2pEn")
|
|
| 157 |
results = aligner.align([{"id": "x", "audio_path": "a.wav", "text": "english lyrics"}])
|
| 158 |
```
|
| 159 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 160 |
## Training data, attribution and terms
|
| 161 |
|
| 162 |
-
|
| 163 |
required by several of them; the ShareAlike terms are why this repository is
|
| 164 |
CC-BY-NC-SA-4.0 rather than CC-BY-NC-4.0.
|
| 165 |
|
| 166 |
| Corpus | Used by | Terms |
|
| 167 |
|---|---|---|
|
| 168 |
-
| [GTSinger](https://github.com/GTSinger/GTSinger) |
|
| 169 |
-
| M4Singer
|
|
|
|
| 170 |
| [Project-AIdol](https://github.com/lottev1991) | English | CC BY-SA 4.0. Created by **Lotte V (@lottev1991)**. The dataset asks that it not be used with voice changers (RVC and similar), and that models featuring the voice not be publicly released without prior permission — this is an aligner, which predicts phone boundaries and cannot reproduce a voice. |
|
| 171 |
| ACV-001 | English | supplied as supplementary data; check the source for its current terms |
|
| 172 |
| NUS-48E | English | shared for **research purposes only**; cite Duan, Fang, Li, Sim and Wang, *The NUS Sung and Spoken Lyrics Corpus*, APSIPA ASC 2013 |
|
|
@@ -181,7 +237,8 @@ weights.
|
|
| 181 |
~[0.79, 1] and HubertFA in ~[0.67, 0.95], and the score is a top-2 pairwise
|
| 182 |
margin. Any threshold inherited from another model has to be re-calibrated.
|
| 183 |
- **One language per checkpoint.** Each model's inventory and frozen encoder
|
| 184 |
-
are language-specific; there is no multilingual checkpoint.
|
|
|
|
| 185 |
- The weak-label half of both models' training data is scraped singing whose
|
| 186 |
underlying recordings are third-party copyrighted works. The weights are
|
| 187 |
released for **non-commercial research** for that reason, under
|
|
|
|
| 7 |
- forced-alignment
|
| 8 |
- singing-voice
|
| 9 |
- phoneme-alignment
|
| 10 |
+
- breath-detection
|
| 11 |
- hubert
|
| 12 |
library_name: singalign
|
| 13 |
pipeline_tag: audio-to-audio
|
|
|
|
| 27 |
|---|---|---:|---|
|
| 28 |
| `hfa-mandarin-fullweak-v1.ckpt` | HubertFA | 54.2 MB | `d38f7d5839e2cd93e8dec5b77b6bd3ed28aa1318d5ed069c2cd81c899dd3c057` |
|
| 29 |
| `hfa-english-fullweak-v1.ckpt` | HubertFA | 54.1 MB | `c1b2baa939a87b3ed832c97e18eba9fcb27214b39f50ff346c062601bd11c513` |
|
| 30 |
+
| `nll-hubert-ls960-v1.pt` | breath head (NLL) for the English aligner | 9.9 MB | `03587e7a476aea7f137904e6034420d0a4b255d12949e85ec16b20077ae29ce8` |
|
| 31 |
|
| 32 |
## `hfa-mandarin-fullweak-v1`
|
| 33 |
|
|
|
|
| 159 |
results = aligner.align([{"id": "x", "audio_path": "a.wav", "text": "english lyrics"}])
|
| 160 |
```
|
| 161 |
|
| 162 |
+
## `nll-hubert-ls960-v1`
|
| 163 |
+
|
| 164 |
+
A **breath (non-lexical) head**, not an aligner: a 2.45 M-parameter CVNT that
|
| 165 |
+
labels each 10 ms frame `None` / `AP` from the HuBERT units the aligner has
|
| 166 |
+
already computed, and whose breaths are spliced into the finished alignment as
|
| 167 |
+
`AP` without touching any other boundary. It rides on
|
| 168 |
+
`hfa-english-fullweak-v1` as `ap_detector="nll"` and is selected automatically
|
| 169 |
+
for any HubertFA aligner whose front-end is `hubert-base-ls960`.
|
| 170 |
+
|
| 171 |
+
- **Why it exists**: a breath head is bound to the SSL front-end it was
|
| 172 |
+
trained on. The head shipped inside upstream HubertFA's ONNX bundle was
|
| 173 |
+
trained on `chinese-hubert-base` units; run over `hubert-base-ls960` units
|
| 174 |
+
(same 768 width, unrelated latent space) it recalls **0.001** of the breaths
|
| 175 |
+
in held-out English singing -- nothing. The toolkit now refuses that pairing.
|
| 176 |
+
- **Recipe**: `configs/nll/train_v2.yaml`, data `configs/nll/binarize_v2.yaml`;
|
| 177 |
+
class-weighted CE + focal + dice, 15000 steps, **step 7500** selected on
|
| 178 |
+
frame-F1 over the annotation-consistent held-out groups.
|
| 179 |
+
- **Training data (59.3 h)**: GTSinger singers whose breath annotation agrees
|
| 180 |
+
with the upstream head's convention (ZH ×2, EN-Alto-2, EN-Tenor-1, IT ×3,
|
| 181 |
+
ES-Soprano-1; 32.7 h) + M4Singer (26.7 h). Five GTSinger languages label the
|
| 182 |
+
whole inter-phrase gap as breath; a head trained on all of GTSinger learns
|
| 183 |
+
"gap ⇒ breath" and its precision collapses on any other corpus.
|
| 184 |
+
- **Binary**: `None` / `AP`. No tail-breath (`EP`) class.
|
| 185 |
+
|
| 186 |
+
### Results
|
| 187 |
+
|
| 188 |
+
Frame-F1 at threshold 0.5, scored only inside the gold non-content regions
|
| 189 |
+
(where a breath could be), on songs held out by title:
|
| 190 |
+
|
| 191 |
+
| Held-out set | This head | Upstream head on its own front-end |
|
| 192 |
+
|---|---:|---:|
|
| 193 |
+
| GTSinger Chinese (2 singers, 1.7 h) | 0.885 / 0.872 | 0.844 / 0.790 |
|
| 194 |
+
| GTSinger English, consistent singers (1.3 h) | 0.782 / 0.750 | 0.746 / 0.712 |
|
| 195 |
+
| M4Singer held-out songs (3.0 h) | **0.893** | 0.826 |
|
| 196 |
+
| Opencpop, all 3756 clips (5.2 h, never trained on) | 0.815 | **0.931** |
|
| 197 |
+
|
| 198 |
+
The Opencpop gap is a known limitation: this head still over-fires on
|
| 199 |
+
Opencpop's silent gaps (precision 0.69 at recall 0.99). Full account, including
|
| 200 |
+
the per-singer annotation probe:
|
| 201 |
+
`docs/experiments/nll_hubert_ls960_v1.md` in the toolkit.
|
| 202 |
+
|
| 203 |
+
### Usage
|
| 204 |
+
|
| 205 |
+
```python
|
| 206 |
+
from modules.api import HubertFATorchAligner
|
| 207 |
+
|
| 208 |
+
aligner = HubertFATorchAligner(ckpt="hfa-english-fullweak-v1", g2p="G2pEn",
|
| 209 |
+
ap_detector="nll") # resolves to this head
|
| 210 |
+
```
|
| 211 |
+
|
| 212 |
+
Pairing it with a `chinese-hubert-base` aligner raises; the Mandarin line keeps
|
| 213 |
+
the upstream head.
|
| 214 |
+
|
| 215 |
## Training data, attribution and terms
|
| 216 |
|
| 217 |
+
All checkpoints are derived from corpora with their own terms. Attribution is
|
| 218 |
required by several of them; the ShareAlike terms are why this repository is
|
| 219 |
CC-BY-NC-SA-4.0 rather than CC-BY-NC-4.0.
|
| 220 |
|
| 221 |
| Corpus | Used by | Terms |
|
| 222 |
|---|---|---|
|
| 223 |
+
| [GTSinger](https://github.com/GTSinger/GTSinger) | all three | CC BY-NC-SA 4.0 — attribution, non-commercial, **ShareAlike** |
|
| 224 |
+
| [M4Singer](https://github.com/M4Singer/M4Singer) | Mandarin, breath head | CC BY-NC-SA 4.0; cite Zhang et al., *M4Singer*, NeurIPS 2022 |
|
| 225 |
+
| Opencpop | Mandarin | research corpus; cite its paper |
|
| 226 |
| [Project-AIdol](https://github.com/lottev1991) | English | CC BY-SA 4.0. Created by **Lotte V (@lottev1991)**. The dataset asks that it not be used with voice changers (RVC and similar), and that models featuring the voice not be publicly released without prior permission — this is an aligner, which predicts phone boundaries and cannot reproduce a voice. |
|
| 227 |
| ACV-001 | English | supplied as supplementary data; check the source for its current terms |
|
| 228 |
| NUS-48E | English | shared for **research purposes only**; cite Duan, Fang, Li, Sim and Wang, *The NUS Sung and Spoken Lyrics Corpus*, APSIPA ASC 2013 |
|
|
|
|
| 237 |
~[0.79, 1] and HubertFA in ~[0.67, 0.95], and the score is a top-2 pairwise
|
| 238 |
margin. Any threshold inherited from another model has to be re-calibrated.
|
| 239 |
- **One language per checkpoint.** Each model's inventory and frozen encoder
|
| 240 |
+
are language-specific; there is no multilingual checkpoint. The breath head
|
| 241 |
+
is language-independent but **front-end-specific**.
|
| 242 |
- The weak-label half of both models' training data is scraped singing whose
|
| 243 |
underlying recordings are third-party copyrighted works. The weights are
|
| 244 |
released for **non-commercial research** for that reason, under
|