Dataset kit assistant for Philippine speech datasets
Project description
dka
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 initto create a dataset folderdka validateto check metadata/audio problemsdka buildto process datasets- Audio conversion with
ffmpeg- accepts
.wav,.mp3,.m4a,.flac,.ogg - outputs mono 16kHz
.wav
- accepts
.srtsupport- 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.mdso AI agents can use the tool correctly- UP-DSP-PLD importer for
.log+.wavsession 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
- Philippine Languages Database: https://aclanthology.org/2024.sigul-1.32.pdf
- UP-DSP Philippine Languages Database: https://mozilladatacollective.com/datasets/cmmxhw46c00tqnw07xyr94zjk
- iTANONG-DS benchmark datasets: https://aclanthology.org/2023.icnlsp-1.34.pdf
- MLCommons Speech Wikimedia: https://huggingface.co/datasets/MLCommons/speech-wikimedia
- Wikimedia Commons audio files: https://commons.wikimedia.org/
Prototype shortcuts
- Audio conversion requires
ffmpegon PATH. - Text normalization is intentionally simple.
- Speaker split falls back to random split if
speaker_idis missing. - Example data is for testing/demo only. Verify consent and licenses before publishing a dataset.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a7ee516dfcf4b0b9600fbfc405d3c44b5e6bdca40b9986be92cae5d95285f76
|
|
| MD5 |
d018085e6b0527c59e7292e4764853e3
|
|
| BLAKE2b-256 |
aab8c9b56786ae894b819b25af568f13d47044e7ef0d6c33cd45d4663913a8d9
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
285797649a1525b1e599aa637025ddbcced9c4b6a6bfba2eb313a2680006558c
|
|
| MD5 |
10ff90961c28b889e4738c643c4bd685
|
|
| BLAKE2b-256 |
7bc3bed7eaf27c1af1f0aeb9aeb4764e27ef9aa0c50c2ed82503fd60ecf411ae
|