Guides

TTS Verbalization Guide & Specifications for pt-PT

Product: pt-PT
Release Date: October 2026
TTS Engine version: 3.4.0

 

Introduction

This document describes how specific series of strings are read by the TTS Engine for the PT language in thePT domain. Example outputs are in Portuguese (European Portuguese). The readings are the engine's current output for the version above: when a reading is not what is wanted, this document still shows what the engine does.

Convention: every example table includes a Lexis voice output column. Any new row appears marked with 🆕. Missing support is shown as "unsupported". Numeric ranges use [a-b] (for example, [1-99] means any number from 1 to 99).

Readings are shown in lower case with punctuation as the engine returns it. Two markers appear in the readings: [pause] is a 0.025 s pause the Lexis voice puts between groups of digits, and [pause 0.2 s] is a fixed pause of 0.2 s.

Numbers

Integers

Format

Example input

Lexis

[1-9][0-9]

25

vinte e cinco

[1-9][0-9]…[0-9]

159

cento e cinquenta e nove

100

100

cem

10[1-9]

101

cento e um

<dash>[1-9]…[0-9]

-58

menos cinquenta e oito

[1-9][0-9]…[0-9][0-9] (>999)

2824

dois mil oitocentos e vinte e quatro

[1-9][0-9]{3}

1500

mil e quinhentos

[1-9][0-9]{0,2}<dot>[0-9]{3}

2.824

dois mil oitocentos e vinte e quatro

1000000

1.000.000

um milhão

2000000

2.000.000

dois milhões

1000000000

1.000.000.000

mil milhões

Allowed thousands delimiter: dot only; a space reads as two number groups. Max supported value: 999.999.999.999, read as "novecentos e noventa e nove mil milhões, novecentos e noventa e nove milhões, novecentos e noventa e nove mil, novecentos e noventa e nove". Beyond that, digits are spelled one by one.

Ordinal numbers

Format

Example input

Lexis

[1-9]…[0-9]{.º}

1.º

primeiro

[1-9]…[0-9]{.ª}

1.ª

primeira

[1-9]…[0-9]{.º}

21.º

vigésimo primeiro

Decimals

Decimal separator: comma. Digits after the comma are spelled individually ("2,4527"); a two-digit fraction is read as a number ("-25,78" is "menos vinte e cinco vírgula setenta e oito").

Format

Example input

Lexis

[1-9]…[0-9]<comma>[0-9]…[0-9]

2,4527

dois vírgula quatro cinco dois sete

<dash>[1-9]…[0-9]<comma>[0-9]…[0-9]

-25,78

menos vinte e cinco vírgula setenta e oito

Fractions and units

Format

Example input

Lexis

[1-99]<slash>[1-99]

13/16

treze dezasseis avos

[1-99]<slash>[1-99]

45/2

quarenta e cinco meios

[1-99]<slash>[1-99]

3/4

três de abril

A fraction that complies with the date format, thus [1-31]<slash>[1-12], is read as a date if no supported unit is provided. E.g. "5/12" is read as "cinco de dezembro" while "5/12 km" is read as "cinco doze avos de quilômetro". Because dates are day first, fractions such as 3/4 and 1/2 are read as dates ("três de abril", "primeiro de fevereiro").

Format

Example input

Lexis

{vulgar fraction} <unit>

½ chávena

½ chávena

[1-99]/[1-99] <unit>

3/4 mi

três de abril mi

[1-31]<slash>[1-12] <unit>

5/12 km

cinco doze avos de quilômetro

A vulgar fraction such as ½ is not converted: the text passes through unchanged.

Digit-by-digit spelling

The dash notation can be used to spell the digit sequence digit by digit. For Lexis, the digits are read in groups of three, with a short pause ([pause], 0.025 s) between the groups. The comma is placed where the input has a space.

Example input

Lexis

4-2-1-4 2-3-4 7-5-3

quatro dois um [pause] quatro, dois três [pause] quatro, sete cinco [pause] três

Note: this notation can be used for digit sequences with more than 2 digits. Otherwise it will be verbalized as an interval. E.g. "2-3" is "dois a três".

16-digit card numbers

Example input

Lexis

5-8-9-6 4-2-6-5 1-2-3-4 7-4-6-8

cinco oito nove [pause] seis, quatro dois [pause] seis cinco, um [pause] dois três quatro, [pause] sete quatro seis [pause] oito

5-8-9-6-4-2-6-5 1-2-3-4-7-4-6-8

cinco oito nove [pause] seis quatro dois [pause] seis cinco, um [pause] dois três quatro [pause] sete quatro seis [pause] oito

Counter examples

  • The numbers in between the dashes are read as integers and the dash is pronounced as "traço" if the dash is used more than once.

  • If only one dash is used, then the digit sequence is handled as an interval.

  • If no dash is used, the numbers are read as integers.

Example input

Lexis

4532-1234-5678-9012

quatro mil quinhentos e trinta e dois traço mil duzentos e trinta e quatro traço cinco mil seiscentos e setenta e oito traço nove mil e doze

4532 1234 5678 9012

quatro mil quinhentos e trinta e dois mil duzentos e trinta e quatro cinco mil seiscentos e setenta e oito nove mil e doze

4532-1234-5678

quatro mil quinhentos e trinta e dois traço mil duzentos e trinta e quatro traço cinco mil seiscentos e setenta e oito

4532-1234

quatro mil quinhentos e trinta e dois a mil duzentos e trinta e quatro

Telephone numbers

Format

Example input

Lexis

[0-9]{3} [0-9]{3} [0-9]{3}

912 345 678

nove um dois, três quatro cinco, seis sete oito

+[0-9]{3} [0-9]{3} [0-9]{3} [0-9]{3}

+351 912 345 678

mais três cinco um , nove um dois , três quatro cinco , seis sete oito .

Telephone numbers are not read digit by digit: the groups are read as numbers.

Combination of numbers and words

Format

Example input

Lexis

[0-9]…[0-9]<dash>{word}

16-bit

dezasseis bit

{word}<dash>[0-9]…[0-9]

COVID-19

covid dezanove

A space around a dash between a number and a word verbalizes the dash as the word "traço" (e.g. "16 - bit" becomes "dezasseis traço bit"). A spaced dash between two words is read as a pause (see Dashed words).

Ratio and intervals

Format

Example input

Lexis

[0-9]…[0-9]<colon>[0-9]…[0-9]

16:9

dezasseis por nove

[0-9]…[0-9]<dash>[0-9]…[0-9]

16-9

dezasseis a nove

[0-9]…[0-9]<dash>[0-9]…[0-9] {word}

3-5 dias

três a cinco dias

If the ratio values overlap with the time format, the time will be announced. E.g. "24:00" is verbalized as "meia-noite" while "25:00" is "vinte e cinco por zero". A ratio is read with "por" ("16:9" is "dezasseis por nove") and an interval with "a" ("16-9" is "dezasseis a nove").

Percentage

Example input

Lexis

15%

quinze por cento

2,5%

dois vírgula cinco por cento

Time

Format

Example input

Lexis

[00-24]<colon>[00-59]<colon>[00-59]

12:11:01

doze horas onze minutos e um segundo

[00-24]<colon>[00-59]

23:15

vinte e três e quinze

[00-24]h[00-59]

14h30

14h30

[00-24]<colon>00

24:00

meia-noite

12<colon>00

12:00

meio-dia

00<colon>00

00:00

meia-noite

[1-12] {PM,AM}

2 PM

duas horas da tarde

[01-12]<colon>[00-59] {PM,AM}

02:20 PM

duas e vinte da tarde

Note: a whole PM or AM hour is read with "horas" ("2 PM" is "duas horas da tarde") and with minutes without it ("02:20 PM" is "duas e vinte da tarde"); "14h30" is left as written.

Date

Format

Example input

Lexis

[2-31] de {month} de [0-9]{4}

14 de maio de 2022

catorze de maio de dois mil e vinte e dois

1 de {month} de [0-9]{4}

1 de junho de 2020

um de junho de dois mil e vinte

[00-31]/[00-12]/[0-9][0-9]

31/12/19

trinta e um de dezembro de dezanove

[00-31].[00-12].[0-9]{4}

27.05.2021

vinte e sete de maio de dois mil e vinte e um

[0-9]{4}-[00-12]-[00-31]

2022-11-02

dois de novembro de dois mil e vinte e dois

[1-31] de {month}

21 de outubro

vinte e um de outubro

[1-31]/[1-12]

23/5

vinte e três de maio

[1-31]/[1-12]

5/12

cinco de dezembro

Note: Dates are day first, so "5/12" is the 5th of December (en-US reads May 12th). A two-digit year after a date is read as a number ("dezanove"); a full year is read as one number ("dois mil e vinte e dois").

Units

Format

Example input

Lexis

{amount}{unit}

2,5GB

dois vírgula cinco gigabytes

{amount}<space>{unit}

1,5 GB

um vírgula cinco gigabytes

{amount}{unit}/{unit}

1500MB/s

mil e quinhentos megabytes por segundo

{amount}<space>{unit}/{unit}

1400 MB/s

mil e quatrocentos megabytes por segundo

Supported unit abbreviations

Each reading shows the singular / the plural form: the unit is read after "1" and after "2". The readings come from the Portuguese unit table of the input processor tests.

Abbreviation

Lexis

mm

milímetro / milímetros

cm

centímetro / centímetros

m

metro / metros

km

quilômetro / quilômetros

Km

quilômetro / quilômetros

m²

metro quadrado / metros quadrados

m2

metro quadrado / metros quadrados

m³

metro cúbico / metros cúbicos

m3

metro cúbico / metros cúbicos

"

"

in

in

'

'

ft

ft

yd

yd

mi

mi

mph

mph

MPH

mph

h

hora / horas

hr

hora / horas

min

minuto / minutos

mins

mins

s

segundo / segundos

g

grama / gramas

gm

gm

kg

quilograma / quilogramas

Kg

quilograma / quilogramas

oz

oz

lb

lb

lbs

lbs

ml

mililitro / mililitros

mL

mililitro / mililitros

l

litro / litros

L

litro / litros

gal

gal

cup

cup

Hz

hertz

hz

hz

kHz

quilohertz

MHz

megahertz

GHz

gigahertz

W

watt / watts

kW

quilowatt / quilowatts

MW

megawatt / megawatts

GW

gw

V

volt / volts

mA

miliampere / miliamperes

A

ampere / amperes

dB

decibel / decibéis

kb

kb

mb

mb

gb

gb

tb

tb

pb

pb

kB

kilobyte / kilobytes

MB

megabyte / megabytes

GB

gigabyte / gigabytes

TB

terabyte / terabytes

PB

petabyte / petabytes

bps

bit por segundo / bits por segundo

Kbps

kilobit por segundo / kilobits por segundo

Mbps

megabit por segundo / megabits por segundo

Gbps

gigabit por segundo / gigabits por segundo

Tbps

tbps

kBps

kbps

MBps

mbps

GBps

gbps

TBps

tbps

PBps

pbps

°C

grau celsius / graus celsius

°c

° c

°F

grau fahrenheit / graus fahrenheit

°f

° f

Note: Short abbreviations that are also words or letters (in, min, h, m, A, s) are read as units only when they follow a number; "in" is not a unit here ("5 in the box" is left as written).

Words

Abbreviations and spelling

Lexis passes words in capital letters through unchanged and the Lexis model reads them (e.g. ABC, JOHN). Dotted capital abbreviations keep their dots (e.g. B.C.).

Format

Example input

Lexis

[A-Z]…[A-Z]

ABC

abc

[A-Z]…[A-Z]

JOHN

john

[A-Z]<dot>[A-Z]<dot>

B.C.

b. c

[A-Z]&[A-Z]

I&D

i&d

Between capital letters, "&" is passed through. Between words, "&" is read as "e".

Common abbreviations

Example input

Lexis

Prof.

professor

Prof.ª

prof. ª

Dr.

doutor

Dr.ª

dr. ª

Sr.

senhor

Sr.ª

sr. ª

etc.

etcétera

p. ex.

por exemplo

Dashed words

Example input

Lexis

guarda-chuva

guarda-chuva

e-mail

e-mail

Lisboa - Porto

lisboa [pause 0.2 s] porto

Lisboa-Porto

lisboa-porto

URLs and e-mails

URLs

Format

Example input

Lexis

(www)<dot>{word}<dot>{domain}

www.google.com/

dáblio dáblio dáblio, ponto google, ponto com

http(s)://{word}<dot>{domain}

http://google.com/

agá tê tê pê, dois pontos, barra barra google, ponto com

http(s)://www<dot>{word}<dot>{domain}

https://www.google.com/

agá tê tê pê ésse, dois pontos, barra barra dáblio dáblio dáblio, ponto google, ponto com

(http(s)://)(www)<dot>{word}<dot>{domain}<slash>{sequence}

https://www.google.com/news=123

agá tê tê pê ésse, dois pontos, barra barra dáblio dáblio dáblio, ponto google, ponto com, barra ene é dáblio ésse, igual um dois três

(http(s)://)(www)<dot>{non-word}<dot>{domain}

www.123.com

dáblio dáblio dáblio, ponto um dois três, ponto com

E-mails

Format

Example input

Lexis

{word}@{word}<dot>{domain}

info@omilia.com

info, arroba omilia, ponto com

Currency

Format

Example input

Lexis

{symbol}{amount}

$25,10

vinte e cinco dólares e dez centavos

{amount}{symbol}

25,10€

vinte e cinco euros e dez cêntimos

{amount} {code}

25 USD

vinte e cinco dólares americanos

{amount} {quantity} {code}

1,3 milhões USD

um vírgula três milhões de dólares americanos

{symbol}{amount} {quantity}

$1,3 milhões

um vírgula três milhões de dólares

Note: after "milhão/milhões" the noun is introduced by "de" ("um vírgula três milhões de dólares").

Currency codes and symbols

Each reading shows the singular / the plural form. The subdivision is read after "e" when the amount has decimals ("1,01" and "2,50").

Code

Lexis

Subdivision

USD

dólar americano / dólares americanos

centavo / centavos

EUR

euro / euros

cêntimo / cêntimos

GBP

libra esterlina / libras esterlinas

pêni / pence

AUD

dólar australiano / dólares australianos

centavo / centavos

CAD

dólar canadense / dólares canadenses

centavo / centavos

JPY

iene / ienes

none: 1,50 JPY reads um vírgula cinquenta iene

Symbol

Lexis

$

dólar / dólares

€

euro / euros

£

libra esterlina / libras esterlinas

¥

iene / ienes

Punctuation and character processing

Supported characters

Char

Description

Used as/in

Lexis

.

period

sentence end / thousands separator

✅

,

comma

sentence break / decimal separator

✅

-

dash

number group / minus sign

✅

@

at sign

email address

✅

%

percent

percentage value, in URLs

✅

&

ampersand

"e" (between capital letters it is passed through)

✅

$ € £ ¥

currency signs

part of currency

✅

=

equal sign

in URLs

✅

;

semicolon

in URLs

✅

? !

question mark, exclamation mark

sentence end (see intonation)

✅

: / ( )

colon, slash, brackets

time, ratio, URLs, fractions, dates

✅

° ² ³ " '

degree, superscripts, quotes

units

✅

The slash is read "barra". Other symbols are read by name: \ "barra invertida", ^ "circunflexo", _ "sublinhado", + "mais", # "cerquilha", $ "cifrão", * "asterisco" and ~ "til". Outside times, ratios and URLs a colon or semicolon is replaced by a full stop, and brackets are passed on unchanged. The vulgar fraction ½ and the ordinal indicators º and ª are not converted.

Any other character has no reading of its own: the processor passes it on unchanged (for example quotation marks and ©, ®, ™, §, ×, ÷, ±).

Punctuation intonation

Char

Lexis effect

.

falling intonation

?

rising intonation for yes/no questions

,

falling intonation

!

a lone exclamation mark is rewritten as a full stop (falling intonation)

space / dash

short pause (a spaced dash is a fixed pause of 0.2 s)

no punctuation at the end of a sentence

a period is added automatically