Production-oriented, language-agnostic speech refinement for TTS systems.
From raw recordings to training-ready speech data—reproducible, resumable, and language-aware.
Aava Refinement turns source audio into segmented, filtered, transcribed, aligned, normalized, and SNAC-tokenized training records. It includes an SQLite-backed orchestrator, configurable language handling, and a local monitoring dashboard.
The pipeline itself is language-agnostic. Aava TTS v1 is its Persian reference deployment: the workflow was developed across nearly 2,500 hours of Persian source audio, producing more than half a million refined speech records.
| Aava v1 audit | |
|---|---|
| Raw source audio processed | 2,360.1 h |
| Refined tokenized audio | ~1,905.3 h |
| Final records | 547,328 |
| SNAC tokens | 562,665,782 |
| Active stages | 11 + optional language filter |
The numbers describe the Aava v1 training corpus and are included as an engineering reference.
- Normalize media to 16 kHz mono WAV.
- Isolate vocals with Demucs.
- Detect speakers with pyannote.audio.
- Segment speech with VAD.
- score and filter audio quality.
- Transcribe speech in a configured language or use automatic detection.
- Apply language-aware text normalization.
- Align text and audio.
- Encode audio with SNAC.
- Format Orpheus training records.
- Organize release artifacts.
The optional language-filter stage keeps a configured target language and quarantines other detected languages or silent inputs. The bundled Persian normalizer powered Aava v1; other languages can use basic Unicode cleanup or a project-specific normalizer. See the pipeline guide for configuration, stage contracts, recovery, and hardware guidance.
git clone https://github.com/KEYHAN-A/aava-refinement.git
cd aava-refinement
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python db/init_db.py --fresh
python -m dataset.pipeline.health_check
python -m dataset.pipeline.run_pipeline --all --dry-runPlace source media under dataset/downloads/<category>/, then run:
python -m dataset.pipeline.run_pipeline --all --category podcastsFor the segment pipeline, set an ISO 639-1 language code or omit it for Whisper auto-detection:
python -m dataset.pipeline.segment_pipeline --all --language en
python -m dataset.pipeline.segment_pipeline --allProgress is resumable:
python -m dataset.pipeline.run_pipeline --all --resume
python -m dashboard.app
# http://127.0.0.1:8765Set AAVA_ROOT=/path/to/workspace when data and artifacts should live outside
the repository.
The dataset/pipeline/download/ directory contains RSS and yt-dlp helpers,
including the source-specific recipes used during Aava v1 development.
| Artifact | Purpose | Access |
|---|---|---|
| Aava LoRA | Persian Orpheus 3B adapter | Public |
| Aava 3B | Merged, ready-to-load model | Public |
KEYHAN-A/aava-persian-tts |
Tokenized training corpus | Private |
The dataset uses one conditioning label (aava) but contains multi-source,
multi-speaker speech. It must not be described as a verified single-speaker
dataset.
dataset/pipeline/ orchestration, stages, recovery, acquisition
dashboard/ local monitoring UI
db/ SQLite schema and initialization
assets/ release visuals
requirements.txt pipeline dependencies
Do not use speech systems for impersonation, fraud, harassment, or deceptive media. Minimize personal data and document the provenance of production data.
Code is licensed under Apache-2.0. See NOTICE for upstream attribution.
@software{aava_refinement_2026,
title = {Aava Refinement: Multilingual Speech Dataset Pipeline},
author = {{KEYHAN-A}},
year = {2026},
version = {1.0.1},
url = {https://github.com/KEYHAN-A/aava-refinement}
}