# VoiceLK

Canonical HTML: https://voicelk.dev/

VoiceLK is a Sinhala-English text-to-speech product built from research, bringing mixed-language text to life as speech.

A text-to-speech product developed from research at Rajarata University of Sri Lanka.

## Open code

- [Speech engine](https://github.com/RootCode-AI/voicelk_ml): Text normalisation, code-switched G2P, VITS training and evaluation. (Python · PyTorch)

- [TTS bridge](https://github.com/RootCode-AI/voicelk_bridge): The microservice that serves the trained checkpoints over HTTP. (Python · FastAPI)

- [Application backend](https://github.com/RootCode-AI/voicelk_be): Auth, questions, answers and the stored audio records. (Java · Spring Boot)

- [Web client](https://github.com/RootCode-AI/voicelk_fe): The React app people use to ask questions and hear the answers. (React · Vite · Tailwind)

## How VoiceLK works

### Normalise the text

Numbers, dates, abbreviations and mixed scripts are expanded into words a speaker would actually say, in the right language.

### Turn letters into sounds

A code-switched grapheme-to-phoneme front-end decides, word by word, whether it is reading Sinhala or English and emits one shared phoneme sequence.

### Train the voice

A VITS model learns to map those phonemes straight to a waveform, with multi-speaker and single-speaker runs tracked checkpoint by checkpoint.

### Serve it

A small FastAPI bridge renders audio on request; the application stores every clip together with the checkpoint that produced it.

## Product updates

[Read published notes](https://voicelk.dev/blog.md)
