← dubidu, the case study

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: …

Voice

Start the model to generate a voice. On mobile data, download it over Wi-Fi.

Model start
-
Synthesis time
-
Voice length
-
Ratio (RTF)
-

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.

Large cloud modelDubnow
Size0.7 - 2 billion parametersabout 99 million
Where it runsGraphics cards in the vendor's data centreAn ordinary processor on the server, or the graphics card in the browser
How you payPer character or per minute, on every callOnly the server. In the browser, almost nothing
Your textGoes to the vendorStays on our server or on your computer
OfflineNoYes, in the browser, after the first download
First startInstant, the model is at the vendor398 MB to download, once
LanguagesDepends on the vendor31, with no separate model per language
New voicesCloning from a few seconds of voiceVoice styles; actor voices are in progress

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.

Text, spelling rules, text encoder, duration predictor, vector estimator, vocoder, 44.1 kHz audio. The voice style feeds the predictor and the estimator. Text Spelling rules Text encoder Duration predictor Vector estimator Vocoder Voice style "Hi! How are you?" numbers, abbreviations (RO) 9.0M parameters 0.86M · line speed 64.0M · 5-16 steps 90% of the time 25.3M parameters wave at 44.1 kHz JSON file: timbre and rhythm F1, M3, child voice, blend WAV audio, 16-bit per-letter durationsthe style feeds both

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.

  • Vector estimator64M · 257 MB

    Builds the sound in 5-16 steps. This is where 90% of the time goes.

  • Vocoder25.3M · 101 MB

    Turns the internal representation into a 44.1 kHz audio wave.

  • Text encoder9M · 36 MB

    Reads the text letter by letter, with no pronunciation dictionary.

  • Duration predictor0.86M · 4 MB

    Estimates how long the line lasts. We calculate the speed from this.

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.

The dubidu extension sends the lines to a pool of Dubnow CPU servers or synthesises them locally in the browser through WebGPU. dubidu extension Dubnow server · CPU Browser · WebGPU Server pool lines 45 s ahead played on the video clock the most urgent line among all viewers 20 viewers / 10 threads synthesis on the user's graphics card, 0.20× being tested on laptops starts on demand stops when idle cost follows usage today in testing

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 steps

    One 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 Lab

    The 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 delayed

    At 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 steps

    Too 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

  • VoxCPM222.39%
  • OmniVoice2.29%
  • Dubnow (the base model)2.19%

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.

In the product

Film dubbing

dubidu reads the Romanian subtitles and gives each character its own voice, in sync with the film.

Demo

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.

Planned

Podcasts and interviews

Two or three speakers, each with their own voice, translated from one language into another.

Possible

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.

Possible

Video narration

A voice for tutorials, presentations and ads, with no per-character fees.

In testing

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.