CoolFace
Datasetpublic

Funk888/gigaspeech2-th-joined

gigaspeech2-th-joined Thai speech-transcript pairs derived from GigaSpeech 2, re-segmented into clips of a length that is convenient for training speech-language models. Built to train a Thai speech adapter for the Ultravox architecture, where very short fragments make poor training examples but long clips do not fit the context budget. Statistics Examples 40,000 Total audio ~42 hours Sample rate 16 kHz, mono Clip duration 2.0–12.0 s (mean 3.8… See the full description on the dataset page: https://huggingface.co/datasets/Funk888/gigaspeech2-th-joined.

sourceHugging Faceupdated 17d agoView on Hugging Face
1likes119downloads
Dataset Card

gigaspeech2-th-joined

Thai speech-transcript pairs derived from GigaSpeech 2, re-segmented into clips of a length that is convenient for training speech-language models.

Built to train a Thai speech adapter for the Ultravox architecture, where very short fragments make poor training examples but long clips do not fit the context budget.

Statistics

Examples40,000
Total audio~42 hours
Sample rate16 kHz, mono
Clip duration2.0–12.0 s (mean 3.8 s)
Transcript length48 characters on average
LanguageThai
FormatParquet, 8 shards, ~4.8 GB

Schema

ColumnTypeDescription
audiobinaryWAV bytes, 16 kHz mono
transcriptionstringThai transcript

Audio is stored as raw bytes rather than a decoded Audio feature. Decode it yourself:

python
import io, soundfile as sf
from datasets import load_dataset

ds = load_dataset("Funk888/gigaspeech2-th-joined", split="train")
wav, sr = sf.read(io.BytesIO(ds[0]["audio"]["bytes"]))
print(sr, len(wav) / sr, ds[0]["transcription"])

Or cast the column if you prefer the standard interface:

python
from datasets import Audio
ds = ds.cast_column("audio", Audio(sampling_rate=16000))

How it was built

GigaSpeech 2's Thai portion is segmented into short fragments, many under two seconds. Those are too short to be useful on their own for speech-LM training — a two-word clip gives the model almost no context to work with.

This version joins adjacent segments together and keeps only the results that land between 2 and 12 seconds. Everything shorter or longer is dropped.

A larger version with 110,000 examples is available at gigaspeech2-th-joined-v2.

Important notes for use

Transcripts have no word spacing and no punctuation. This follows Thai orthography, where words are not separated by spaces. Two consequences:

  • —Use CER, not WER, to evaluate models trained on this. Word-error rate requires word boundaries that do not exist here.
  • —Strip whitespace on both sides before comparing, or spacing differences will be counted as errors.

Domain is narrow. GigaSpeech 2 is sourced from YouTube and is dominated by news reports, interviews and public speaking. Conversational speech — quiet, hesitant, with long pauses and overlapping speakers — is barely represented. Models trained only on this will underperform on natural conversation.

No train/test split. Everything is in train. Hold out your own evaluation set, and be aware that clips joined from the same source recording may share a speaker, so a random split will leak speaker identity across the boundary.

Transcription quality is inherited. No manual correction was applied. Any labelling errors present in GigaSpeech 2 are still here.

Source and license

All audio and transcripts derive from GigaSpeech 2 (Yang et al.), a large-scale multilingual speech corpus built from YouTube. This dataset contributes only the re-segmentation and packaging.

Check the upstream dataset's terms before using this in your own work — they govern this derived version as well.

bibtex
@article{gigaspeech2,
  title   = {GigaSpeech 2: An Evolving, Large-Scale and Multi-domain ASR Corpus
             for Low-Resource Languages with Automated Crawling, Transcription and Refinement},
  author  = {Yang, Yifan and others},
  journal = {arXiv preprint arXiv:2406.11546},
  year    = {2024}
}

Author

Funk Jaitus (@Funk888)