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 (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.
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) 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 | 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 | LibriSpeech train-clean-100 (English, read speech) | Apache-2.0 | 0.911 | 0.910 |
| JaesungHuh/voice-gender-classifier | VoxCeleb2 (English-dominant celebrity interviews) | MIT | 0.934 | 0.934 |
| prithivMLmods/Common-Voice-Gender-Detection | Common Voice (crowdsourced, English-dominant) | Apache-2.0 | 0.940 | 0.940 |
| 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
pip install sherpa-onnx onnxruntime huggingface_hub soundfile numpy
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 pluslabel_map({"0": "female", "1": "male"}), the output-index mapping needed to interpret the head's outputmetrics.json- full validation/test metrics, including the per-language table abovescripts/gender_id.py- reusableGenderClassifierclassscripts/infer_file.py- classify one audio filescripts/infer_batch.py- classify every.wavin a directoryscripts/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.
