--- license: cc-by-4.0 tags: - audio - speaker-gender-identification - sherpa-onnx - africa - waxalnlp datasets: - google/WaxalNLP language: - aaa - aab - aal - aar - aas - aba - abb - abi - abm - abn - abo - abr - abu - acb - acd - ach - acp - acq - ada - add - ade - adh - adj - adq - adu - ael - afe - afh - afn - afo - afu - agb - agc - agh - agj - agq - ags - aha - ahg - ahi - ahl - ahm - ahn - ahp - ahs - aik - aiw - aiy - ajg - ajw - aka - akd - akf - akp - aks - aku - akw - ala - ald - alf - alw - alz - amb - amf - amh - amj - amo - anc - anf - ank - ann - anu - anv - anw - any - aqd - aqg - aqk - arv - asa - asg - asj - ass - asv - atg - ati - ato - aug - auh - aum - auo - avi - avn - avu - awc - awn - awo - axk - ayb - aye - ayg - ayi - ayk - ayu - azo - bab - baf - bag - bam - bas - bau - bav - baw - bax - bba - bbe - bbg - bbi - bbj - bbk - bbm - bbo - bbp - bbq - bbs - bbt - bbu - bbw - bbx - bby - bcb - bce - bcg - bci - bcn - bcp - bcq - bcs - bct - bcv - bcw - bcy - bcz - bda - bde - bdh - bdj - bdm - bdn - bdo - bdp - bds - bdt - bdu - beb - bec - beh - bem - beq - bes - bet - bev - bex - bez - bfa - bfd - bff - bfj - bfl - bfm - bfo - bfp - bga - bgf - bgj - bgo - bgu - bhr - bhs - bhy - bib - bid - bif - bil - bim - bin - bip - biv - biw - biz - bja - bjg - bji - bjo - bjt - bju - bjv - bjw - bka - bkc - bkf - bkg - bkh - bkj - bkm - bko - bkp - bkt - bkv - bkw - bky - ble - blh - bli - blm - blo - blv - bly - bma - bmb - bmd - bme - bmf - bmg - bmi - bml - bmm - bmo - bmq - bms - bmv - bmw - bng - bni - bnl - bnm - bnx - bnz - bob - boe - bof - boh - bok - bol - bom - boo - bou - bov - box - boy - boz - bpc - bpd - bpj - bqa - bqc - bqd - bqf - bqg - bqj - bqk - bqm - bqo - bqp - bqt - bqu - bqv - bqw - bqx - bqz - brf - bri - brl - brm - brt - bsc - bse - bsf - bsi - bsj - bsl - bso - bsp - bsq - bsr - bss - bst - bsv - bsw - bsx - bta - btc - bte - btf - btg - btt - btu - bub - buc - bud - buf - bui - buj - bum - bun - bus - buu - buw - bux - buy - buz - bva - bvb - bvf - bvg - bvh - bvi - bvj - bvm - bvo - bvq - bvw - bvx - bwc - bwg - bwh - bwj - bwl - bwo - bwq - bwr - bws - bwt - bwu - bww - bwy - bwz - bxb - bxc - bxe - bxg - bxk - bxl - bxo - bxp - bxq - bxs - bxv - bxw - byb - byc - byf - byi - byj - byn - byp - bys - byv - bza - bzc - bze - bzm - bzo - bzv - bzw - bzx - bzy - bzz - cae - cbj - cbo - cbq - cce - ccg - cch - ccj - ccl - cdr - cen - cet - cfa - cfd - cfg - cgg - chw - cib - cie - cjk - ckl - cko - ckq - ckx - cky - cla - cli - cll - cme - cmt - cnq - coh - cou - cpn - cpo - cra - cry - csk - cuh - cuv - cwa - cwb - cwe - cwt - cxh - daa - dae - dag - dai - dal - dam - das - dav - dba - dbb - dbd - dbg - dbi - dbm - dbo - dbp - dbq - dbr - dbt - dbu - dbv - dbw - ddd - dde - ddn - dds - dee - deg - deq - dez - dga - dgb - dgd - dgh - dgi - dgk - dgs - dhm - dhs - dib - dic - did - dig - dii - dim - dio - dir - diu - diz - djc - dje - djm - dkg - dks - dkx - dlk - dma - dmb - dme - dmf - dmm - dmo - dmx - dne - dnj - dnn - dno - doe - doh - doo - dop - dos - dot - dov - dow - dox - doy - doz - dri - drs - dsh - dsi - dsk - dti - dtk - dtm - dtn - dto - dts - dtt - dtu - dua - dug - dur - dux - duz - dwa - dwr - dya - dyi - dym - dyo - dyr - dyu - dza - dzd - dzn - ebg - ebo - ebr - ebu - efa - efe - efi - ega - egm - ego - ehu - eja - eka - eke - eki - ekm - eko - ekp - ekr - elm - elo - ema - emk - emn - emz - enb - enn - env - enw - eot - epi - erh - esm - etb - eto - ets - etu - etx - evh - ewe - ewo - eyo - eza - eze - fah - fak - fal - fam - fan - fap - fat - fer - ffm - fie - fip - fir - fkk - fli - fll - flr - fly - fmp - fng - fni - fod - fom - fon - fuc - fue - fuf - fuh - fui - ful - fum - fuq - fuu - fuv - fwe - gaa - gab - gax - gba - gbg - gbh - gbn - gbo - gbp - gbq - gbr - gbs - gbv - gbx - gby - gde - gdf - gdi - gdk - gdl - gdm - gdu - gea - gec - ged - geg - gej - gek - gel - geq - gev - gew - gex - gey - gez - gft - ggb - ggu - gib - gic - gid - gie - gii - gis - gix - giz - gjn - gke - gkn - gkp - gku - glb - glc - glj - glo - glr - glu - glw - gmd - gmm - gmn - gmv - gmx - gmz - gna - gnd - gne - gng - gnh - gnj - gnk - gnz - goa - god - gof - gog - gol - gou - gov - gow - gox - goy - gpa - gqa - gqr - grb - grd - grh - grj - gru - grv - gry - gsl - gso - gua - gud - gur - guw - gux - guz - gvl - gvm - gwa - gwb - gwd - gwe - gwg - gwj - gwn - gwr - gwx - gxx - gya - gye - gyg - gyi - gyl - gyz - hae - hag - han - haq - har - hau - hav - hay - hba - hbb - hdy - hed - heh - hem - her - hgm - hhr - hia - hig - hij - hio - hka - hke - hmb - hna - hng - hnh - hod - hoe - hol - hom - hoo - hor - hoz - hts - huc - hum - hwa - hwo - hya - ibb - ibe - ibm - ibn - ibo - ibr - iby - ica - ich - ida - idc - idd - ide - idr - ids - idu - ife - ifm - igb - ige - igl - igw - ihi - ijc - ije - ijj - ijn - ijs - ikh - iki - ikk - ikl - iko - ikp - ikv - ikw - ikx - ikz - ilb - ilv - imt - ior - iqw - iri - irk - ish - isi - isn - iso - isu - itm - its - itw - iya - iyo - iyx - izm - izr - izz - jab - jad - jaf - jbm - jbu - jek - jen - jer - jeu - jgb - jgk - jgo - jia - jib - jid - jie - jii - jim - jit - jjr - jku - jmb - jmc - jmi - jmr - jms - jni - jnj - job - jod - jow - jrr - jrt - jub - jud - juh - juk - juo - juu - juw - jwi - jyy - kad - kai - kaj - kam - kao - kbj - kbl - kbn - kbo - kbp - kbr - kbs - kby - kbz - kcc - kce - kcf - kcg - kch - kci - kcj - kck - kcn - kcq - kcs - kcu - kcv - kcw - kcx - kcz - kdc - kde - kdg - kdh - kdi - kdj - kdl - kdm - kdn - kdp - kdx - kdz - keb - ked - kef - kel - ken - keo - ker - kes - keu - kez - kfl - kfn - kfo - kfz - kga - kgt - khj - khq - khu - khx - khy - kia - kid - kie - kik - kil - kin - kiv - kiz - kka - kkd - kke - kki - kkj - kkm - kkq - kkr - kks - kku - kkw - klc - klf - klk - kln - klo - klu - kma - kmb - kme - kmi - kmp - kmq - kmw - kmy - kna - knf - kng - kni - knk - kno - knp - knu - knw - kny - knz - koc - koe - kof - koh - kon - koo - koq - kot - kou - kov - kow - kpa - kpe - kph - kpk - kpl - kpo - kpz - kqg - kqh - kqk - kqm - kqn - kqo - kqp - kqs - kqu - kqx - kqy - kqz - krh - krn - krp - krt - krw - krx - ksb - ksf - ksm - kso - ksp - ksq - kss - kst - ksv - ktb - ktc - ktf - kth - ktj - ktu - kty - ktz - kua - kub - kug - kuh - kuj - kul - kus - kuw - kvf - kvi - kvj - kvm - kwb - kwc - kwg - kwl - kwm - kwn - kwp - kws - kwu - kwv - kwy - kwz - kxb - kxc - kxh - kxj - kxx - kya - kye - kyf - kym - kyq - kza - kzc - kzn - kzo - kzr - kzy - lag - lai - laj - lal - lam - lan - lap - lar - las - lbi - lch - lda - ldb - ldd - ldg - ldh - ldi - ldj - ldk - ldl - ldm - ldo - ldp - ldq - lea - leb - led - lee - lef - leh - lej - lel - lem - leo - les - lfa - lgg - lgm - lgn - lgo - lgq - lgz - lia - lie - lig - lik - lin - lip - liq - lir - liy - liz - lkb - lke - lko - lkr - lks - lky - lla - llb - llc - lli - lln - lma - lme - lmi - lmp - lmx - lna - lnb - lnl - lns - lnu - lnz - lob - log - loh - loi - lok - lol - lom - lon - loo - lop - loq - lor - lot - loz - lpx - lqr - lri - lrm - lse - lsm - lth - lto - lts - lua - lub - luc - lue - lug - luj - lul - lum - lun - luo - lup - luw - luy - lvl - lwa - lwg - lwo - lyn - mae - maf - man - mas - maw - mbm - mbo - mbu - mbv - mcj - mck - mcn - mcp - mcs - mct - mcu - mcw - mcx - mda - mdd - mde - mdg - mdi - mdj - mdk - mdm - mdn - mdp - mdq - mdt - mdu - mdw - mdx - mdy - mea - men - meq - mer - mes - mev - mew - mfc - mfd - mff - mfg - mfh - mfi - mfj - mfk - mfl - mfm - mfn - mfo - mfq - mfu - mfv - mfx - mgb - mgc - mgd - mge - mgg - mgh - mgi - mgj - mgn - mgo - mgq - mgr - mgs - mgv - mgw - mgy - mgz - mhb - mhd - mhi - mhk - mhm - mho - mhw - mif - mij - mje - mjh - mjs - mka - mkf - mkk - mkl - mko - mku - mkw - mlb - mlg - mlj - mlk - mlo - mlq - mlr - mlw - mma - mmf - mmu - mmy - mmz - mne - mnf - mnh - mnk - mny - moa - moi - moj - mos - mou - mow - moy - moz - mpa - mpe - mpg - mpi - mpk - mqb - mql - mqu - mrt - mru - msc - mse - msh - msj - msv - msw - mtb - mtk - mtl - mua - mub - muc - mug - muh - muj - muo - mur - muu - muy - muz - mvh - mvu - mvw - mvz - mwe - mwk - mwm - mwn - mws - mwu - mwz - mxc - mxf - mxg - mxh - mxl - mxo - mxu - mxx - myb - myc - mye - myf - myg - myj - myk - mym - myo - mys - myx - mzd - mzj - mzk - mzm - mzv - mzw - naj - naq - nar - nat - naw - nba - nbb - nbd - nbh - nbl - nbm - nbo - nbp - nbr - nbv - nbw - ncr - ncu - nda - ndb - ndc - ndd - nde - ndg - ndh - ndi - ndj - ndk - ndl - ndm - ndn - ndo - ndp - ndq - ndr - ndt - ndu - ndv - ndw - ndy - ndz - neb - ned - ney - nfd - nfr - nfu - nga - ngb - ngc - ngd - nge - ngg - ngh - ngi - ngj - ngl - ngn - ngp - ngq - ngs - ngv - ngw - ngx - ngy - ngz - nhb - nhr - nhu - nie - nih - nim - nin - niq - nix - niy - nja - njd - njj - njl - njr - njx - njy - nka - nkc - nkn - nko - nkq - nkt - nku - nkv - nkw - nkx - nkz - nla - nle - nlj - nlo - nlu - nmc - nmd - nmg - nmi - nmj - nml - nmn - nmq - nmr - nmz - nnb - nnc - nne - nnh - nnj - nnn - nnq - nnu - nnw - nnz - noq - now - noy - noz - nqg - nqk - nql - nqo - nqt - nra - nrb - nsb - nsc - nse - nsg - nsh - nso - nsx - nti - ntk - ntm - nto - ntr - nue - nuh - nui - nuj - nup - nus - nuu - nuv - nvo - nwb - nwe - nwm - nww - nxd - nxi - nxo - nya - nyb - nyc - nyd - nye - nyf - nyg - nyj - nyk - nym - nyn - nyo - nyp - nyr - nyu - nyy - nza - nzb - nzd - nzi - nzk - nzr - nzu - nzy - nzz - obl - obu - oda - odu - ofu - ogb - ogc - ogg - ogo - ogu - oie - okb - okc - okd - oke - oki - okr - oks - oku - okx - old - olm - olu - omi - oml - omt - opa - orc - org - orm - orr - orx - oso - ost - oub - oyd - ozm - pae - pai - pbi - pbl - pbn - pbo - pbp - pbr - pcm - pcn - pcw - pem - pfe - pga - pgs - phm - pic - pil - pip - piw - piy - pkb - pko - plr - plt - pmb - pmm - pmn - pnd - png - pnl - pnq - pny - pnz - pof - poy - ppp - pqa - pug - puu - pwb - pye - pym - pze - rag - rax - reg - rel - rer - res - rim - rin - rkm - rnd - rng - rnw - rod - rof - rsw - rub - ruc - ruf - rui - ruk - run - ruy - ruz - rwk - rwl - rwm - saa - sad - saf - sag - sak - saq - sav - say - sba - sbd - sbf - sbj - sbk - sbm - sbp - sbs - sbw - sby - scv - scw - sde - sdj - seb - sef - seg - seh - sen - sep - seq - ses - sev - sfw - sgc - sgi - sgm - sgw - sha - shc - she - shg - sho - shq - shr - shu - shz - sid - sie - sif - sig - sil - sir - skg - skq - skt - sld - slx - smx - sna - snf - sng - snj - snk - snm - snq - snw - soc - sod - soe - sok - som - soo - sop - sor - sos - sot - sox - soy - soz - spp - spy - sqa - sqh - sqm - srr - ssc - ssl - ssn - ssw - ssy - sta - stj - stv - sub - suj - suk - suq - sur - sus - suw - swa - swb - swc - swf - swh - swj - swk - swq - swy - sxb - sxe - sxs - sxw - syi - syk - sym - syx - sze - szg - szv - tak - tal - tan - tap - taq - tax - tbm - tbt - tbz - tcc - tcd - tck - tda - tde - tdk - tdl - tdo - tdq - tdv - tdx - tec - ted - teg - tek - tem - teo - teu - tex - tez - tfi - tga - tgd - tgw - tgy - thk - thu - thy - thz - tii - tik - tiq - tir - tiv - tja - tjn - tke - tkg - tkq - tlj - tll - tmc - tmv - tng - tnr - tny - tod - tog - toh - toi - toq - tor - toz - tpm - tqq - trj - tsa - tsb - tsc - tsh - tsn - tso - tsp - tst - tsv - tsw - ttb - ttf - ttj - ttl - ttq - ttr - tug - tui - tul - tum - tuv - tuy - tuz - tvd - tvi - tvs - tvu - twc - twi - twl - twn - two - twq - twx - txj - txy - tye - tyi - tyu - tyx - tyy - uba - ubi - uda - udl - uha - uiv - uji - ukh - ukp - ukq - uku - ukv - ukw - ula - ulb - uly - umb - umm - une - urh - usk - uss - uta - uth - utr - uya - vae - vag - vai - vaj - vau - vem - ven - ver - vid - vif - vig - vin - vit - vkj - vkn - vkz - vmk - vmr - vmw - vor - vum - vun - vut - wal - wan - wav - wbf - wbh - wbi - wbj - wci - wdd - wec - weh - wem - wib - wja - wji - wka - wlc - wle - wlx - wma - wmw - wni - wob - wof - wok - wol - wom - won - woy - wss - wtb - wud - wum - wun - wwa - www - xab - xam - xan - xdo - xed - xeg - xgb - xho - xii - xkb - xkg - xkt - xku - xkv - xma - xmb - xmc - xmd - xmg - xmj - xmv - xmw - xnj - xnq - xoc - xog - xon - xpe - xrb - xsh - xsj - xsm - xsn - xsq - xuo - xuu - xwe - xwg - xwl - xxb - yaf - yaj - yal - yam - yao - yas - yat - yav - yax - yay - yaz - yba - ybb - ybj - ybl - yei - yel - yer - yes - yey - yko - yky - ymg - ymk - ymm - yng - ynq - yns - yom - yor - yot - yre - yun - zah - zaj - zak - zay - zaz - zbu - zdj - zem - zga - zhi - zhw - zil - zim - zin - ziw - ziz - zla - zlu - zmb - zmf - zmn - zmp - zmq - zms - zmw - zmx - zmz - zna - zne - zns - zrn - zul - zuy - zwa pipeline_tag: audio-classification --- # AfriSpeech Gender-ID Predicts speaker gender (male/female) from short African-language speech clips (16 kHz). Trained and evaluated on [google/WaxalNLP](https://huggingface.co/datasets/google/WaxalNLP) (ASR + TTS configs). ## How it works A 3D-Speaker CAM++ model trained on VoxCeleb at 16 kHz, 512-dim output, as part of its speaker-diarization/verification pipeline. This repo only ships a tiny MLP head (`onnx/model.onnx`, 512 -> 64 -> 2) trained on top of those embeddings. ## Training data WaxalNLP rows across 25 language configs where the `gender` field normalized cleanly to male/female (case-insensitive `male`/`m`/`female`/`f`). Rows with a blank or other value (e.g. `"unknown"`) were dropped, as were configs where *every* row failed to normalize - `aka_asr`, `dag_asr`, `dga_asr`, `ewe_asr`, `ful_asr`, `kpo_asr`, `mlg_asr`, `bau_tts`, `ewe_tts` have no usable gender labels in this dataset and are not represented in this model. 330,027 labeled utterances total (train=275862, validation=25667, test=28498). Splits follow WaxalNLP's own train/validation/test partition (not re-shuffled). (Note: WaxalNLP's `sog` config is Soga/Lusoga - tagged here as `xog`, its real ISO 639-3 code, since `sog` is actually Sogdian.) **Training:** 64-unit MLP head, Adam @ lr=0.001, batch size 256, 60 epochs, best checkpoint picked by validation accuracy. ## Language coverage Evaluated on these 22 languages: `ach`, `amh`, `fat`, `ful`, `hau`, `ibo`, `kik`, `lin`, `lug`, `luo`, `mas`, `nyn`, `orm`, `pcm`, `sid`, `sna`, `swa`, `tir`, `twi`, `wal`, `xog`, `yor`. ![Countries where the trained languages are spoken](https://huggingface.co/AfriSpeech/afrispeech-gender-id/resolve/main/language_coverage_map.png) *Sub-Saharan Africa only, shaded by how many of the 22 trained languages are spoken in each country (darker = more) - North Africa is intentionally left uncolored since none of the training data comes from there.* Gender shows up in pitch, formants, and voice-quality acoustics that aren't very language-specific, so this model is a reasonable starting point for **Sub-Saharan African languages** beyond the ones above too - it just hasn't been measured on them. It's specifically scoped to Sub-Saharan Africa because that's what WaxalNLP (and therefore this model's training data) covers - none of the languages above are North African, so no claim is made there. The `language` tags on this model card cover the wider Sub-Saharan African language directory (via [afriso](https://github.com/AfriSpeech/afriso)) for discoverability, not a claim of measured accuracy on every one of them. ## Evaluation - Validation accuracy: 0.9840 - Test accuracy: 0.9358 - Test macro F1: 0.9347 ## Speed (CPU only) - Embedding extraction: 392 ms for a 31s clip (2 CPU threads) - Gender head inference: 0.16 ms (negligible next to the embedding step) - Real-time factor: **78x** - a 3-second clip classifies in ~38 ms of compute No GPU required for inference; this is exactly what the model card's Quickstart runs. ## Comparison to other gender-ID models On a stratified sample of 2215 held-out WaxalNLP test clips across 22 languages, against public gender-ID models that never saw African-language speech in training (all out-of-domain for them by construction): | Model | Trained on | License | Accuracy | Macro F1 | |---|---|---|---|---| | **Ours** (sherpa-onnx embedding + tiny head) | WaxalNLP (African languages) | CC-BY-4.0 | 0.976 | 0.976 | | [audeering/wav2vec2-large-robust-24-ft-age-gender](https://huggingface.co/audeering/wav2vec2-large-robust-24-ft-age-gender) | aGender + Common Voice + TIMIT + VoxCeleb2 (EN/DE) | CC-BY-NC-SA-4.0 (non-commercial) | 0.935 | 0.935 | | [alefiury/wav2vec2-large-xlsr-53-gender-recognition-librispeech](https://huggingface.co/alefiury/wav2vec2-large-xlsr-53-gender-recognition-librispeech) | LibriSpeech train-clean-100 (English, read speech) | Apache-2.0 | 0.911 | 0.910 | | [JaesungHuh/voice-gender-classifier](https://huggingface.co/JaesungHuh/voice-gender-classifier) | VoxCeleb2 (English-dominant celebrity interviews) | MIT | 0.934 | 0.934 | | [prithivMLmods/Common-Voice-Gender-Detection](https://huggingface.co/prithivMLmods/Common-Voice-Gender-Detection) | Common Voice (crowdsourced, English-dominant) | Apache-2.0 | 0.940 | 0.940 | | [griko/gender_cls_svm_ecapa_voxceleb](https://huggingface.co/griko/gender_cls_svm_ecapa_voxceleb) | VoxCeleb2 (English-dominant celebrity interviews) | Apache-2.0 | 0.931 | 0.931 | This is an accuracy-only comparison, deliberately - the baselines run as plain PyTorch/transformers models, while ours is ONNX-exported, so a latency comparison would mostly measure that export gap rather than anything about the approach itself. See the Speed section above for this model's own real-world inference latency. audeering's model natively outputs a 3-way female/male/child softmax, folded here to binary by taking the argmax over just female/male; it's also the only baseline with a non-commercial license (CC-BY-NC-SA-4.0) - everything else here, including ours, is Apache-2.0/MIT/CC-BY-4.0. ## Quickstart ```bash pip install sherpa-onnx onnxruntime huggingface_hub soundfile numpy ``` ```python from huggingface_hub import hf_hub_download import sherpa_onnx, onnxruntime as ort, soundfile as sf, numpy as np, json # 1. sherpa-onnx's pretrained speaker-embedding extractor (unchanged, public) embed_path = hf_hub_download("csukuangfj/speaker-embedding-models", "3dspeaker_speech_campplus_sv_en_voxceleb_16k.onnx") extractor = sherpa_onnx.SpeakerEmbeddingExtractor( sherpa_onnx.SpeakerEmbeddingExtractorConfig(model=embed_path, num_threads=2, provider="cpu") ) # 2. this repo's tiny gender head + its config (holds the label map) head_path = hf_hub_download("AfriSpeech/afrispeech-gender-id", "onnx/model.onnx") config = json.load(open(hf_hub_download("AfriSpeech/afrispeech-gender-id", "config.json"))) label_map = config["label_map"] session = ort.InferenceSession(head_path, providers=["CPUExecutionProvider"]) # 3. run on a 16 kHz mono wav file audio, sr = sf.read("sample.wav", dtype="float32") stream = extractor.create_stream() stream.accept_waveform(sample_rate=sr, waveform=audio) stream.input_finished() embedding = np.asarray(extractor.compute(stream), dtype=np.float32).reshape(1, -1) logits = session.run(["logits"], {"embedding": embedding})[0][0] pred = label_map[str(int(logits.argmax()))] print(pred) ``` See `scripts/` for ready-to-run CLI versions of the above (single file and whole-directory batch), built on the same `gender_id.py` helper. ## Files - `onnx/model.onnx` - the trained MLP head (embedding -> logits) - `config.json` - architecture metadata plus `label_map` (`{"0": "female", "1": "male"}`), the output-index mapping needed to interpret the head's output - `metrics.json` - full validation/test metrics, including the per-language table above - `scripts/gender_id.py` - reusable `GenderClassifier` class - `scripts/infer_file.py` - classify one audio file - `scripts/infer_batch.py` - classify every `.wav` in a directory - `scripts/requirements.txt` - minimal deps for the scripts above ## License Model head weights: CC-BY-4.0, matching WaxalNLP's training data license. The embedding extractor and its license are hosted separately at [csukuangfj/speaker-embedding-models](https://huggingface.co/csukuangfj/speaker-embedding-models).