CoolFace
Datasetpublic

AfriSpeech/african-speech-ipa

African Speech IPA AfriSpeech audio paired with IPA phoneme transcriptions, for 141 languages. Each row has the audio, the source transcript, and ipa — the transcript converted to space-separated IPA phoneme units with africa-g2p 0.2.0. Units are kept whole, so t͡ʃ, k͡p and kʰ are one token each rather than two or three characters, and punctuation is preserved as its own unit so alignment and TTS keep their phrasing. from datasets import load_dataset ds =… See the full description on the dataset page: https://huggingface.co/datasets/AfriSpeech/african-speech-ipa.

sourceHugging Facecc-by-4.0updated 2mo agoView on Hugging Face
0likes800downloads
Dataset Card

African Speech IPA

AfriSpeech audio paired with IPA phoneme transcriptions, for 141 languages.

Each row has the audio, the source transcript, and ipa — the transcript converted to space-separated IPA phoneme units with africa-g2p 0.2.0. Units are kept whole, so t͡ʃ, k͡p and kʰ are one token each rather than two or three characters, and punctuation is preserved as its own unit so alignment and TTS keep their phrasing.

python
from datasets import load_dataset
ds = load_dataset("AfriSpeech/african-speech-ipa", "yoruba_yor", split="train")
ds[0]["ipa"]          # 'ʃ e k ú n'

How each language was phonemised

africa-g2p carries rules for 400 languages, but not for every language here. Each is mapped to a rule set in one of three tiers, and language_map.json records the choice and its measured character coverage for all of them.

tierlanguagesmeaning
native70the language's own rule set
equivalent13its own rules, filed under a different code
donor58a related language's rules

Donors are chosen by family first, then geography, and only kept if they resolve at least 95% of the language's characters. Family is a hard filter rather than a ranking signal: coverage alone is blind to whether a chart should be used, and it happily scored a Germanic donor at 1.0000 for a Bantu language. One language (Damara) is excluded, because its clicks are spelled with IPA click letters no available rule set is related to.

Coverage is measured on these transcripts, not on a parallel corpus — scoring Hausa against one put it at 0.74, because that corpus mixes Ajami with Boko and no Latin chart resolves Arabic script.

Files

  • —data/<language>/{train,validation,test}-*.parquet — the corpus. Splits are AfriSpeech's own, which are speaker-disjoint; a held-out slice of train would not be.
  • —language_map.json — rule set, tier and coverage per language
  • —vocab/units.json — the phoneme inventory, most frequent first
  • —vocab/proxy.json — unit to Private Use Area codepoint. Only needed to reproduce CTC training against a character tokenizer, which would otherwise split multi-character units.
  • —vocab/counts.json, vocab/per_language.json — unit frequencies, overall and per language

Code

AfriSpeech/afrispeech-ipa-trainer builds this dataset and trains on it. Phonemisation rules are africa-g2p.

Caveats

  • —Phonemisation is rule-based, so it reflects the orthography rather than a speaker's actual pronunciation. It does not model reduction, assimilation or dialect.
  • —Donor-tier languages borrow another language's letter-to-sound rules. Coverage says the chart can spell the words, not that every value is right for that language.
  • —Amharic, Kpelle and Loma are written in syllabic scripts, so their units are CV syllables rather than single phonemes.
  • —Clips are 0.4–39 s. Anything whose phoneme count exceeded what CTC could align against the audio was dropped.
  • —Punctuation is kept as its own unit, but not all of it is speech. Sentence marks (. , ? ! ; : and quotes) reflect something audible — a pause, a contour — while brackets and editorial markup (( ) [ ] * ¶ § •) come from the written source and have no acoustic correlate at all. vocab/counts.json lists every mark with its frequency; filter ipa on the ones you want rather than assuming the set is uniform.

Per-language detail

configlanguageISO 639-3hourstierrulescoverage
abbey_abaAbbeyaba5.03donorgwa0.9997
ahanta_ahaAhantaaha20.30nativeaha1.0000
aja_ajgAjaajg5.71nativeajg0.9997
amharic_amhAmharicamh33.59nativeamh0.9925
atti_atiAttiéati1.40donorabi1.0000
baoule_bciBaoulebci8.08nativebci1.0000
bassa_cameroon_basBassa (Cameroon)bas48.58nativebas0.9998
bassa_liberia_bsqBassa (Liberia)bsq6.07nativebsq0.9744
bissau_guinean_creole_povBissau Guinean Creolepov19.35nativepov0.9998
boulou_bumBouloubum16.93nativebum0.9999
changana_mozambique_tsoChangana (Mozambique)tso35.77nativetso1.0000
chichewa_nyaChichewanya12.81nativenya0.9827
chitonga_malawi_togChitonga (Malawi)tog4.16donorkiz1.0000
chitonga_toiChitongatoi6.61donorbem1.0000
chitonga_zimbabwe_toiChitonga (Zimbabwe)toi1.41donorbem1.0000
chitumbuka_tumChitumbukatum29.31nativetum1.0000
chiyao_yaoChiyaoyao4.61donorkde1.0000
chokwe_cjkChokwecjk0.56nativecjk0.9997
chopi_cceChopicce10.80donorkde1.0000
chuabo_chwChuabochw1.03donorkde1.0000
cibemba_bemCibembabem10.56nativebem1.0000
cinamwanga_mwnCinamwangamwn1.66donorbem1.0000
cinyanja_nyaCinyanjanya5.79nativenya0.9839
dagaare_dgaDagaaredga21.53equivalentdgd0.9999
dangme_adaDangmeada3.37equivalentgaa0.9999
dinka_dinDinkadin6.84nativedin0.9983
douala_duaDoualadua20.12nativedua1.0000
edo_binEdobin26.04nativebin1.0000
esan_ishEsanish24.19donorann1.0000
ewe_eweEweewe29.41nativeewe1.0000
ewondo_ewoEwondoewo3.71nativeewo0.9998
fang_fanFangfan11.68equivalentfak0.9998
fante_fatFantefat22.04nativefat1.0000
fon_fonFonfon33.19nativefon0.9998
frafra_gurFrafragur23.82nativegur1.0000
ga_gaaGagaa35.12nativegaa1.0000
gitonga_tohGitongatoh3.60nativetoh1.0000
gokana_gknGokanagkn7.98donorann1.0000
gu_r_gxxGuérégxx3.01nativegxx1.0000
gun_guwGunguw39.98donorajg1.0000
hausa_hauHausahau28.37nativehau-niger1.0000
havu_havHavuhav7.59donorebo0.9999
herero_herHereroher0.61donorbem1.0000
ibinda_yomIbindayom7.46donorebo1.0000
igbo_iboIgboibo38.07nativeibo1.0000
ijaw_ijcIjawijc0.88donorann1.0000
isoko_isoIsokoiso26.84nativeiso1.0000
itsekiri_itsItsekiriits6.78donorann1.0000
jula_dyuJuladyu15.85nativedyu0.9999
kabiye_kbpKabiyekbp53.19nativekbp0.9999
kabuverdianu_keaKabuverdianukea58.07nativekea1.0000
kabyle_kabKabylekab3.65nativekab0.9988
kamba_kamKambakam28.86equivalentaks0.9999
kanyok_knyKanyokkny0.28donorebo1.0000
khana_ogoKhanaogo3.62donorann0.9999
kikongo_kwyKikongokwy4.87donorcjk1.0000
kikongo_ya_leta_ktuKikongo ya Letaktu13.81donorebo1.0000
kikuyu_kikKikuyukik28.82nativekik0.9907
kiluba_lubKilubalub38.31nativelub0.9999
kimbundu_kmbKimbundukmb8.32nativekmb0.9554
kinande_nnbKinandennb8.15nativennb0.9985
kinyarwanda_kinKinyarwandakin35.57nativekin0.9969
kirundi_runKirundirun35.62nativerun0.9999
kisi_kssKisikss20.99equivalentkiz1.0000
kisonge_sopKisongesop0.40nativesop1.0000
kituba_ktuKitubaktu11.24equivalentebo0.9999
kongo_konKongokon27.82donorebo1.0000
kpelle_xpeKpellexpe5.70equivalentkpe1.0000
krio_kriKriokri26.16nativekri1.0000
kwangali_kwnKwangalikwn6.75donorbem1.0000
kwanyama_kuaKwanyamakua16.66donorbem0.9999
lari_ldiLarildi3.85donormkw1.0000
lenje_lehLenjeleh22.52donorbem1.0000
liberian_english_lirLiberian Englishlir22.06donorkri0.9994
lingala_linLingalalin30.71nativelin1.0000
loma_lomLomalom4.52equivalentloi1.0000
lomwe_nglLomwengl1.07donorkde1.0000
luganda_lugLugandalug11.25nativelug1.0000
lunda_lunLundalun1.11nativelun1.0000
luo_luoLuoluo19.66equivalentluw1.0000
luvale_lueLuvalelue0.07nativelue0.9974
macua_vmwMacuavmw28.02nativevmw0.9923
makhuwa_marrevone_xmcMakhuwa-Marrevonexmc1.87donorkde1.0000
makhuwa_meetto_mghMakhuwa-Meettomgh1.83nativemgh0.9979
makhuwa_shirima_vmkMakhuwa-Shirimavmk0.77donorkde0.9998
malagasy_mlgMalagasymlg61.32nativemlg0.9997
mambwe_lungu_mgrMambwe-Lungumgr0.93donorbem1.0000
manyawa_mnyManyawamny1.94donorkde0.9999
mashi_shrMashishr12.41donorkhy1.0000
mauritian_creole_mfeMauritian Creolemfe43.57nativemfe1.0000
meru_merMerumer3.83donordug1.0000
moore_mosMooremos20.51nativemos1.0000
ndau_ndcNdaundc3.34donorkde1.0000
ndau_western_ndcNdau (Western)ndc10.22donorkde1.0000
ndebele_nblNdebelenbl5.15donornso1.0000
ndebele_zimbabwe_ndeNdebele (Zimbabwe)nde7.62donornso1.0000
ndonga_ndoNdongando5.77nativendo1.0000
ngangela_nbaNgangelanba10.28nativenba0.9999
ngbandi_northern_ngbNgbandi (Northern)ngb0.78nativengb-zaire1.0000
nsenga_mozambique_nseNsenga (Mozambique)nse8.09donorkde1.0000
nyaneka_nykNyanekanyk42.94donorcjk1.0000
nyungwe_nyuNyungwenyu8.35donorkde1.0000
nzema_nziNzemanzi21.14nativenzi1.0000
oromo_ormOromoorm25.66equivalentssn0.9877
otetela_tllOtetelatll31.53donorebo1.0000
phimbi_phmPhimbiphm10.00donorkde1.0000
pidgin_west_africa_wesPidgin (West Africa)wes21.09donorkri0.9996
r_union_creole_rcfRéunion Creolercf5.25donormfe1.0000
ronga_rngRongarng29.11nativerng0.9899
runyankore_nynRunyankorenyn17.10donorgwr1.0000
sango_sagSangosag12.60nativesag-central_african_republic0.9993
sehwi_sfwSehwisfw17.48donoracd1.0000
sena_sehSenaseh22.84nativeseh1.0000
sepedi_nsoSepedinso19.59nativenso1.0000
sesotho_lesotho_sotSesotho (Lesotho)sot22.76donorflr0.9994
sesotho_south_africa_sotSesotho (South Africa)sot23.32donorflr0.9991
setswana_tsnSetswanatsn13.84donorflr1.0000
seychelles_creole_crsSeychelles Creolecrs12.16donormfe1.0000
shona_snaShonasna53.30nativesna1.0000
swahili_congo_swcSwahili (Congo)swc18.67equivalentswh1.0000
swahili_katanga_swcSwahili (Katanga)swc2.40equivalentswh1.0000
swahili_swaSwahiliswa38.73equivalentswh1.0000
swati_sswSwatissw9.42nativessw1.0000
taabwa_tapTaabwatap0.56donorebo1.0000
tewe_twxTewetwx3.39donorkde0.9999
tiv_tivTivtiv4.03donorann1.0000
toupouri_tuiToupouritui8.96nativetui0.9998
tshiluba_luaTshilubalua11.24donorebo0.9999
tshwa_tscTshwatsc14.99nativetsc0.9960
tsonga_tsoTsongatso35.25nativetso1.0000
twi_twiTwitwi50.32nativetwi1.0000
umbundu_umbUmbunduumb4.70donorcjk1.0000
urhobo_urhUrhobourh25.67nativeurh0.9964
venda_venVendaven8.65nativeven1.0000
wolaita_walWolaitawal4.28donorhar1.0000
wolof_wolWolofwol2.50nativewol1.0000
xhosa_xhoXhosaxho33.15nativexho1.0000
yacouba_dafYacoubadaf2.26nativedaf1.0000
yombe_yomYombeyom4.88donorebo0.9999
yoruba_yorYorubayor14.19nativeyor1.0000
zulu_zulZuluzul36.98nativezul1.0000