Case study/Machine learning/2026
Bangla Voice Model
Fine-tuning a 0.6B speech model to speak Bengali in two consistent voices, on a free GPU.
- PyTorch
- LoRA
- OmniVoice
- Hugging Face
- Bengali TTS
- Colab
01The problem
The voice platform needed to speak Bengali in two consistent voices.
The training data was raw call audio: transcripts where numbers were written as digits but spoken as words, and clips that needed trimming and leveling before a model could learn from them. Training ran on a free-tier T4 GPU.
02How it fits together
Most of the work is before training: clean text and clean audio decide what the model learns.
03Decisions
- 01
LoRA instead of a full fine-tune
Training small adapter weights instead of all 0.6B parameters makes the job fit a free-tier T4, trains faster, and keeps the base model's general abilities intact.
- 02
Write numbers the way they're spoken
Transcripts were normalized so digits match the words actually said. Otherwise the model learns that "১২" sounds like whatever the speaker happened to say, and reads numbers wrong.
- 03
Clean audio before tokenizing
Clips were trimmed and loudness-normalized to 24 kHz so the model learns the voice, not the silence or the volume of each call.
- 04
Judge checkpoints by ear against a zero-shot baseline
For speech, the question is whether it sounds right. Each checkpoint was compared by listening against the untuned model to pick the best one.
- 05
Merge the adapter before serving
The chosen adapter is merged into the base model, so serving is one ordinary model with no adapter loading at inference time.
04Trade-offs
- Listening tests catch what metrics miss, but they are slower and subjective; an automatic score would make comparisons repeatable.
- A free T4 keeps cost at zero but limits batch size and run length, so experiments had to be small and deliberate.
05Results
- The Voice AI platform speaks Bengali in two consistent voices.
- The merged model is published on Hugging Face as sawon19/omnivoice-bengali.
- A repeatable pipeline from raw call audio to a trained model, fed by the platform's own calls.