Turn Azerbaijani text into speech — free, and without the internet
azerbaycan-tts is an open-source model that reads Azerbaijani text aloud. All of the work happens in your browser: no sign-up, no server, and your text is never sent anywhere. Once the page has loaded, it works with the network switched off.
How it works
The model is a 9.36-million-parameter VITS network that produces 24 kHz audio. It runs in the browser through ONNX Runtime Web: faster than real time where the browser has WebGPU, and on the processor, more slowly, where it does not. The first visit downloads about 37 MB; after that the browser keeps it.
Before it is read, the text is turned into words as they are spoken: «II Dünya müharibəsi» becomes «İkinci Dünya müharibəsi», «25%» becomes «iyirmi beş faiz», «01/09/1939» becomes «bir sentyabr min doqquz yüz otuz doqquzuncu il», and «19,99 AZN» becomes «on doqquz manat doxsan doqquz qəpik». Long text is cut into chunks of about 15 words, because intonation flattens over a long sentence. eSpeak NG turns the letters into phonemes, and its WebAssembly build runs in the browser too.
Limitations
- One voice; no emotion control and no voice cloning.
- The speech is clear but not fully natural: some sentences carry a metallic resonance.
- It is meant for text in the Latin alphabet: letters from other scripts are not read correctly.
- At most 500 characters are spoken at a time.
- It is slow on a phone and in a browser without WebGPU: one sentence can take up to a minute.
- Profanity is replaced with a bleep.
Frequently asked questions
How do I turn Azerbaijani text into speech?
Open the playground, type the text and press «Səsləndir» (Speak). You can listen right there and save the audio as a WAV file with «Endir» (Download). Nothing needs to be installed.
Is it free? Do I need an account?
It is free and needs no account. The only limit is 500 characters at a time; speak longer text in parts.
Does it work offline?
Yes. The first visit downloads the model (about 37 MB) and the browser keeps it. After that the page makes speech without the internet.
Is my text sent to a server?
No. The text and the audio never leave your device, because the model runs inside the browser. The network is used only to download the files of the page, the model and the phonemiser.
Which browser is fastest? Does it work on a phone?
Chrome or Edge on a computer is fastest: there the model runs on WebGPU, faster than real time. It works on a phone too, but more slowly, because the work runs on the processor.
Can I use it commercially?
Yes: the code and the model weights are Apache-2.0, and running them is
unrestricted. There is one condition, and it comes from the phonemiser, not
the model: eSpeak NG, and phonemizer on the Python side, are
GPL-3.0-or-later. Redistributing a combined work — a desktop app, a container
image, a binary handed to customers — brings GPL-3.0 obligations. The way
out: the model accepts pre-phonemised input
(accepts_prephonemized_input), so a product can use its own
phonemiser. The Azerbaijani training data is used with its author's
permission, on condition of attribution. The English voice is synthetic and
Apache-2.0, but the release is open-weight, not open-data. Impersonating a
real person or producing deceptive content is not permitted. This is not
legal advice.
How do I run the model on my own computer?
The code is on GitHub: clone the repository, run
pip install -r requirements.txt and then
python say.py "Salam.". On an ordinary laptop processor the
model runs 2-4x faster than real time and needs no internet. The weights are
also on Hugging Face, in PyTorch and ONNX.
How was the model made?
It was adapted from Owen Song's English Inflect-Micro-v2 model (Apache-2.0): 200,000 training steps on 25.07 hours of Azerbaijani speech. The training data is ughurabbasov/azerbaijani-tts-dataset; its author permits use and asks to be credited. The English voice on the page is the base model itself, so you can hear where this model started.