AfriSpeech/multivoice-synthetic-speech
Synthetic Voice Samples · Africa Synthetic speech. No human speaker was recorded for any clip in this dataset. Generated with afrispeech-synth: text from africa-corpus, normalised to a universal orthography with africa-g2p, spoken by Google Gemini's Live API. 17,010 clips · 38.8 hours · 566 languages · 30 voices Every clip is a distinct sentence — no sentence is repeated Each language is read by up to 30 different voices, one sentence per voice ~1.29 hours per voice… See the full description on the dataset page: https://huggingface.co/datasets/AfriSpeech/multivoice-synthetic-speech.
Synthetic Voice Samples · Africa
Synthetic speech. No human speaker was recorded for any clip in this dataset.
Generated with afrispeech-synth: text from africa-corpus, normalised to a universal orthography with africa-g2p, spoken by Google Gemini's Live API.
- 17,010 clips · 38.8 hours · 566 languages · 30 voices
- Every clip is a distinct sentence — no sentence is repeated
- Each language is read by up to 30 different voices, one sentence per voice
- ~1.29 hours per voice
Audio
Exactly as the model produced it — no resampling, no re-encoding, no conversion.
Two ways in
data/*.parquet carries the audio inline for training. audio/ holds the same clips as individual WAV files, which is what the browsable gallery streams and what you want if you need one clip rather than the set. The clips are identical; only the packaging differs.
Loading
from datasets import load_dataset
ds = load_dataset("AfriSpeech/multivoice-synthetic-speech", split="train")
twi = ds.filter(lambda r: r["language"] == "twi") # one language
zephyr = ds.filter(lambda r: r["voice"] == "Zephyr") # one voiceRows are shuffled, so language and voice are spread across every shard: streaming the first shard gives a cross-section rather than one language in one voice.
Columns
text and normalised_text differ because universal orthography maps a language's own letters onto the shared set most African languages use — ɔ to o, ɛ to e, gy to j. The model read normalised_text.
What this is not
Recorded speech, a pronunciation reference, or evidence that a language sounds like this. A synthetic clip is a model's guess at an orthography, and quality varies enormously by language — these voices were built for widely-spoken languages and are being asked to read hundreds of others. Treat it as a starting point for bootstrapping, never as ground truth.
