ghananlpcommunity/Ghana_English-Twi_Code-switching_Speech-ipa
KasaSpeech English–Twi Code-Switching Speech — IPA A phonemised version of ghananlpcommunity/Ghana_English-Twi_Code-switching_Speech (KasaSpeech) with one added column: ipa. Every other column — audio included — is carried over byte-for-byte, and row order is unchanged, so this dataset aligns one-to-one with the original. The ipa column Each transcript is converted to a phoneme sequence with ghanag2p-uni, the Twi-only grapheme-to-phoneme library built on ghana-g2p… See the full description on the dataset page: https://huggingface.co/datasets/ghananlpcommunity/Ghana_English-Twi_Code-switching_Speech-ipa.
KasaSpeech English–Twi Code-Switching Speech — IPA
A phonemised version of ghananlpcommunity/Ghana_English-Twi_Code-switching_Speech (KasaSpeech) with one added column: `ipa`.
Every other column — audio included — is carried over byte-for-byte, and row order is unchanged, so this dataset aligns one-to-one with the original.
The ipa column
Each transcript is converted to a phoneme sequence with ghanag2p-uni, the Twi-only grapheme-to-phoneme library built on ghana-g2p, run with normalise=True.
One language, applied throughout. ghanag2p-uni phonemises everything under Twi rules — there is no language switch and no per-token language detection. Because KasaSpeech is code-switched, the English stretches are rendered as a Twi speaker's phonology rather than with an English G2P. That is the intended behaviour, and it is what makes the column consistent, but it is the key thing to understand before training on it.
Phoneme units are separated by single spaces, so the column tokenises by splitting on whitespace. Arabic numerals are expanded to English words before conversion ("5" → five). Punctuation is dropped.
Two rows in the source whose transcript is punctuation only (]) have an empty ipa string.
Aligned to an existing phoneme inventory
The phonemes are not raw Twi IPA. They are mapped onto the 79-token inventory of KoelLabs/xlsr-english-01, so this column can be used as a CTC target for that model with no vocabulary extension and no resized head. Across all 2,676,779 phoneme tokens here, 100% fall inside that inventory — 33 of its tokens are used, and <unk> cannot occur.
Getting there is lossy, by design:
If you want faithful Twi IPA rather than model-aligned phonemes, regenerate the column with GhanaG2PUni(normalise=False) from the transcript field.
Usage
from datasets import load_dataset, Audio
ds = load_dataset(
"ghananlpcommunity/Ghana_English-Twi_Code-switching_Speech-ipa",
split="train",
)
ds = ds.cast_column("audio", Audio(sampling_rate=16000))
sample = ds[0]
print(sample["transcript"])
print(sample["ipa"].split()) # phoneme tokensReproduce the column yourself:
from ghanag2p_uni import GhanaG2PUni
g = GhanaG2PUni(normalise=True)
g.ipa("Ɛyɛ den oo, but I'll try.", sep=" ")
# 'ɛ j ɛ d e n o b u t ɪ ʔ l l t ɾ j'Splits
Fields
Notes carried over from the source
- Audio is stored at 48 kHz; cast to 16 kHz for most speech models.
- The
splitcolumn does not always agree with the file a row lives in — trust the split you loaded, not the column. - Demographic representation is not perfectly balanced, and recording conditions vary across devices and environments.
- Minor transcription inconsistencies may remain.
Credit
All speech, transcripts and metadata are the work of the original KasaSpeech authors; this derivative adds only the ipa column.
@dataset{kasaspeech2026,
title={KasaSpeech: A Large-Scale English--Twi Code-Switching Speech Dataset},
author={Dotse, Kenneth},
year={2026},
url={https://huggingface.co/datasets/Kennethdot/Ghana_English-Twi_Code_switching_ASR}
}Licence: Apache-2.0, as the source dataset.
