Data prep for the VoxCPM-2 Ghanaian TTS finetune: phoneme ASR, AudioVAE latent precompute, and the IPA latent datasets it publishes
# ghana-speech-english-ipa-latents-data-prep
Data prep for the **VoxCPM-2 Ghanaian TTS** finetune: turn raw speech corpora into
**precomputed AudioVAE latents paired with IPA transcripts**, so training never
decodes audio or runs the VAE.
Produces four datasets on the Hub — the same 418,265 clips in two forms:
| dataset | contents | subsets | clips | hours |
|---|---|---|---|---|
| `ghanaopendata/voxcpm2-ghana-ipa-latents` | AudioVAE latents | 42 Ghanaian languages | 365,295 | ~748 |
| `ghanaopendata/voxcpm2-english-ipa-latents` | AudioVAE latents | Ghanaian English | 52,970 | ~201 |
| `ghanaopendata/ghana-speech-ipa` | **audio** + text + IPA | 42 Ghanaian languages | 365,295 | ~748 |
| `ghanaopendata/ghana-english-speech-ipa` | **audio** + text + IPA | Ghanaian English | 52,970 | ~201 |
The **latent** datasets are consumed by `train_voxcpm_finetune.py` with
`train_manifest: ghana-latents` — no audio decoding or VAE pass at train time. The
**audio** datasets are the same clips with real FLAC audio, for listening, checking
transcripts, or training anything that is not VoxCPM-2.
Two deliberate differences between the pairs:
- the latents keep `split` as a **column**, because `train_voxcpm_finetune.py` filters on
`r["split"]`; the audio datasets use real `train`/`validation` **splits**
- in the latents `text` holds the **IPA** (the trainer re-tokenizes `text` directly, so
graphemes there would silently train on the wrong units) with the orthography in
`raw_text`; the audio datasets name them `ipa` and `text`
## Pipeline
```
ghana-speech (audio parquets)
│
├─ ghana-ipa-asr batch ───────────► ghana-speech-ASR-IPA2/ /*.parquet
│ GPU CTC phoneme ASR at ~2100x realtime, IPA read off the actual audio.
│ Driver: asr2.sh. (transcribe_ghana_gpu_asr.py is the superseded version —
│ it skipped input normalisation; see below.)
│
├─ merge_asr2_ipa.py ─────────────► ghana-speech-IPA/ /*.parquet
│ (shard, row) → id → IPA lookup, replaces the old g2p labels
│
├─ pr …