CoolFace
Datasetpublic

leeoxiang/emilia-expressive-zh

Emilia Expressive — Phase-1 Filtered Subset Auto-generated by emilia_pipeline.scoring.phase1_hf. This is the Phase-1 filtered view: every clip that survived the S0+S1 acoustic funnel, physically partitioned into quality tiers so you can download exactly the strictness level you want -- before Phase-2 emotion labeling. Derived from amphion/Emilia-Dataset (CC-BY-NC-4.0); the same license and usage restrictions apply. Pipeline version: voxsift-emilia-v1.3-full (schema 1.3) Clips:… See the full description on the dataset page: https://huggingface.co/datasets/leeoxiang/emilia-expressive-zh.

sourceHugging Facecc-by-nc-4.0updated 3mo agoView on Hugging Face
0likes595downloads
Dataset Card

Emilia Expressive — Phase-1 Filtered Subset

Auto-generated by emilia_pipeline.scoring.phase1_hf. This is the Phase-1 filtered view: every clip that survived the S0+S1 acoustic funnel, physically partitioned into quality tiers so you can download exactly the strictness level you want -- before Phase-2 emotion labeling.

Derived from amphion/Emilia-Dataset (CC-BY-NC-4.0); the same license and usage restrictions apply.

  • Pipeline version: voxsift-emilia-v1.3-full (schema 1.3)
  • Clips: 4,487,838 (4,487,838 with audio)
  • Format: WebDataset tar shards under data/{tier}/; each clip is {clip_id}.mp3 + {clip_id}.json (loadable with datasets.load_dataset("webdataset", ...) or the webdataset library). Audio keeps its original sample rate (Emilia-ZH mixes 24/32/44.1 kHz -- see the sample_rate metadata column); it is never resampled by the pipeline.
  • Metadata: metadata/phase1_metrics.parquet -- one flat row per clip (full S0-S3 metrics + tier + sample_rate, keyed by clip_id). Phase-2 emotion/prosody labels are published incrementally as metadata/s4_labels.parquet with the same key; audio tars are never rewritten.

Tiers: pick your filtering level

TierSelection ruleClips
primeS3 speaker-purity pass (single, intrudedtrimmed, degradedpass) AND prosody_dsp_score in the global top 40% of S3-pass clips — the curated expressive core1,300,693
extendedS3 pass, below the top-40% prosody cut — clean but prosodically flatter1,951,038
s3rejectedS1-pass but rejected by S3 sliding-window purity (possible speaker intrusion / degradation); shipped verbatim, no trim, use at your own risk1,236,107

Rules of thumb:

  • Just want the best expressive TTS data -> download data/prime/ only.
  • Want more hours, still clean -> data/prime/ + data/extended/, then optionally re-cut by prosody_dsp_score yourself.
  • Custom funnel -> take all tiers and filter on metadata/phase1_metrics.parquet: every S0-S3 metric is a column, so any stricter (or looser) gate is a parquet query, no repacking needed.

Filtering funnel (applied upstream of the tiers)

StageWhat it does
S0Metadata prefilter: 3.0-30.0s, lang=zh, original DNSMOS ≥ 3.2, text ≥ 4 chars
S1Acoustic gate: aespq ≥ 7.0, aespc ≤ 2.5, aes_ce ≥ 5.0, SNR ≥ 20.0 dB, bandwidth ≥ 4000.0 Hz
S2Prosody richness score (prosody_dsp_score, z-scored over all S1 survivors); the top 40% cut among S3-pass clips defines prime
S3Sliding-window speaker purity; pass verdicts (single, intrudedtrimmed, degradedpass) split prime/extended, the rest -> s3rejected

Clips are ordered by labeling priority (prosody_dsp_score * norm_aesthetics_pq); the priority_rank field preserves that order. intruded_trimmed clips ship head/tail-trimmed audio matching their advertised duration, re-encoded as high-quality VBR MP3 (all other audio is the verbatim source bytes; s3rejected audio is always verbatim).

Per-clip JSON schema

Identity (clip_id, source_shard, text, speaker, language, duration_s), tier, purity (verdict + trim bounds + gender), and labeling priority are always present. When packaged with include_metrics, a metrics block carries the full S0-S3 acoustics + prosody numbers.