The unit was wrong
Our writer used to aim for about 2.4 words per second. In English that is roughly right. Across eleven languages, videos asked to be 60 seconds came out anywhere from 44 to 105 seconds.
A word is not a unit of time. German packs whole phrases into one word; Arabic attaches "and", "by" and "the" to the word that follows. Every voice also has its own pace. What does come out steady, for one voice in one language, is the time it spends per written letter.
Seconds per letter
We recorded about fifty scripts across the languages with each default voice and measured seconds of finished video per letter of narration, spaces left out.
Figure 1How much text fits in sixty seconds
Data
| Letters per minute | |
|---|---|
| French | 811 |
| Portuguese | 759 |
| German | 750 |
| Polish | 750 |
| Russian | 750 |
| Spanish | 714 |
| Italian | 667 |
| Urdu | 632 |
| English | 612 |
| Hindi | 517 |
| Arabic | 462 |
The spread is large. A minute holds 811 letters of French but 462 of Arabic, 1.75 times as many. A writer that targets words, or even characters, without the language's own rate will miss in opposite directions in different languages.
Now the script is estimated before it is recorded: letters times the language's rate. If the estimate is more than 10% over, the narration is shortened, cutting the least important sentences. If it is under 80% of the target, it is lengthened, but only with details from the research notes the script was written from, never new facts. For a translated video the English draft is fitted first, then the translation again in its own language.
Figure 2Videos asked to be 60 seconds long
Data
| From | To | |
|---|---|---|
| Counting words (2.4 a second) | 44 s | 105 s |
| Letters × each language's rate, then fitted | 43 s | 62 s |
Asked for 60 seconds, videos now come out between 43 and 62 seconds in all eleven languages.
Reading numbers the way each language says them
Length was not the only thing the voices got wrong. The speech engine under our offline voices reads numbers by rule, and the rules were not always the language's own:
| Language | Written | Was read as | Now read as |
|---|---|---|---|
| German | 1899 | eintausend achthundert neunundneunzig | achtzehnhundert neunundneunzig, as Germans say years |
| German | 51,500 (English style) | einundfünfzig Komma fünf null null | written 51.500 and read as fifty-one thousand five hundred |
| Urdu | 1929 | a number in the thousands | انیس سو انتیس, "nineteen twenty-nine" |
| Urdu | 0.44 | garbled | صفر اعشاریہ چار چار |
The screen keeps the digits; only what the voice says is spelled out.
Clearer voices
To check clarity we had a speech recogniser transcribe each voice reading the same sentences and counted the character errors. Our offline Arabic voice scored 10.1%: one character in ten misheard. Arabic is the second language of our users.
Figure 3How clearly each voice reads
Data
| Character errors | |
|---|---|
| Arabic · our offline voice | 10.1% |
| Arabic · open model, its built-in voice | 2.4% |
| Arabic · cloned twin of the offline voice | 0.0% |
| Urdu · our offline voice | 2.9% |
| Urdu · an online neural voice | 2.0% |
| Urdu · cloned twin | 1.2% |
| German · our offline voice | 1.1% |
| German · open model, its built-in voice | 5.1% |
| German · cloned twin | 1.1% |
An open multilingual voice model can clone a voice from a few seconds of audio. Given a short clip of our own Arabic voice, it read the test sentences with no character errors at all, in the same voice. Urdu went from 2.9% to 1.2%, German stayed at 1.1% with a more natural delivery.
The cloned voices are slow on a CPU, so for now they wait for graphics cards before they can be used in every video.


