Skip to content

v1.4 — Dataset Builder, Built-in Presets & Codebase Polish

Choose a tag to compare

@Finrandojin Finrandojin released this 12 Feb 18:11
· 106 commits to main since this release

What's New

Dataset Builder Tab

An interactive workflow for creating LoRA training datasets with per-sample audio preview.

  • Create projects with voice description and optional global seed
  • Define samples with emotion/style + text pairs in a table
  • Generate and preview individual samples or batch-generate all at once
  • Cancel running batches without losing completed samples
  • Save as dataset — exports to lora_datasets/ ready for training
  • Project persistence — projects save to server and survive browser restarts
  • Per-sample seed overrides for reproducible generation

Built-in LoRA Voice Presets

Pre-trained LoRA adapters ship with the app — no training required to start using LoRA voices.

  • Appear alongside user-trained adapters in the Voices tab
  • Male and female presets available out of the box
  • Cannot be deleted (protected built-in adapters)

Enriched Instruct Guidance

Rewrote the LLM prompt instruct guidance to produce more expressive voice directions, especially for LoRA voices:

  • 3-layer vocal dimensions — emotional tone + delivery style + vocal quality (~8-15 words per instruct)
  • Narrator tonal variation — narrator can now shift tone at scene boundaries ("Tense, clipped narration." instead of always "Neutral, even narration.")
  • Expanded voice descriptor vocabulary — breathy, hushed, booming, strained, raw, etc.
  • Short vocalizations supported — "Oh!", "Ah!", "Haha!" now work as standalone entries (LoRA voices trained with short utterance data)
  • Removed overly restrictive "Quietly [emotion]" as default pattern

Optimized Batch Generation

  • Smart batch ordering — chunks sorted by text length within sub-batches to minimize padding waste
  • Configurable max chars (sub_batch_max_chars) — control sub-batch size for VRAM-limited setups
  • Chunking fix — corrected sub-batch boundary calculation

Automated API Test Suite

New app/test_api.py script for verifying all major endpoints after changes.

  • 49 tests covering config, upload, scripts CRUD, voices, chunks, status polling, voice design, LoRA models/datasets, dataset builder lifecycle, merge/export, and error cases
  • Two tiers — quick mode (no TTS/LLM needed, 37 tests) and full mode (all 49 tests)
  • Run with python test_api.py or python test_api.py --full

Bug Fixes

  • Fix config save dropping settings — Setup tab was silently losing generation parameters (temperature, top_p, chunk_size, etc.) and TTS language on save due to missing Pydantic model fields
  • Fix builtin LoRA adapter path — Builtin adapters selected from the LoRA Voice dropdown resolved to lora_models/ instead of builtin_lora/, causing batch failures
  • Fix dataset builder voice lines lost on tab close/reopen
  • Fix LoRA manifest keys and ref text mismatch
  • Add missing pip dependencies — peft, transformers, librosa, numpy, pydantic were only available as transitive deps, causing install failures for some users

Codebase Cleanup

  • Removed dead code — deleted orphaned files, stale bytecode, temp WAVs, editor swap files
  • Consolidated 9 duplicate name sanitization patterns into _sanitize_name() helper (fixed 5 missing .lower() calls)
  • Consolidated manifest load/save — generic _load_manifest() / _save_manifest() replacing 4 type-specific functions
  • Consolidated audio helpers_concat_audio() and _clear_gpu_cache() extracted from inline copies
  • Removed unused imports and dead methods
  • Fixed bare except clauses to catch specific exceptions

Documentation

  • README updated with Dataset Builder tab, built-in LoRA presets, API reference for 10 new endpoints
  • Wiki updated across 7 pages: enriched instruct writing guidance, Dataset Builder page, corrected stale references