Skip to main content

Dataset kit assistant for Philippine speech datasets

Project description

dka

dka editorial project poster

Team name: iForgot
Members: Xynil Jhed Lacap, Lady Diane Casilang, Raphael Andre Mercado

Chosen track

We chose GitHub Education Project Case: Tinig sa Liwanag.

The track asks teams to create reusable, open-source artifacts that advance speech technology for Philippine languages and code-switched speech. Instead of building another app, dka focuses on the missing infrastructure layer: preparing raw Philippine-language speech recordings and transcripts into clean, documented, model-ready datasets.

Problem

The Philippines has more than 130 languages, but speech technology support is still uneven. Regional languages such as Cebuano, Hiligaynon, Ilokano, and Waray remain underrepresented in open ASR and TTS tooling.

Research shows that Philippine speech datasets are emerging, but the ecosystem still needs reusable preprocessing, quality checks, metadata, and benchmark-ready splits:

  • The Philippine Languages Database paper notes that earlier Filipino speech corpora were often domain-specific, non-parallel, non-multilingual, or insufficient for state-of-the-art ASR/TTS work.
  • The UP-DSP Philippine Languages Database provides 454+ hours across languages including Filipino, Cebuano, Hiligaynon, Ilokano, Waray, and Tausug, but researchers still need tooling to prepare and audit subsets for experiments.
  • The iTANONG-DS paper highlights broader Philippine NLP gaps around benchmark datasets, informal language, geographic variation, and code-switching.

Solution

dka is a Python CLI for building Philippine speech datasets.

It turns this:

raw audio + transcript metadata

into this:

clean WAV files
normalized metadata
train/dev/test splits
quality reports
dataset card

This helps researchers, students, and community contributors prepare Cebuano/Bisaya and other Philippine-language speech data for ASR/TTS experiments without rewriting the same preprocessing scripts.

What we developed so far

  • Python CLI using uv
  • Rich terminal output
  • dka init to create a dataset folder
  • dka validate to check metadata/audio problems
  • dka build to process datasets
  • Audio conversion with ffmpeg
    • accepts .wav, .mp3, .m4a, .flac, .ogg
    • outputs mono 16kHz .wav
  • .srt support
    • cuts long audio into sentence-level WAV clips
    • pairs each clip with subtitle text
  • train/dev/test split generation
  • quality reports in JSON and Markdown
  • generated dataset_card.md
  • SKILL.md so AI agents can use the tool correctly
  • UP-DSP-PLD importer for .log + .wav session folders
  • Hugging Face export adapter for Whisper-style ASR training
  • Whisper training and inference scripts
  • example Cebuano/Bisaya datasets from Wikimedia/MLCommons test data

Install

uv sync

Run locally:

uv run dka --help

Quick start

uv run dka validate examples/bisaya-commons
uv run dka build examples/bisaya-commons

For .srt segmentation:

uv run dka build examples/bisaya-web

Build a small UP-DSP-PLD Cebuano subset and export it for Whisper training:

uv run dka build data/pld-ceb/PLD/CEB --preset pld --out datasets/pld-ceb-small --limit 500 --hf

Train and test Whisper:

uv run python scripts/train_whisper.py datasets/pld-ceb-small --steps 200
uv run python scripts/inference.py runs/whisper-ceb sample.wav

Training result

We used dka to prepare a real Cebuano subset from UP-DSP-PLD and fine-tune a Hugging Face Whisper model.

Demo command:

uv run dka build data/pld-ceb/PLD/CEB --preset pld --out datasets/pld-ceb-5k --limit 5000 --hf
uv run python scripts/train_whisper.py datasets/pld-ceb-5k --steps 500 --out runs/whisper-ceb-5k

Dataset built by dka:

samples: 5,000
hours: 6.51
speakers: 14
language: Cebuano / ceb
exports: Hugging Face train/dev/test CSVs

Training outcome after 500 steps:

train loss: 19.95 → 2.15
eval loss: 1.08 → 0.62
best CER: 23.25%
best WER: 64.93%

The model can transcribe a fresh recorded Cebuano sample:

uv run python scripts/inference.py runs/whisper-ceb-5k sample.mp3

Example output:

maayong buntag, hinawot nga maayo ang imong adlaw karon.

This proves the full loop works:

UP-DSP-PLD raw files → dka build → HF export → Whisper fine-tuning → Cebuano inference

The WER is still high because Whisper has no native Cebuano language token, so this is a prototype model, not a production ASR system. The important result is that dka makes the dataset preparation and training path reproducible.

Input shape

dataset/
  dka.yaml
  raw/
    audio/
      sample_001.wav
    metadata.csv

Accepted audio inputs: .wav, .mp3, .m4a, .flac, .ogg if ffmpeg is installed. Outputs are .wav.

Minimum metadata.csv columns:

id,audio_path,text,language
sample_001,raw/audio/sample_001.wav,"Maayong buntag",ceb

Useful optional columns:

speaker_id,domain,license,gender,age_group,region,recording_device,source,transcript_path

If transcript_path points to an .srt, dka build cuts the long audio into sentence-level WAV files.

Output shape

dataset/
  processed/
    audio/*.wav
    metadata.csv
  splits/
    train.csv
    dev.csv
    test.csv
  reports/
    quality_report.json
    quality_report.md
  dataset_card.md

Sources

Prototype shortcuts

  • Audio conversion requires ffmpeg on PATH.
  • Text normalization is intentionally simple.
  • Speaker split falls back to random split if speaker_id is missing.
  • Example data is for testing/demo only. Verify consent and licenses before publishing a dataset.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dka_speech-0.1.0.tar.gz (41.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dka_speech-0.1.0-py3-none-any.whl (11.9 kB view details)

Uploaded Python 3

File details

Details for the file dka_speech-0.1.0.tar.gz.

File metadata

  • Download URL: dka_speech-0.1.0.tar.gz
  • Upload date:
  • Size: 41.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for dka_speech-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0a6cfe34ae56c04918a1ed7e3283113ab5a158f23544872e9d0371265c8598e8
MD5 cf01c4aab05800f4e786af953fa303c8
BLAKE2b-256 8f415c399ac239981a9eb92b2a057065cd337edb2ed8244d0bc4eb5e3c41b02e

See more details on using hashes here.

File details

Details for the file dka_speech-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: dka_speech-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for dka_speech-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6569271663f6a92570a62dba2a2bee0bf048fa9545f35e53aed0b709f61f1abd
MD5 d0103d67fefd93fb22015143938b07c5
BLAKE2b-256 09e0548d82f5342075c072519d06d1b46ac2078190073a63c2291087fdcc0b6e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page