BCL_TTS
A from-scratch, non-autoregressive flow-matching text-to-speech model with zero-shot voice cloning from a short reference clip. Not a fine-tune or wrapper of an existing TTS model (e.g. F5-TTS) - its text encoder, internal aligner, speaker encoder, and flow-matching decoder are all trained from scratch. See "Architecture" below for what makes it a distinct design rather than a copy of an existing one.
Status: no trained checkpoint in this repo yet. This upload is the architecture code, config, and model card only -
checkpoint/is a placeholder. Training is in progress separately; a.ptcheckpoint will be added as a follow-up commit once available.inference_example.pywill raise a clearFileNotFoundErroruntil then.
Repo contents
βββ README.md - this file (also the HF model card, via the YAML header above)
βββ config.yaml - full model + training hyperparameters
βββ checkpoint/ - trained weights go here (bcl_tts_latest.pt / bcl_tts_final.pt) - not present yet
βββ bcl_tts/ - the model's source code (required to load the checkpoint -
β this is a custom architecture, not built on a
β standard library that ships it for you)
βββ inference_example.py - minimal load-and-synthesize script/notebook helper
βββ requirements-minimal.txt - pyyaml + vocos (torch/torchaudio assumed already installed)
Quickstart
pip install huggingface_hub pyyaml vocos torch torchaudio
huggingface-cli download kkmanikandan/bcl-tts --local-dir ./bcl-tts
import sys
sys.path.insert(0, "./bcl-tts")
from inference_example import load_model, synthesize
model, model_config, trained_steps = load_model() # once checkpoint/ has a .pt file
synthesize(
model, model_config,
text="Hello, this is BCL TTS.",
ref_audio_path="/path/to/a/reference_clip.wav",
output_path="output.wav",
)
Architecture
BCL_TTS differs from F5-TTS-style flow-matching models in three deliberate ways:
- Explicit alignment, not implicit. Many flow-matching TTS models pad
text to the target mel length and let the model discover alignment as
a side effect of denoising. BCL_TTS instead learns alignment itself via
Glow-TTS-style Monotonic Alignment Search (
bcl_tts/alignment.py) and trains an explicit duration predictor from it - no forced-aligner tool needed. - Cross-attention conditioning. The flow-matching decoder
(
bcl_tts/modules/flow_decoder.py) attends to length-regulated text features via cross-attention, rather than concatenating text and noisy audio into one sequence. - Global AdaLN-Zero speaker conditioning, from a single pooled
reference-voice embedding (
bcl_tts/modules/speaker_encoder.py), rather than a raw reference-mel segment prepended to the flow input.
Mel-spectrograms are converted to waveform by Vocos, a separate pretrained
vocoder (not part of BCL_TTS's own weights, loaded via bcl_tts/vocoder.py)
- exactly as most flow-matching TTS models delegate that final step.
Training status
Trained with scripts/train_bcl_tts.py (Monotonic-Alignment-Search-derived
duration targets + conditional flow matching loss) on a single-speaker
corpus, on a Colab T4 GPU. Once a checkpoint is uploaded here,
inference_example.py's load_model() prints the exact number of steps
it was trained for - check that output for the actual training progress
of whichever checkpoint is present, since it may be an intermediate (not
fully converged) snapshot.
License / provenance
BCL_TTS's own code and weights are released under Apache-2.0 (see the
license field above - change it any time from the repo settings on
Hugging Face if you'd prefer something else). Vocos (the vocoder used at
inference time, not bundled here - loaded from Hugging Face at runtime)
has its own license; check charactr/vocos-mel-24khz on Hugging Face if
you plan to redistribute audio generated with it.
- Downloads last month
- 10