sarthwa8/indian-tts-emotion-60min
indian-tts-emotion-60min A small, carefully curated text-to-speech dataset: ~68 minutes of clean, single-speaker-per-clip audio in Indian English (en-IN) and Hindi (hi-IN), sourced from YouTube, with accurate transcriptions and per-clip emotion/style tags. Built as a data-quality exercise: clips were filtered conservatively and a sample was verified by listening rather than shipped straight from an automated pipeline. Summary Language Clips Duration (min)… See the full description on the dataset page: https://huggingface.co/datasets/sarthwa8/indian-tts-emotion-60min.
indian-tts-emotion-60min
A small, carefully curated text-to-speech dataset: ~68 minutes of clean, single-speaker-per-clip audio in Indian English (en-IN) and Hindi (hi-IN), sourced from YouTube, with accurate transcriptions and per-clip emotion/style tags.
Built as a data-quality exercise: clips were filtered conservatively and a sample was verified by listening rather than shipped straight from an automated pipeline.
Summary
Distinct speakers: 14. Audio: 24 kHz mono, 16-bit WAV, loudness-normalised (~-23 LUFS).
Emotion / style distribution
Fields
audio— 24 kHz mono waveformtext— transcription (Devanagari for Hindi, normalised for TTS)language—en-IN/hi-INemotion— one of: neutral, calm, formal, serious, happy, excited, sad, angry, whisperemotion_confidence,acoustic_emotion— tagging provenancespeaker_id— pseudonymous, stable per source speakerduration_seconds,snr_dbsource_url,source_title,creator,license,start_time,end_time
How it was built
- Sourcing — hand-picked single-speaker, studio-clean YouTube videos covering a range of emotions; license recorded per source (see below).
- ASR + diarization — Sarvam Saaras v3 Batch STT with speaker diarization and timestamps. Clips are cut only within a single diarized speaker's turn, at sentence/silence-snapped boundaries (target ~30 s).
- Cleaning — silence-trim, loudness normalisation (~-23 LUFS), and conservative filtering on SNR, hard-clipping, and spectral flatness (a background-music heuristic). Marginal clips were dropped.
- Emotion tagging — hybrid, two independent estimators: an acoustic SER model (
superb/wav2vec2-base-superb-er) proposes an emotion from prosody, and Sarvam `sarvam-105b` independently infers the delivery style from the transcript + genre. The acoustic model is English-acted (IEMOCAP) and noisy on calm Indic narration, so the transcript-based label is taken as primary and the acoustic label kept as a cross-check; clips where the two disagree, or where the LLM was unsure, were flagged for human review. - Human review — clips were auditioned in a review tool; accept/reject/relabel applied. Human–model emotion agreement on reviewed clips: 111/138 (80%) (relabels: 19).
Source provenance & licensing
Per-clip source_url, creator, and license are in the metadata. The dataset is intended for research / educational use; all clips derive from their original creators (attribution retained). If you are a rights-holder and want a clip removed, please open an issue / contact the maintainer and it will be taken down.
Limitations
- Emotion labels are model-assisted and then human-verified by listening. The acoustic SER is English-acted and unreliable on calm/Indic narration, so final labels come from the transcript-based LLM plus the human review pass, with the acoustic label kept only as a reference signal.
- Source audio is lossy (YouTube); fidelity is capped at 24 kHz.
- Small scale — intended as a high-quality seed, not a large training corpus.
Usage
from datasets import load_dataset
ds = load_dataset("sarthwa8/indian-tts-emotion-60min")
print(ds["train"][0])