Case study · 2026
Dubnow: a voice engine that speaks 31 languages, without graphics cards.
Dubnow turns text into speech. It is the engine behind dubidu: it reads the subtitle lines with each character's voice, on an ordinary server or directly in the browser.
- Role
- Founder. Integration, testing, servers
- Used in
- dubidu, dubbing from subtitles
- Output
- WAV 44.1 kHz, 16-bit
- Runs on
- An ordinary processor or in the browser
Live demo
Write a text, choose the language, listen.
The voice is generated on your computer, not on a server. The model downloads once, then runs in the browser, on the graphics card or on the processor. The times below are measured here.
Will run on: …
You can write in one language and listen in another, for example write in English and hear the voice in Russian. The browser does the translation, with the translation model built into Chrome 138+ and Edge 148+, on desktop. For the first language pair, the browser downloads its translation pack. Your text never leaves your computer. The model stays saved in the browser, so a second visit starts without a download. On a graphics card the voice comes faster than real time; on the processor alone, it may take longer than the sentence. The voices in the demo are the model's generic styles; dubidu adds character voices and, soon, voices recorded with actors.
- 31 languages, from a single model
- 99 million parameters
- 20 viewers on a 10-thread server
- 44.1 kHz, the sound quality
01 · Why
A dubbed film needs thousands of lines. At API prices, the numbers do not work.
A film has around a thousand lines. With a cloud voice service, you pay for every character on every viewing, because the dub is not stored: it is generated on the spot, for each family. I tested several engines and chose by ear. I kept a small one, with open weights, that runs on an ordinary processor. I built Dubnow on it.
02 · Comparison
A large cloud model or Dubnow.
The comparison is general: "large model" means the class of voice engines with 0.7-2 billion parameters, run by a vendor.
What the voice costs: one million characters, about 25 hours of speech
- ElevenLabs v3 / Multilingual v2 $80 $3.23
- ElevenLabs Flash / Turbo $40 $1.61
- OpenAI tts-1-hd $30 $1.21
- Amazon Polly, generative voices $30 $1.21
- Amazon Polly, neural voices $16 $0.65
- OpenAI tts-1 $15 $0.61
- Dubnow on a CPU server · estimate $0.35 $0.014
- Dubnow in the browser $0 $0
List prices, pay as you go, read on the vendors' pricing pages on 5 November 2026, without volume discounts and without free tiers. OpenAI marks tts-1 as deprecated. One hour of speech means 40,320 characters, the pace we measured in Romanian. Dubnow on a server is an estimate: a 16-thread Hetzner server at €99 per month, fully loaded all the time, at the speed measured on 4 threads. In the browser, synthesis runs on the visitor's computer, so it costs us nothing per hour.
03 · How it works
Four small networks, chained one after another.
The text goes in letter by letter, with no pronunciation dictionary. One network estimates how long the line lasts, another builds the sound in a few steps, and the last turns it into an audio wave. The voice comes from a style: a small file that describes a speaker's timbre and rhythm.
04 · Size
99 million parameters, 398 MB.
Most of it is the estimator that builds the sound. That is where speed is won: fewer steps mean faster synthesis, at a small cost in quality.
05 · Where it runs
On the server today. In the browser, tomorrow.
In dubidu, the extension sends the lines 45 seconds ahead. Servers start when viewers appear and stop when they leave. On a computer with a graphics card, synthesis can run right inside Chrome, through WebGPU, and the server is no longer needed.
06 · Performance
How fast it speaks, on which hardware.
All the numbers below were measured by us, on Romanian lines, with the hardware shown. RTF means compute time divided by the length of the voice: below 1 is faster than real time.
- In production
Server, processor
Intel i7-6700K, 4 threads, Python and ONNX Runtime
0.35× real time at 10 steps; 0.20× at 5 stepsOne second of speech in 0.35 seconds.
- In testing
Browser, WebGPU
Chrome, Radeon RX 570 card
0.20× real time at 10 steps; 0.14-0.22 in Dubnow LabThe user's computer does the synthesis. The server no longer costs anything.
- Load test
Several viewers
Xeon E5-2630 v4, 10 threads, simulation
20 simultaneous viewers, no line delayedAt 30 viewers, 76% of lines were late. The limit is between 20 and 30.
- Not real time
Browser without a graphics card
WebAssembly, a single thread
2.86× real time at 10 stepsToo slow. The multi-threaded version is not tested yet.
How accurately it reads Romanian
- 2.89%
- wrong words at 10 steps, diacritics ignored
- 4.13%
- including diacritics
- 11.2
- characters per second, at normal speed
Measured by us: 24 lines, 4 voices, read back with Whisper. Some of the errors are Whisper's own.
Compared with other models, in Romanian
Word error rate on the Minimax-MLS test, published by the authors of the base model. Lower is better.
Word error rate, by language
- 2.19%
- Romanian
- 2.06%
- English
- 0.86%
- German
- 1.13%
- Spanish
- 1.00%
- Turkish
- 1.23%
- Ukrainian
- 1.47%
- Dutch
- 1.63%
- Polish
- 1.75%
- Italian
- 3.02%
- Czech
- 3.54%
- Greek
- 4.89%
- French
Same source: the Minimax-MLS test, published by the authors of the base model. We did not rerun it.
07 · What we added
What Dubnow does beyond the model it started from.
Spelling rules for Romanian
Numbers, abbreviations and words the model read wrongly, rewritten before synthesis.
Each line fits its time slot exactly
The speed is calculated from the estimated duration and the subtitle window. The sound no longer needs stretching.
Child voices
Pitch and formants of the voice, changed after synthesis. Two child voices passed the listening test.
Voice blends
Two styles combined give a new voice, with a different pitch.
One shared server for many viewers
Each process takes the most urgent line among all viewers. Lines arrive 45 seconds ahead.
Dubnow Studio and Dubnow Lab
Actors record lines for new voices. Lab measures speed on real laptops before we move synthesis into the browser.
08 · Uses
Where it fits.
Where speed, cost per hour and the place where the text stays all matter. Each use says how far we have got.
Film dubbing
dubidu reads the Romanian subtitles and gives each character its own voice, in sync with the film.
Products in several languages
The same scene, in 18 languages, on the investor page. A new country means voices and spelling rules, not another model.
Podcasts and interviews
Two or three speakers, each with their own voice, translated from one language into another.
Accessibility and education
Texts read aloud for children who cannot read yet and for people with poor eyesight. In the browser, the text never leaves the computer.
Video narration
A voice for tutorials, presentations and ads, with no per-character fees.
Apps that work offline
The model downloads once, then speaks directly on the device.
09 · Languages
31 languages, a single model.
There are no separate models per language. Romanian is tuned by ear, with its own spelling rules; the other languages work as they were published. You can try all of them in the demo.
Click a language to choose it in the demo.
10 · Limits
What it does not do well yet.
- Emotion. The voice is clear, but it does not shout or whisper convincingly. We are working on emotion styles, chosen from the text of the line.
- Child voices. We get them by modifying adult voices. Voices recorded with actors will solve this.
- Training on Romanian. The base model's training code is not public, so it has to be rebuilt. This is the biggest technical risk.
- The browser. Without a graphics card, synthesis in the browser is too slow. We are testing on at least 8 laptops before moving it there.
Do you need voice in your product?
I can integrate Dubnow or another voice engine into a web app, a mobile app or a browser extension.