yappy

yappy · the guionizador

From written to spoken.

Reading aloud is not spelling out: it's interpreting. "1492" is said "fourteen ninety-two"; "Henry VIII" is "Henry the Eighth", but "Louis XIV" in French is "Louis quatorze"; "EL CID" is not a Roman numeral; the FBI is spelled out and NASA is not. Before synthesizing a single syllable, Yappy turns the text into a reading script (the «guion» in guionizador): the score of what the voice will actually say.

try it: the same rust as the app, compiled for your browser

The script will appear here, with every transformation highlighted and the pauses marked.

what it knows how to do

Twelve trades in one pass.

Dates

"12/10/1492" is said "December tenth, fourteen ninety-two", with each country's own order.

Times

"14:05" is "fourteen oh five"; in Spanish, "las catorce y cinco"; in German, "vierzehn Uhr fünf".

Currencies

"$3.50" is "three dollars fifty cents"; each language with its own linking word and cents.

Percentages

"2.5%" is "two point five percent"; in Spanish, "dos coma cinco por ciento".

Units

"90 km/h" is "ninety kilometers per hour", singular and plural done right.

Ordinals

"3rd" is "third"; "1er" in French, "premier"; the German "19." declines according to its preposition.

Roman numerals, with judgment

"16th century" reads as an ordinal; "Henry VIII" is "the Eighth"; "EL CID", which would look Roman, is left in peace.

Acronyms by phonotactics

If every consonant has a vowel beside it, it reads as a word (NASA); otherwise it's spelled out (FBI).

Abbreviations

"Dr." is "Doctor"; "No.", "number"; "etc.", "etcetera". Each table in its own language.

Big numbers

"1,234" is "one thousand two hundred thirty-four": thousands separators by country, never split apart.

31 languages

Numbers are spelled out with CLDR's RBNF grammars: gender, Slavic declension and everything each language demands.

The rhythm

Headings breathe after being said; lists keep their own beat. Pauses are part of the script, not luck.

real examples, generated by this very engine

Six languages, in the open.

No mock-ups: every output below was generated by the same WebAssembly running on this page. Paste them into the box above to watch them split into spans.

English

On 12/10/1492 at 14:05, he paid $3.50 (2.5% of his purse).

On December tenth, fourteen ninety-two at fourteen oh five, he paid three dollars fifty cents (two point five percent of his purse).

Henry VIII ruled in the 16th century; Dr. Lopez came 3rd.

Henry the eighth ruled in the sixteenth century; Doctor Lopez came third.

Español

El 12/10/1492, a las 14:05, Colón pagó 3,50 € (el 2,5 % de su bolsa).

El doce de octubre de mil cuatrocientos noventa y dos, a las catorce y cinco, Colón pagó tres euros con cincuenta céntimos (el dos coma cinco por ciento de su bolsa).

Enrique VIII vivió en el siglo XVI; el Dr. López llegó 3.º a 90 km/h.

Enrique octavo vivió en el siglo dieciséis; el doctor López llegó tercero a noventa kilómetros por hora.

El FBI y la NASA leyeron EL CID en 1605.

El efe be i y la NASA leyeron EL CID en mil seiscientos cinco.

Français

Louis XIV régna 72 ans; le 1er janvier, il paya 3,50 €.

Louis quatorze régna soixante-douze ans; le premier janvier, il paya trois euros cinquante.

Au XIXe siècle, on roulait à 30 km/h.

Au dix-neuvième siècle, on roulait à trente kilomètres par heure.

Deutsch

Am 24. Mai 1850 wanderten wir 7 km im 19. Jahrhundert.

Am vierundzwanzigsten Mai eintausendachthundertfünfzig wanderten wir sieben Kilometer im neunzehnten Jahrhundert.

Um 14:30 Uhr zahlte Heinrich VIII. genau 3,50 €.

Um vierzehn Uhr dreißig zahlte Heinrich der Achte genau drei Euro fünfzig Cent.

Italiano

Il 1º maggio, Luigi XIV pagò 3,50 € per un gelato del XX secolo.

Il primo maggio, Luigi quattordicesimo pagò tre euro e cinquanta centesimi per un gelato del ventesimo secolo.

Alle 14:30 lesse 1.234 pagine.

Alle quattordici e trenta lesse milleduecentotrentaquattro pagine.

Português

No século XIX, D. Pedro II leu 1.234 páginas às 14:30.

No século dezenove, D. Pedro segundo leu mil duzentos e trinta e quatro páginas às catorze e trinta.

Pagou 3,50 € no dia 12/10/1492.

Pagou três euros e cinquenta cêntimos no dia doze de outubro de mil quatrocentos e noventa e dois.

why it's needed

Yappy's voice reads characters, not phonemes.

Yappy's voice model (Supertonic 3) works at the character level: it pronounces exactly what arrives in writing. That makes it fast and light, but it means normalization is pronunciation: hand it "1492" and it will try to say "1492". The guionizador is the piece that turns every figure, acronym and symbol into the words a person would say, with the rules of each of the 31 languages. And since the script keeps the map between written and spoken, the karaoke highlight always lands on the exact word.

Numbers with real grammar. To spell out figures, Yappy interprets Unicode CLDR's RBNF grammars in pure Rust: gender ("doscientas" pages, not "doscientos"), declension in the Slavic languages, and each language's quirks ("quatre-vingt-dix", "einundzwanzig"). No hand-made lists.

Now, with a voice.

The script is half the story; the other half you listen to.