Indic TTS Unified v1
A large-scale, unified collection of speech data for text-to-speech (TTS) and speech research. This dataset consolidates 17 distinct source datasets into a single, schema-normalized resource covering Indian / South Asian languages, plus major European, African, MENA, and Central Asian languages, with over 13.7 million utterances and 26,000+ hours of audio.
All audio is resampled to 24 kHz mono. Every row follows an identical schema regardless of source, enabling seamless multi-dataset training without per-source preprocessing.
Dataset Summary
| Statistic | Value |
|---|---|
| Total utterances | 13,777,541 |
| Total audio duration | 26,300+ hours |
| Languages covered | 58+ |
| Audio format | 24 kHz, mono, float32 |
| Configs (subsets) | 26 |
Subsets
| Config | Rows | Hours | Speakers | Languages | Source Dataset |
|---|---|---|---|---|---|
orpheus_distill_neucodec | 400 | ~2 | -- | 1 | BarryFutureman/orpheus-distill-neucodec |
maya_distill_neucodec | 14,000 | 33.6 | 12,801 | 1 | BarryFutureman/maya-distill-data-neucodec |
emodb_neucodec | 22,043 | 40.3 | 5 | 1 | BarryFutureman/EmoDB-neucodec |
expresso_neucodec | 11,599 | 10.9 | 4 | 1 | BarryFutureman/expresso-neucodec |
nonverbal_tts | 6,222 | 17.6 | 2,296 | 1 | deepvk/NonverbalTTS |
elise | 1,194 | 2.6 | 1 | 1 | MrDragonFox/Elise |
elise_hindi | 1,147 | 2.4 | 1 | 1 | ronith09/Elise-Hindi |
synthetic_v1 | 10,759 | 22.8 | 50 | 9 | kenpath/tts-synthetic-v1 |
spicor | 50,468 | 99.4 | 2 | 1 | kenpath/tts-SPICOR |
indictts | 294,008 | 527.0 | 151,247 | 14 | SPRINGLab/IndicTTS (14 datasets) |
msft_indian | 115,392 | 134.9 | 115,390 | 3 | deepdml/microsoft-speech-corpus-indian |
syspin | 786,625 | 1,706.5 | 18 | 9 | kenpath/tts-SYSPIN |
ivr | 664,208 | 1,656.5 | 10,152 | 22 | ai4bharat/indicvoices_r |
rasa | 582,195 | 1,035.5 | 40 | 22 | ai4bharat/Rasa |
kathbath | 805,721 | 1,475.2 | 985 | 12 | ai4bharat/Kathbath |
shrutilipi | 2,226,753 | 4,665.0 | -- | 16 | ai4bharat/Shrutilipi |
cv22_sidon | 3,212,858 | 4,614.2 | -- | 17 | sarulab-speech/commonvoice22_sidon |
cv22_african | 725,125 | ~1,500 | -- | 6 | sarulab-speech/commonvoice22_sidon (African subset: sw, lg, ha, yo, ig, am) |
cv22_central_asian | 404,288 | ~800 | -- | 4 | sarulab-speech/commonvoice22_sidon (Central Asian subset: uz, ka, az, kk) |
cv22_mena | 194,077 | ~370 | -- | 2 | sarulab-speech/commonvoice22_sidon (MENA subset: ar, fa) |
cv22_de | 699,462 | ~1,450 | -- | 1 | sarulab-speech/commonvoice22_sidon (German) |
cv22_fr | 700,202 | ~1,450 | -- | 1 | sarulab-speech/commonvoice22_sidon (French) |
cv22_es | 1,592,537 | ~3,300 | -- | 1 | sarulab-speech/commonvoice22_sidon (Spanish) |
cv22_european | 591,663 | ~1,200 | -- | 6 | sarulab-speech/commonvoice22_sidon (European subset: it, nl, tr, ru, pt, pl) |
arabic_misc | 49,412 | 122.7 | 39,898 | 1 | Mixed: MohamedRashad, Nourhann, NeoBoy, saleh1312, KejueAI |
uq_speech | 16,183 | 28.0 | 16,183 | 1 | ixxan/mms-tts-uig-script_arabic-UQSpeech |
libritts_r | 358,000 | 585.0 | 2,456 | 1 | parler-tts/libritts_r_filtered |
| Total | 14,135,541 | 26,885+ | 58+ |
Schema
All configs share the same column schema:
| Column | Type | Description |
|---|---|---|
audio | Audio (24 kHz) | Audio waveform, resampled to 24 kHz mono |
text | string | Transcript text. Rasa transcripts may include emotion tags (see below) |
speaker_id | string | Speaker identifier (see Speaker ID Policy below) |
source | string | Name of the originating dataset (e.g., "kathbath", "rasa") |
language | string | Full language name (e.g., "Hindi", "Bengali", "Tamil") |
gender | string | "Male", "Female", or "Unknown" |
duration | float64 | Audio duration in seconds |
Speaker ID Policy
Speaker identification varies by source dataset:
- Deterministic 8-character hash: For datasets that provide speaker metadata (
kathbath,syspin,ivr,rasa,spicor,synthetic_v1,cv22_sidon,cv22_african,cv22_central_asian,cv22_mena,cv22_de,cv22_es,cv22_fr,cv22_european), thespeaker_idis a deterministic hash derived from the original speaker label, ensuring consistency across rows from the same speaker. - Random UUID: For datasets without reliable speaker metadata (
shrutilipi,msft_indian,indictts), each row receives a unique random UUID. These should not be used for speaker-level grouping.
Duration
Duration values are unfiltered -- no minimum or maximum duration threshold (such as 0.5--60s) has been applied. Downstream consumers should apply their own filtering as needed.
Emotion Tags (Rasa)
The rasa config contains expressive/emotional speech. Transcript text in this subset may include inline emotion tags such as <happy>, <sad>, <angry>, <surprise>, <fear>, <disgust>, and <neutral>. These tags indicate the intended emotion of the utterance and can be used for emotion-conditioned TTS training.
Language Coverage
The dataset spans a broad range of Indian languages. The table below lists languages and the configs in which they appear:
| Language | Configs |
|---|---|
| Assamese | shrutilipi, ivr, rasa, cv22_sidon |
| Bengali | kathbath, shrutilipi, ivr, rasa, syspin, cv22_sidon |
| Bodo | ivr, rasa |
| Dhivehi | cv22_sidon |
| Dogri | shrutilipi, ivr, rasa |
| Dutch | cv22_european |
| English (Indian) | spicor, ivr, rasa, indictts |
| Arabic | arabic_misc, cv22_mena |
| French | cv22_fr |
| German | cv22_de |
| Italian | cv22_european |
| Polish | cv22_european |
| Portuguese | cv22_european |
| Russian | cv22_european |
| Spanish | cv22_es |
| Turkish | cv22_european |
| Uyghur | uq_speech |
| English (Common Voice) | cv22_sidon |
| Gujarati | kathbath, shrutilipi, ivr, rasa, syspin, indictts |
| Hindi | kathbath, shrutilipi, ivr, rasa, syspin, msft_indian, indictts, synthetic_v1, cv22_sidon |
| Kannada | kathbath, shrutilipi, ivr, rasa, syspin, indictts |
| Kashmiri | ivr |
| Konkani | shrutilipi, ivr, rasa |
| Maithili | shrutilipi, ivr, rasa |
| Malayalam | kathbath, shrutilipi, ivr, rasa, syspin, indictts, cv22_sidon |
| Manipuri | ivr, rasa |
| Marathi | kathbath, shrutilipi, ivr, rasa, syspin, indictts, cv22_sidon |
| Nepali | shrutilipi, ivr, rasa, cv22_sidon |
| Odia | kathbath, shrutilipi, ivr, rasa, syspin, indictts, cv22_sidon |
| Pashto | cv22_sidon |
| Punjabi | kathbath, shrutilipi, ivr, rasa, syspin, indictts, cv22_sidon |
| Rajasthani | indictts |
| Sanskrit | kathbath, shrutilipi, ivr, rasa |
| Santali | ivr, cv22_sidon |
| Saraiki | cv22_sidon |
| Sindhi | ivr, cv22_sidon |
| Tamil | kathbath, shrutilipi, ivr, rasa, syspin, msft_indian, indictts, cv22_sidon |
| Telugu | kathbath, shrutilipi, ivr, rasa, syspin, msft_indian, indictts, cv22_sidon |
| Urdu | kathbath, shrutilipi, ivr, rasa, cv22_sidon |
Detailed Subset Descriptions
orpheus_distill_neucodec
Decoded from BarryFutureman/orpheus-distill-neucodec, an Orpheus distillation dataset stored as NeuCodec tokens. Contains 400 English utterances (~2 hours) with emotion conditioning. Text includes emotion wrapper tags (e.g., <happy>...</happy>) and converted vocal expression tags (e.g., <sigh>, <laugh>). Speaker IDs are random 8-character hex values (no speaker metadata in source).
maya_distill_neucodec
Decoded from BarryFutureman/maya-distill-data-neucodec, a Maya distillation dataset stored as NeuCodec tokens. Contains 14,000 English utterances (33.6 hours) with emotion conditioning and rich voice metadata. Text includes emotion wrapper tags (e.g., <happy>...</happy>) and vocal expression tags (e.g., <giggle>, <sigh>, <yawn>). Speaker IDs are deterministic 8-character hashes derived from voice_description, yielding 12,801 unique speakers. Gender breakdown: Male 4,602, Female 4,681, Unknown 4,717.
emodb_neucodec
Decoded from BarryFutureman/EmoDB-neucodec, a synthetic emotional speech dataset with GPT-4o-generated English text and NeuCodec-encoded audio. Contains 22,043 utterances (40.3 hours) after deduplication, with 5 speakers and 7 emotion styles (angry, happy, sad, fearful, surprised, disgusted, neutral). Text includes emotion wrapper tags (e.g., <angry>...</angry>). Speaker IDs are deterministic 8-character hashes of the speaker name. All gender values are "Unknown".
expresso_neucodec
Decoded from BarryFutureman/expresso-neucodec, the Expresso corpus encoded as NeuCodec tokens. Contains 11,599 English utterances (10.9 hours) after deduplication, with 4 speakers and multiple expressive styles. Text includes style wrapper tags (e.g., <confused>...</confused>). Speaker IDs are deterministic 8-character hashes of the original speaker ID (e.g., ex01). All gender values are "Unknown".
nonverbal_tts
Sourced from deepvk/NonverbalTTS, a nonverbal-annotated speech dataset combining Expresso and VoxCeleb data. Contains 6,222 English utterances (17.6 hours) with 2,296 unique speakers. Text uses the annotated Result column which includes emoji markers for nonverbal cues (e.g., 🌬️ for breath, 😤 for exhale). Emotion wrapping applied only for happy and sad categories. Gender breakdown: Male 3,872, Female 2,350.
elise
Sourced from MrDragonFox/Elise, a single-speaker English female dataset. Contains 1,194 utterances (2.6 hours). Audio resampled from 22050 Hz to 24 kHz. Text passed through as-is (includes emotion expression tags).
elise_hindi
Sourced from ronith09/Elise-Hindi, a Hindi version of the Elise dataset with the same speaker. Contains 1,147 utterances (2.4 hours). Audio resampled from 22050 Hz to 24 kHz.
synthetic_v1
Synthetic TTS data generated for bootstrapping and augmentation. Covers 9 languages (primarily Hindi) with 50 distinct synthetic voices. 10,759 utterances totaling 22.8 hours.
spicor
The SpiCor corpus of Indian English read speech. Contains 50,468 utterances (99.4 hours) from 2 speakers. Useful for high-quality single-speaker or few-speaker English TTS.
indictts
Derived from the SPRINGLab/IndicTTS collection, which spans 14 individual language datasets. Contains 294,008 utterances (527.0 hours) across 14 Indian languages. Speaker IDs are random UUIDs (no original speaker metadata available).
msft_indian
Sourced from deepdml/microsoft-speech-corpus-indian. Covers 3 languages (Hindi, Tamil, Telugu) with 115,392 utterances (134.9 hours). Speaker IDs are random UUIDs.
syspin
The SYSPIN TTS dataset provides high-quality studio-recorded speech across 9 languages from 18 speakers. With 786,625 utterances and 1,706.5 hours, this is one of the largest single-source contributions. Well-suited for single-speaker and multi-speaker TTS due to consistent recording conditions.
ivr
Derived from ai4bharat/indicvoices_r (IndicVoices-R), a large-scale read speech corpus. Covers 22 languages with 664,208 utterances (1,656.5 hours) from 10,152 speakers. One of the most linguistically diverse configs in this collection.
rasa
The ai4bharat/Rasa dataset of expressive and emotional Indian language speech. Covers 22 languages with 582,195 utterances (1,035.5 hours) from 40 speakers. Transcripts include inline emotion tags (e.g., <happy>, <sad>, <angry>) that indicate the expressed emotion, making this subset uniquely valuable for emotion-conditioned TTS.
kathbath
Sourced from ai4bharat/Kathbath, a read speech dataset covering 12 Indian languages. Contains 805,721 utterances (1,475.2 hours) from 985 speakers.
Language breakdown by hours:
| Language | Hours |
|---|---|
| Tamil | 176.9 |
| Marathi | 152.0 |
| Kannada | 150.3 |
| Telugu | 146.7 |
| Hindi | 139.6 |
| Malayalam | 139.1 |
| Punjabi | 128.4 |
| Gujarati | 113.4 |
| Bengali | 88.0 |
| Odia | 81.8 |
| Sanskrit | 80.4 |
| Urdu | 78.6 |
Gender breakdown: Female 982.7h, Male 492.5h
cv22_sidon
Sourced from sarulab-speech/commonvoice22_sidon, a SIDON-processed variant of Mozilla Common Voice 22.0. A curated selection of 17 South Asian / Indic language configs is included, covering all splits (train, validation, test, other, invalidated) merged into a single train split per config. Contains 3,212,858 utterances totaling 4,614.2 hours.
Speaker IDs are deterministic 8-character SHA256 hashes of the original Common Voice client_id (preserves speaker grouping across utterances while anonymizing).
Language breakdown:
| Language | Code | Rows | Hours |
|---|---|---|---|
| English | en | 1,687,562 | 2,670.8 |
| Bengali | bn | 957,937 | 1,129.8 |
| Tamil | ta | 181,715 | 314.2 |
| Urdu | ur | 201,883 | 244.8 |
| Pashto | ps | 57,167 | 79.3 |
| Odia | or | 23,329 | 36.5 |
| Dhivehi | dv | 23,875 | 33.3 |
| Sindhi | sd | 25,011 | 29.1 |
| Hindi | hi | 16,250 | 22.7 |
| Marathi | mr | 10,836 | 19.1 |
| Malayalam | ml | 9,121 | 10.7 |
| Assamese | as | 4,656 | 7.6 |
| Saraiki | skr | 5,825 | 6.7 |
| Punjabi | pa-IN | 3,136 | 4.2 |
| Telugu | te | 2,290 | 2.6 |
| Nepali | ne-NP | 1,416 | 1.6 |
| Santali | sat | 849 | 1.1 |
Processing pipeline: raw Common Voice audio (typically MP3 at 32--48 kHz) was decoded, downmixed to mono, and resampled to 24 kHz using high-quality resampling. All splits per language were concatenated. Gender values are mapped from the original gender field (male_masculine → Male, female_feminine → Female, otherwise Unknown).
cv22_de
German (de) Common Voice 22, sourced from sarulab-speech/commonvoice22_sidon. Contains 699,462 utterances (~1,450 hours). Same processing pipeline as cv22_sidon. Speaker IDs are deterministic 8-character SHA256 hashes of the original Common Voice client_id.
cv22_fr
French (fr) Common Voice 22, sourced from sarulab-speech/commonvoice22_sidon. Contains 700,202 utterances (~1,450 hours). Same processing pipeline as cv22_sidon. Speaker IDs are deterministic 8-character SHA256 hashes of the original Common Voice client_id.
cv22_es
Spanish (es) Common Voice 22, sourced from sarulab-speech/commonvoice22_sidon. Contains 1,592,537 utterances (~3,300 hours) across 320 train shards. Same processing pipeline as cv22_sidon. Speaker IDs are deterministic 8-character SHA256 hashes of the original Common Voice client_id.
cv22_european
A combined config of mid-size European Common Voice 22 languages, sourced from sarulab-speech/commonvoice22_sidon. Contains 591,663 utterances (~1,200 hours) across 6 languages: Italian (it), Dutch (nl), Turkish (tr), Russian (ru), Portuguese (pt), Polish (pl). Same processing pipeline as cv22_sidon. Speaker IDs are deterministic 8-character SHA256 hashes of the original Common Voice client_id.
shrutilipi
The largest config, sourced from ai4bharat/Shrutilipi. Contains 2,226,753 utterances (4,665.0 hours) across 16 languages: Assamese, Bengali, Dogri, Gujarati, Hindi, Kannada, Konkani, Maithili, Malayalam, Marathi, Nepali, Odia, Punjabi, Sanskrit, Tamil, and Telugu. No speaker metadata is available -- each row has a unique UUID as speaker_id, and all gender values are "Unknown".
Usage
Load a specific config
from datasets import load_dataset
ds = load_dataset("kenpath/indic-tts-unified-v1", "kathbath", split="train")
print(ds[0])
# {'audio': {'path': ..., 'array': array([...]), 'sampling_rate': 24000},
# 'text': '...', 'speaker_id': 'a1b2c3d4', 'source': 'kathbath',
# 'language': 'Tamil', 'gender': 'Female', 'duration': 5.32}
Streaming mode (recommended for large configs)
from datasets import load_dataset
ds = load_dataset(
"kenpath/indic-tts-unified-v1", "shrutilipi",
split="train", streaming=True
)
for example in ds:
audio_array = example["audio"]["array"]
text = example["text"]
# Process as needed
break
Filter by language
from datasets import load_dataset
ds = load_dataset(
"kenpath/indic-tts-unified-v1", "ivr",
split="train", streaming=True
)
hindi_ds = ds.filter(lambda x: x["language"] == "Hindi")
for example in hindi_ds:
print(example["text"])
break
Load multiple configs
from datasets import load_dataset, concatenate_datasets
configs = ["kathbath", "syspin", "rasa"]
datasets = []
for config in configs:
ds = load_dataset(
"kenpath/indic-tts-unified-v1", config, split="train"
)
datasets.append(ds)
combined = concatenate_datasets(datasets)
print(f"Combined: {len(combined)} rows")
Duration filtering
from datasets import load_dataset
ds = load_dataset(
"kenpath/indic-tts-unified-v1", "syspin",
split="train", streaming=True
)
# Keep only utterances between 1 and 30 seconds
filtered = ds.filter(lambda x: 1.0 <= x["duration"] <= 30.0)
Data Processing
The following normalization steps were applied uniformly across all source datasets during construction:
- Audio resampling: All audio resampled to 24 kHz mono using high-quality resampling.
- Schema alignment: Every source dataset was mapped to the unified 7-column schema described above.
- Speaker hashing: Where speaker labels were available, they were converted to deterministic 8-character hashes for privacy and consistency. Where unavailable, random UUIDs were assigned.
- Split merging: Train and test splits from source datasets were combined into a single
trainsplit per config.
Intended Use
This dataset is designed for:
- Text-to-speech (TTS) model training across Indian languages
- Automatic speech recognition (ASR) pretraining and fine-tuning
- Speaker verification and speaker embedding research (for configs with reliable speaker IDs)
- Multilingual and cross-lingual speech research
- Emotion-conditioned speech synthesis (using the
rasaconfig)
Limitations
- Speaker IDs for shrutilipi, msft_indian, and indictts are random UUIDs and do not represent actual speaker groupings. Do not use these for speaker-level analysis.
- Gender metadata is
"Unknown"for the entireshrutilipiconfig and may be incomplete in other configs. - Duration is unfiltered. Some utterances may be very short (sub-second) or very long. Apply duration filtering for TTS training.
- Text quality varies across sources. Some transcripts may contain noise, transliteration inconsistencies, or incomplete sentences.
- Emotion tags in Rasa are embedded in the transcript text and need to be parsed or stripped depending on the downstream task.
Citation
If you use this dataset, please cite the original source datasets as appropriate:
- IndicTTS: SPRINGLab/IndicTTS
- Kathbath: ai4bharat/Kathbath
- SYSPIN: kenpath/tts-SYSPIN
- IndicVoices-R: ai4bharat/indicvoices_r
- Rasa: ai4bharat/Rasa
- Shrutilipi: ai4bharat/Shrutilipi
- Microsoft Speech Corpus Indian: deepdml/microsoft-speech-corpus-indian
- SpiCor: kenpath/tts-SPICOR
- Common Voice 22 (SIDON): sarulab-speech/commonvoice22_sidon (derived from Mozilla Common Voice Corpus 22.0, CC-0)
License
Please refer to the individual source dataset licenses. This unified collection is provided under CC-BY-4.0 for the aggregation and schema normalization work. The underlying audio and text data retain the licenses of their respective sources.