Guides

TTS Verbalization Guide & Specifications for en-US

Product: en-US
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 EN language in the US domain. 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 has separate Lexis and Odi voices output columns. If Odi matches Lexis exactly, the symbol ↔ is used instead of repeating the text. A 🆕 marker next to an example means the reading changed in the current version vs the previous one (3.3.0). Missing support is always written as "unsupported". Numeric ranges in formats are written [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

Odi

[1-9][0-9]

25

twenty five

↔

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

159

one hundred fifty nine

↔

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

-58

minus fifty eight

↔

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

2824

two thousand eight hundred twenty four

↔

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

2,824

two thousand eight hundred twenty four

↔

Allowed thousands delimiter: comma only. A space delimiter reads as two separate number groups ("2 824" is "two eight hundred twenty four"). Max supported value: 999,999,999,999 (999 billion and below), read as "nine hundred ninety nine billion nine hundred ninety nine million nine hundred ninety nine thousand nine hundred ninety nine". Beyond that, digits are spelled one by one ("1,000,000,000,000" is "one zero zero zero zero zero zero zero zero zero zero zero zero"). Integers are read without "and"; numbers joined by dashes are the exception (see the counter examples).

Ordinal numbers

Format

Example input

Lexis

Odi

[1-9]…[0-9]{st,nd,rd,th}

1st

first

↔

Decimals

Decimal separator: dot. Digits after the dot are spelled individually.

Format

Example input

Lexis

Odi

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

2.4527

two point four five two seven

↔

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

-25.78

minus twenty five point seven eight

↔

Fractions and units

Format

Example input

Lexis

Odi

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

13/16

thirteen sixteenths

↔

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

45/2

forty five halves

↔

A fraction that complies with the date format, thus [1-31]<slash>[1-12] and [1-12]<slash>[1-31], is read as a date of the year if no supported unit is provided. E.g. "5/12" is read as "may twelfth" while "5/12 km" is read as "five twelfths kilometer". A date-like fraction without a unit (for example 1/2 or 3/4) is therefore read as a date, month first.

Format

Example input

Lexis

Odi

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

5/12 km

five twelfths kilometer

↔

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

1/2

january second

↔

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

3/4

march fourth

↔

{vulgar fraction} <unit>

½ cup

½ cup

↔

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

3/4 mile

three fourths mile

↔

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

Digit-by-digit spelling

The dash notation can be used to spell the digit sequence digit by digit. The behaviour differs for Lexis and Odi voices:

  • 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.

  • For Odi, the dashes are used to spell the numbers digit by digit as well, but without pauses: the comma is placed where the space is.

Example input

Lexis

Odi

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

four two one [pause] four, two three [pause] four, seven five [pause] three

four two one four, two three four, seven five three

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 "two to three".

16-digit card numbers

Dash notation can be used to spell out the card numbers:

Example input

Lexis

Odi

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

five eight nine [pause] six, four two [pause] six five, one [pause] two three four, [pause] seven four six [pause] eight, nine seven [pause] two six

five eight nine six, four two six five, one two three four, seven four six eight, nine seven two six

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

five eight nine [pause] six four two [pause] six five, one [pause] two three four [pause] seven four six [pause] eight, nine seven [pause] two six

five eight nine six four two six five, one two three four seven four six eight, nine seven two six

For Lexis, [pause] is a 0.025 s pause. Digits are read in groups of three, counted across the whole sequence, and a comma stays where the input has a space.

Counter examples

  • The numbers in between the dashes are read as integers and the dash is pronounced as "dash" if the dash is used more than once. Unlike plain integers, these numbers are read with a comma after "thousand" and with "and".

  • 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

Odi

4532-1234-5678-9012

four thousand, five hundred and thirty two dash one thousand, two hundred and thirty four dash five thousand, six hundred and seventy eight dash nine thousand twelve

↔

4532 1234 5678 9012

four thousand five hundred thirty two one thousand two hundred thirty four five thousand six hundred seventy eight nine thousand twelve

↔

4532-1234-5678

four thousand, five hundred and thirty two dash one thousand, two hundred and thirty four dash five thousand, six hundred and seventy eight

↔

4532-1234

four thousand five hundred thirty two to one thousand two hundred thirty four

↔

Telephone numbers

Format

Example input

Lexis

Odi

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

(212) 555-1234 🆕

two one two, five five five, one two three four

↔

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

212-555-1234 🆕

two one two, five five five, one two three four

↔

Combination of numbers and words

Format

Example input

Lexis

Odi

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

16-digit

sixteen digit

↔

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

COVID-19

covid nineteen

↔

Space around a dash verbalizes the dash as the word "dash" (e.g. "16 - digit" → "sixteen dash digit"), applicable both for Lexis and Odi voices.

Ratio and intervals

Format

Example input

Lexis

Odi

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

16:9

sixteen to nine

↔

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

16-9

sixteen to nine

↔

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

3-5 days

three to five days

↔

If the ratio values overlap with time format, the time will be announced. E.g. "24:00" is verbalized as "twenty four hours" while "25:00" is "twenty five to zero".

Percentage

Example input

Lexis

Odi

15%

fifteen percent

↔

Time

Format

Example input

Lexis

Odi

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

12:11:01

twelve hours eleven minutes and one second

↔

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

23:15

twenty three fifteen

↔

[00-24]<colon>00

24:00

twenty four hours

↔

[1-12] {PM,AM}

2 PM

two p m

↔

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

02:20 PM

two twenty p m

↔

midnight

00:00

midnight

↔

Date

Format

Example input

Lexis

Odi

[1-31] {month} [0-9][0-9][0-9][0-9]

14 May 2022

may fourteenth, twenty twenty two

↔

{month} [1-31], [0-9][0-9][0-9][0-9]

June 6, 2020

june sixth, twenty twenty

↔

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

31/12/19

december thirty first, nineteen

↔

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

27.05.2021

may twenty seventh, twenty twenty one

↔

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

2022-11-02

november second, twenty twenty two

↔

{month} [1-31]{st,nd,rd,th}

October 21st

october twenty first

↔

{month} [1-31]{st,nd,rd,th}, [0-9][0-9][0-9][0-9]

October 21st, 1955

october twenty first, nineteen fifty five

↔

[1-31]/[00-12]

23/5

may twenty third

↔

[00-12]/[1-31]

5/12

may twelfth

↔

Units

Format

Example input

Lexis

Odi

{amount}{unit}

2.5GB

two point five gigabytes

↔

{amount}<space>{unit}

1.5 GB

one point five gigabytes

↔

{amount} {unit}

3 m

three meters

↔

{amount}{unit}/{unit}

1500MB/s

one thousand five hundred megabytes per second

↔

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

1400 MB/s

one thousand four hundred megabytes per second

↔

Supported unit abbreviations

This table is the voice-package unit table. Without it the engine knows only a few units, such as km and l; mm, ft and mph are not read. Each reading shows the singular / the plural form: the unit is read after "1" and after "2".

Abbreviation

Lexis

Odi

mm

millimeter / millimeters

↔

cm

centimeter / centimeters

↔

m

meter / meters

↔

km

kilometer / kilometers

↔

Km

kilometer / kilometers

↔

m²

square meter / square meters

↔

m2

square meter / square meters

↔

m³

cubic meter / cubic meters

↔

m3

cubic meter / cubic meters

↔

"

inch / inches

↔

in

inch / inches

↔

'

foot / feet

↔

ft

foot / feet

↔

yd

yard / yards

↔

mi

mile / miles

↔

mph

mile per hour / miles per hour

↔

MPH

mile per hour / miles per hour

↔

h

hour / hours

↔

hr

hour / hours

↔

min

minute / minutes

↔

mins

minute / minutes

↔

s

second / seconds

↔

g

gram / grams

↔

gm

gram / grams

↔

kg

kilogram / kilograms

↔

Kg

kilogram / kilograms

↔

oz

ounce / ounces

↔

lb

pound / pounds

↔

lbs

pound / pounds

↔

ml

milliliter / milliliters

↔

mL

milliliter / milliliters

↔

l

liter / liters

↔

L

liter / liters

↔

gal

gallon / gallons

↔

Hz

hertz

↔

hz

hertz

↔

kHz

kilohertz

↔

MHz

megahertz

↔

GHz

gigahertz

↔

W

watt / watts

↔

kW

kilowatt / kilowatts

↔

MW

megawatt / megawatts

↔

GW

gigawatt / gigawatts

↔

V

volt / volts

↔

mA

milliampere / milliamperes

↔

A

ampere / amperes

↔

dB

decibel / decibels

↔

kb

kilobit / kilobits

↔

mb

megabit / megabits

↔

gb

gigabit / gigabits

↔

tb

terabit / terabits

↔

pb

petabit / petabits

↔

kB

kilobyte / kilobytes

↔

MB

megabyte / megabytes

↔

GB

gigabyte / gigabytes

↔

TB

terabyte / terabytes

↔

PB

petabyte / petabytes

↔

bps

bit per second / bits per second

↔

Kbps

kilobit per second / kilobits per second

↔

Mbps

megabit per second / megabits per second

↔

Gbps

gigabit per second / gigabits per second

↔

Tbps

terabit per second / terabits per second

↔

kBps

kilobyte per second / kilobytes per second

↔

MBps

megabyte per second / megabytes per second

↔

GBps

gigabyte per second / gigabytes per second

↔

TBps

terabyte per second / terabytes per second

↔

PBps

petabyte per second / petabytes per second

↔

°C

degree celsius / degrees celsius

↔

°c

degree celsius / degrees celsius

↔

°F

degree fahrenheit / degrees fahrenheit

↔

°f

degree fahrenheit / degrees fahrenheit

↔

Words

Abbreviations and spelling

Odi spells all the words in capital letters letter by letter.

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.). For Lexis, these readings are done by the Lexis model, not by the input processor.

Format

Example input

Lexis

Odi

[A-Z]…[A-Z]

ABC

abc

a b c


JOHN

john

j o h n

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

B.C.

b. c

b c

[a-z]<dot>[a-z]<dot>

e.g.

for example

↔

[a-zA-Z] & [a-zA-Z]

R&D

r&d

r-n-d

Between capital letters, "&" is passed through for Lexis and read as "n" by Odi. Between words, "&" is read as "and" ("salt & pepper" is "salt and pepper").

Common abbreviations

Example input

Lexis

Odi

Prof.

professor

↔

Dr.

doctor

↔

etc.

and so on

↔

Ave.🆕

Avenue

↔

Dashed words

Example input

Lexis

Odi

E-mail

e-mail

↔

Paris - Texas

paris [pause 0.2 s] texas

↔

Paris-Texas

paris - texas

↔

URLs and e-mails

URLs

Format

Example input

Lexis

Odi

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

www.google.com

w w w, dot google, dot com

↔

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

https://google.com

h t t p s, colon, double slash google, dot com

↔

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

https://www.google.com

h t t p s, colon, double slash w w w, dot google, dot com

↔

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

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

h t t p s, colon, double slash w w w, dot google, dot com, slash news, equal sign one hundred twenty three

↔

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

www.123.com

w w w, dot one hundred twenty three, dot com

↔

E-mails

Format

Example input

Lexis

Odi

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

info@omilia.com

i n f o, at omilia, dot com

↔

{word}!={symbol}!={number}@{word}<dot>{domain}🆕

omilia_19@omilia.com

omilia, underscore one nine, at omilia, dot com

↔

{word}!={symbol}!={number}@{word}<dot>{domain}🆕

john.smith42@example.com

john, dot smith four two, at example, dot com

↔

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

SALES@EXAMPLE.COM

sales, at example, dot com.

↔

uppercase{word}!={symbol}!={number}@{word}<dot>{domain}🆕

FFI.SHDFI.GM@MARRIOTT.COM

f f i, dot s h d f i, dot g m, at marriott, dot com

↔

Note: digits are read one by one, _ reads "underscore", and short code-like parts are spelled letter by letter.

Currency

Format

Example input

Lexis

Odi

{symbol}{amount}

$25.10

twenty five dollars and ten cents

↔

{amount}{symbol}

25.10€

twenty five euros and ten cents

↔

{amount} {code}

25 USD

twenty five u s dollars

↔

{amount} {quantity} {code}

1.3 million USD

one point three million u s dollars

↔

{symbol}{amount} {quantity}

$1.3 million

one point three million dollars

↔

Currency codes and symbols

Each reading shows the singular / the plural form. The subdivision is read after "and" when the amount has decimals ("1.01" and "2.50").

Code

Lexis

Odi

Subdivision

USD

u s dollar / u s dollars

↔

cent / cents

EUR

euro / euros

↔

cent / cents

GBP

pound sterling / pounds sterling

↔

penny / pence

AUD

australian dollar / australian dollars

↔

cent / cents

CAD

canadian dollar / canadian dollars

↔

cent / cents

JPY

japanese yen / japan yen

↔

none: 1.50 JPY reads one point five japanese yen

Symbol

Lexis

Odi

Subdivision

$

dollar / dollars

↔

cent / cents

€

euro / euros

↔

cent / cents

£

pound / pounds

↔

penny / pence

¥ 🆕

japanese yen / japan yen

↔

none

Punctuation and character processing

Supported characters

Char

Description

Used as/in

Lexis

Odi

.

period

sentence end / decimal separator

✅

↔

,

comma

sentence break / thousands separator

✅

↔

-

dash

number group / minus sign

✅

↔

_

underscore

email address



@

at sign

email address

✅

↔

%

percent

percentage value, in URLs

✅

↔

&

ampersand

"and" (between capital letters it is passed through for Lexis and read as "n" by Odi)

✅

↔

$ € £

currency signs

part of currency

✅

↔

=

equal sign

in URLs

✅

↔

;

semicolon

in URLs

✅

↔

:

colon

in URLs

✅

↔

Other symbols are read by name in both voices: / "slash", \ "backslash", ^ "caret", _ "underscore", + "plus", # "pound", * "asterisk" and ~ "tilde". Outside URLs a colon or semicolon is replaced by a full stop.

Any other character is removed and does not affect the voice, in both engines. The trademark (™), service mark (℠), registered (®) and copyright (©) signs are removed earlier, by the engine's request pre-processing, before the text reaches the verbalizer. The verbalizer itself does not process them. 🆕

  • Example: Design Hotels™ welcomes you → design hotels welcomes you.

Punctuation intonation

Char

Lexis effect

Odi effect

.

falling intonation

↔

?

rising intonation (en-US question-type rules: yes/no, wh-, multiple choice)

↔

,

falling intonation

↔

!

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

increased intensity

space / dash

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

↔

no punctuation is present

the punctuation will be added automatically according to the sentence structure

a period is added automatically