sejongwang/ipapack_plus_clean
IPAPACK++ Cleaned-Label Overlay (v1) A labels-only, strictly additive cleaned overlay on IPAPACK++ (Zhu et al., ZIPA, ACL 2025). It adds a regenerated phoneme label (phones_v1_clean) alongside the paper's original phones, a drop_flag for the rows we could not repair, a per-utterance sigs list of which defect (if any) was fixed, and a per-row license tag. The original paper label is preserved on every row, including the dropped ones — so you can compare, ablate, or refuse the… See the full description on the dataset page: https://huggingface.co/datasets/sejongwang/ipapack_plus_clean.
IPAPACK++ Cleaned-Label Overlay (v1)
A labels-only, strictly additive cleaned overlay on IPAPACK++ (Zhu et al., ZIPA, ACL 2025). It adds a regenerated phoneme label (phones_v1_clean) alongside the paper's original phones, a drop_flag for the rows we could not repair, a per-utterance sigs list of which defect (if any) was fixed, and a per-row license tag. The original paper label is preserved on every row, including the dropped ones — so you can compare, ablate, or refuse the cleanup entirely.
This is not a re-publication of the audio and not a replacement for the paper. It is an additive second pass on the labels, built on and crediting IPAPACK++/ZIPA, offered back to the community that uses it. The IPAPACK++ authors were themselves explicit that the G2P-generated transcriptions are noisy, especially for low-resource languages, and named label quality among the paper's limitations; this overlay is extra coverage on top of theirs.
Status: v1, labels-only. No retraining, no audio–IPA forced alignment, no phonetician sign-off yet — see Limitations. Every check verifies a defect is absent from the regenerated label, not that the label matches the audio.
TL;DR
- What this is. A cleaned-label overlay over the full IPAPACK++ corpus: 8,290,179 cuts / 8,281,384 active / 17,109.4 h across 415 shards, as Lhotse JSONL cut manifests. We add
phones_v1_clean,drop_flag,sigs, andlicense. Audio is not bundled — re-pair it from the publicanyspeech/ipapack_plus_*shards bycut.id. - What we fixed. Nine mechanically-identifiable label-defect classes ("signatures"): six fixed directly in the labels, one dropped because it is audio-dependent, two deferred to an eval-time canonicalize layer.
- How much changed. ~1.9 M rows regenerated; 6,383,316 rows (77 %) ship unchanged at the paper baseline.
drop_flagcovers 8,795 utterances (0.11 %). - License. Mixed, per-source (recorded per row in the
licensefield) — most rows are CC0/CC-BY, but four crowd-sourced OpenSLR slices (~778 k rows) are CC-BY-SA. See Source corpora & licenses. - How to use it. Train on
cut["supervisions"][0]["custom"]["phones_v1_clean"]; filter out…["custom"]["drop_flag"]; re-pair audio bycut.id. The paper baseline is preserved on every row.
How to use it
This is a label overlay: you get cleaned label manifests; you bring your own audio.
from huggingface_hub import snapshot_download
from lhotse import CutSet
# 1) pull the cleaned cut manifests (labels only, no audio)
local = snapshot_download("sejongwang/ipapack_plus_clean", repo_type="dataset",
allow_patterns="cuts.*.jsonl.gz")
NO_ROUTE = {"mn", "ia", "ceb", "jv", "ff", "tg", "skr"} # ship at ipa_v0; filter by ISO
cuts = CutSet.from_jsonl(f"{local}/cuts.000000.jsonl.gz") # one shard; loop over all 415
for cut in cuts:
sup = cut.supervisions[0]
custom = sup.custom
if custom.get("drop_flag", False):
continue # skip Sig-3 / untonable / residue
if sup.language in NO_ROUTE:
continue # carries v3_backend="unchanged"
label = custom["phones_v1_clean"] # train on this
baseline = custom.get("original") or custom.get("phones") # paper baseline (heterogeneous)
row_license = cut.custom["license"] # per-row source license (e.g. cc-by-sa-4.0)
# re-pair audio: member {cut.id}.flac inside the original recording.NNNNNN.tar (same shard index)Fields (all on the supervision's custom block unless noted):
phones_v1_clean— the canonical v1 cleaned label; train on this.drop_flag—Truefor Sig-3 (digit), Sig-4-untonable, and residue drops. Filter these out.original(a.k.a.ipa_v0) — paper baseline; heterogeneous: absent on ~1.445 M MLS rows, which keepphones. Read ascustom.get("original") or custom.get("phones").sigs— list of signatures fixed on this row.cut.custom.corpus— source provenance tag (cut level), e.g.cv:rw,mls:german,openslr:bengali.cut.custom.license— per-row source license (cut level). Filter on this if you must avoid ShareAlike rows.
Two warnings worth tattooing on your dataloader. supervisions[0]["text"] is a stale phone string, not orthography. PII (gender, speaker, age, accents, variant) has been stripped on every row.
Re-pairing audio. Join by cut.id. Each utterance's audio is the member {cut.id}.flac inside the original recording.NNNNNN.tar at the same shard index as the cut shard (positionally paired). The original audio is the public anyspeech/ipapack_plus_* dataset (16 kHz). (The lhotse `from_shar` re-pairing path was not executed end-to-end here — sanity-check it against your lhotse version.)
What the audit found: the nine signatures
A signature is a single, mechanically-identifiable defect class in IPAPACK++'s phoneme labels. ipa_v0 is the paper-baseline label; ipa_v3 (= phones_v1_clean) is the cleaned label. The audit, the detector, and the measurements are our work; the dataset, its Table-6 hour accounting, and the G2P tools (CharsiuG2P, Epitran) are the paper's.
So: six fixed in the data (1, 2, 4, 5, 6, C1), one dropped (3), two eval-time only (7, 8). The largest single re-route is Kinyarwanda (rw, 977,882 utts), which has no citation-form gold and is validated only by inter-tool agreement — weight it accordingly. Per-utterance regeneration uses a measurement-driven per-ISO matrix (BEST_G2P_PER_LANG) drawn from thirteen G2P backends (ten exercised in v1).
The full forensic detail — every measurement, the false-positive byte-match audit (~1,200 h of MLS/LibriSpeech cells over-flagged and excluded before the signatures were finalized), the additional-damage sweep, and the zero-tone proof — is available on request.
Limitations
- No retraining, ablation, or forced alignment at v1 — this is the big one. Every PASS verifies self-consistency with the generating backend (the defect is absent), not label-to-audio correctness. PERs are cited against citation-form lexicon gold, not IPAPACK++ audio. Tone-restored
zh/yue/thapply no sandhi (你好 ships asnǐ hǎo, unsandhied) — treat as "tone present, value unverified." Because there is no reliable token-level alignment in seq2seq G2P, each fix re-transcribes the whole utterance, so non-target tokens adopt that backend's conventions (reduced forms, stress/length marks) — likewise not audio-validated. A full audit of all approximately 1.9 M regenerated rows confirms this re-transcription introduces a small rate of new errors — approximately 38 malformed labels, approximately 1,100 illegal genitive clusters (en/ca), approximately 1,000 gold-regressions in two re-routed cells — but the fixes outweigh them by approximately 100:1 for the main signatures. The exception is the Malay (ms) re-route, which is net-negative (the routed backend emitted English-style pronunciations) — fall back to v0 there. - Most of the package is unchanged paper baseline. ~1.9 M rows touched; 6,383,316 (77 %) ship unchanged, including a parse-cell blind spot of ~2.49 M cuts (MLS, OpenSLR, hyphenated
zh-CN/sv-SEcells) never routed through the detectors. Treat anyv3_backend="unchanged"row as "paper-baseline quality, not audited by this release." - The 7 no_route ISO codes are unmeasured.
mn, ia, ceb, jv, ff, tg, skr(~19 k utts) sit atipa_v0withdrop_flag=False. - The shipped vocab predates the cleanup. Encoding
phones_v1_cleanwithipa_simplified/unigram_127.modelsends ≈1.36 M utts to<unk>(≈680 k afterɡ→g). These are not label defects — normalizeɡ→gor extend the vocab before training. - Sig-7/8 are eval-time only (apply
ø→œfor fr,r→ɾfor es to both hyp and ref before scoring; the es merge hides genuine /ɾ/–/r/ contrasts). Also ~800,764 cuts share a duplicate `phones_v1_clean` — dedup/group-by-label when splitting to avoid train/test leakage.
Source corpora & licenses
This dataset is an additive, labels-only overlay. It redistributes regenerated IPA phoneme labels (`phones_v1_clean`), orthographic transcript text, utterance IDs, and a Lhotse cut manifest — NO AUDIO. Re-pair audio yourself from the sources below. Original IPAPACK++ phones are preserved on every row.
This is a mixed-license release. The applicable license is recorded per row in the license field. *Rows from ShareAlike sources are offered under CC-BY-SA and may not be treated as permissively licensed.*
Primary citation: Zhu, J., Samir, F., Chodroff, E., Mortensen, D. R. ZIPA: A Family of Efficient Models for Multilingual Phone Recognition. ACL 2025. <https://aclanthology.org/2025.acl-long.961/> · arXiv:2505.23170
Excluded: Magicdata — non-redistributable per IPAPACK++; confirmed absent from this release.
ShareAlike notice. The Bengali, Javanese, Sinhala, and Kazakh-KSD slices are offered under CC-BY-SA-4.0 — their regenerated IPA labels are Adapted Material. (Bengali/Javanese/Sinhala sources are CC-BY-SA-4.0; the Kazakh-KSD source is CC-BY-SA-3.0, upgraded to 4.0 under the ShareAlike "this version or later" clause.) Changes were made (phoneme labels regenerated via grapheme-to-phoneme).
G2P toolchain (credit, not a license obligation on the labels). Labels were generated with OLaPh (Wirth, 2025; en/de/fr/cs), Epitran, phonemizer + espeak-ng (nl/sv), CharsiuG2P, pypinyin + pinyin-to-ipa, ToJyutping, viphoneme, PyThaiNLP, indicnlplibrary, and commonvoice-utils. espeak-ng is GPL-3.0 and commonvoice-utils is AGPL-3.0, used in-process during generation; per the FSF GPL FAQ, program output is not covered by the program's copyright, so no GPL/AGPL obligation attaches to these IPA label strings.
Citation
Please cite both this overlay and the original IPAPACK++ paper.
@misc{kim2026ipapack_cleanup_v1,
title = {Cleaning IPAPACK++: A Surgical Audit of Multilingual Phoneme Labels},
author = {Kim, Junehwi},
year = {2026},
note = {IPAPACK++ Cleaned-Label Overlay (v1), Hugging Face Datasets},
}Zhu, Jian and Samir, Farhan and Chodroff, Eleanor and Mortensen, David R. ZIPA: A Family of Efficient Models for Multilingual Phone Recognition. Proc. 63rd ACL 2025 (Vol. 1: Long Papers). <https://aclanthology.org/2025.acl-long.961/>
The label-cleanup work and this release are by Junehwi Kim; compute was a local 2080 Ti × 3.
