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

AI assistance

We used GPT 5.5 through Codex and pi to help build, document, and package this project.

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

Install from PyPI:

pip install dka-speech

Run the CLI:

dka --help

For local development:

uv sync
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 the included mini UP-DSP-PLD Cebuano demo dataset:

dka build examples/pld-ceb-mini/PLD/CEB --preset pld --out datasets/pld-ceb-demo --limit 10 --hf

For local development, use:

uv run dka build examples/pld-ceb-mini/PLD/CEB --preset pld --out datasets/pld-ceb-demo --limit 10 --hf

Build a larger 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.2.tar.gz (38.1 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.2-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dka_speech-0.1.2.tar.gz
  • Upload date:
  • Size: 38.1 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.2.tar.gz
Algorithm Hash digest
SHA256 2a7ee516dfcf4b0b9600fbfc405d3c44b5e6bdca40b9986be92cae5d95285f76
MD5 d018085e6b0527c59e7292e4764853e3
BLAKE2b-256 aab8c9b56786ae894b819b25af568f13d47044e7ef0d6c33cd45d4663913a8d9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dka_speech-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 12.0 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 285797649a1525b1e599aa637025ddbcced9c4b6a6bfba2eb313a2680006558c
MD5 10ff90961c28b889e4738c643c4bd685
BLAKE2b-256 7bc3bed7eaf27c1af1f0aeb9aeb4764e27ef9aa0c50c2ed82503fd60ecf411ae

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