Overview
The TTS engine is sensitive to how structured data is written in the text field. Passing raw strings like 9876543210 or Rs. 1,00,000 causes mispronunciations or garbled output.
Core principle:
- Read digit-by-digit (IDs, PINs, account numbers, phone numbers) → separate every character with a single space:
9 8 7 6 5 4 3 2 1 0
- Read as a quantity (prices, floor numbers, years) → pass as-is:
Rs 1,00,000
1. Phone Numbers
Separate every digit with a single space. Never pass a raw digit string — the engine reads it as a large cardinal number.
| Scenario | Raw Input | Correct TTS Input | Expected Speech |
|---|
| Mobile (India, 10-digit) | 9876543210 | 9 8 7 6 5 4 3 2 1 0 | nine eight seven six five four three two one zero |
| Landline with STD code | 01122334455 | 0 1 1 2 2 3 3 4 4 5 5 | zero one one two two three three four four five five |
| International (+91) | +919876543210 | + 9 1 9 8 7 6 5 4 3 2 1 0 | plus nine one nine eight seven six… |
| Toll-free | 18001234567 | 1 8 0 0 1 2 3 4 5 6 7 | one eight zero zero one two three four five six seven |
Do not pass 9876543210, 987-654-3210, or (987) 654-3210 — all cause the engine to misread.
2. Account Numbers
Every character — digit or letter — must be separated by a single space. Account numbers may be alphanumeric; each character is read individually.
| Scenario | Raw Input | Correct TTS Input | Expected Speech |
|---|
| Bank account (numeric) | 012345678901 | 0 1 2 3 4 5 6 7 8 9 0 1 | zero one two three four five… |
| Alphanumeric account | AB123456789 | A B 1 2 3 4 5 6 7 8 9 | A B one two three four five six seven eight nine |
| Loan account | LN2024001234 | L N 2 0 2 4 0 0 1 2 3 4 | L N two zero two four zero zero one two three four |
| Masked (partial visible) | XXXX1234 | X X X X 1 2 3 4 | X X X X one two three four |
3. PIN Numbers
Each digit must be separated by a single space. The digit 0 is always spoken as “zero”, never “oh”. Leading zeros must never be dropped.
| Scenario | Raw Input | Correct TTS Input | Expected Speech |
|---|
| 4-digit ATM PIN | 4821 | 4 8 2 1 | four eight two one |
| 6-digit OTP/PIN | 739201 | 7 3 9 2 0 1 | seven three nine two zero one |
| PIN starting with 0 | 0492 | 0 4 9 2 | zero four nine two (not: four nine two) |
| 6-digit postal PIN | 560001 | 5 6 0 0 0 1 | five six zero zero zero one |
4. Addresses
Street and house numbers are read as quantities (not digit-by-digit). Postal PIN codes inside addresses must be digit-by-digit. Road abbreviations (MG, NH) must be letter-spaced. Replace / with the word slash.
| Component | Raw Input | Correct TTS Input | Expected Speech |
|---|
| Flat + floor | Flat 4B, 2nd Floor | Flat 4 B, 2nd Floor | Flat four B, second floor |
| House/door number | No. 12/3, MG Road | Number 12 slash 3, M G Road | Number twelve slash three, M G Road |
| Postal PIN in address | Bengaluru - 560001 | Bengaluru, 5 6 0 0 0 1 | Bengaluru, five six zero zero zero one |
| Full address | 42, MG Road, Bengaluru - 560001 | 42, M G Road, Bengaluru, 5 6 0 0 0 1 | forty two, M G Road, Bengaluru, five six zero zero zero one |
| Apartment unit | B-204, Prestige Apts | B 204, Prestige Apts | B two zero four, Prestige Apartments |
5. Aadhaar Card Numbers
Aadhaar is a 12-digit unique ID. Every digit must be separated by a single space. Strip any existing grouping spaces (4-4-4 format) before re-spacing individually.
| Scenario | Raw Input | Correct TTS Input | Expected Speech |
|---|
| Full Aadhaar | 234567891234 | 2 3 4 5 6 7 8 9 1 2 3 4 | two three four five six seven eight nine one two three four |
| Grouped format | 2345 6789 1234 | 2 3 4 5 6 7 8 9 1 2 3 4 | (strip groups first, same result) |
| Masked Aadhaar | XXXX XXXX 1234 | X X X X X X X X 1 2 3 4 | X X X X X X X X one two three four |
6. Vehicle Registration Numbers
Indian vehicle registration numbers follow the format: State Code (2 letters) + District Code (2 digits) + Series (1–3 letters) + Number (4 digits). Each character is separated by a single space. Always strip hyphens before formatting. Letters must be uppercase.
Format: [State Code] [District No.] [Series] [Reg. Number]
Example: KA | 09 | MF | 1234 → K A 0 9 M F 1 2 3 4
| Scenario | Raw Input | Correct TTS Input | Expected Speech |
|---|
| Standard | KA09MF1234 | K A 0 9 M F 1 2 3 4 | K A zero nine M F one two three four |
| With hyphens | KA-09-MF-1234 | K A 0 9 M F 1 2 3 4 | K A zero nine M F one two three four |
| Delhi vehicle | DL4CAF0001 | D L 4 C A F 0 0 0 1 | D L four C A F zero zero zero one |
| Maharashtra | MH12DE1433 | M H 1 2 D E 1 4 3 3 | M H one two D E one four three three |
| Tamil Nadu | TN22BC5678 | T N 2 2 B C 5 6 7 8 | T N two two B C five six seven eight |
| Bharat series | BH01AB1234 | B H 0 1 A B 1 2 3 4 | B H zero one A B one two three four |
| 2-wheeler (short) | KA05V1234 | K A 0 5 V 1 2 3 4 | K A zero five V one two three four |
Do not pass KA-09-MF-1234 with dashes and no spaces — the engine may misread the state code.
7. GST Numbers (GSTIN)
GSTIN is a 15-character alphanumeric code. Every character must be separated by a single space. Lowercase letters must be converted to uppercase. The letter Z at position 14 is always read as the letter “Z”, not “zero”.
Structure: [State Code 2 digits] + [PAN 10 chars] + [Entity No.] + [Z] + [Check digit]
| Scenario | Raw Input | Correct TTS Input | Expected Speech |
|---|
| Karnataka | 29ABCDE1234F1Z5 | 2 9 A B C D E 1 2 3 4 F 1 Z 5 | two nine A B C D E one two three four F one Z five |
| Maharashtra | 27AABCU9603R1Z6 | 2 7 A A B C U 9 6 0 3 R 1 Z 6 | two seven A A B C U nine six zero three R one Z six |
| Delhi | 07AAACR5055K1ZR | 0 7 A A A C R 5 0 5 5 K 1 Z R | zero seven A A A C R five zero five five K one Z R |
| Tamil Nadu | 33AAACP1234C1Z1 | 3 3 A A A C P 1 2 3 4 C 1 Z 1 | three three A A A C P one two three four C one Z one |
Do not pass raw (29ABCDE1234F1Z5) or hyphenated (29-ABCDE-1234-F1Z5) formats — always space each character individually.
8. Dates
Accepted formats: DD/MM/YY, DD-MM-YY, DD/MM/YYYY, DD-MM-YYYY, DD Month YYYY, DDth Month YYYY. Do not mix separators. Use 4-digit years for historical dates.
| Format | Correct TTS Input | Expected Speech | Notes |
|---|
DD/MM/YY | 15/08/47 | fifteenth August forty-seven | YY defaults to 2000s unless context implies otherwise |
DD-MM-YY | 01-01-24 | first January twenty-four | |
DD/MM/YYYY | 15/08/2024 | fifteenth August two thousand twenty-four | Preferred for unambiguous reading |
DD-MM-YYYY | 01-01-2025 | first January two thousand twenty-five | |
| Natural language | 15th August 2024 | fifteenth August two thousand twenty-four | Use ordinal suffix always |
| Short month | 15 Aug 2024 | fifteenth August two thousand twenty-four | |
Do not mix separators — 15/08-2024 causes a parsing error and engine failure.
9. Currency and Prices
Indian Rupee must always be written as Rs — exact case, no period, no lowercase, no INR. Place the symbol before the amount with a single space. Use Indian comma grouping (1,00,000) for Rupee amounts — the engine reads lakh and crore natively from this format.
| Currency | Do NOT Use | Correct TTS Input | Expected Speech |
|---|
| Indian Rupee | rs 500 / RS. 500 / Rs. 500 / INR 500 | Rs 500 | five hundred rupees |
| Rupee + paise | Rs.49.50 / rs 49.50 | Rs 49.50 | forty-nine rupees fifty paise |
| Large amount (lakh) | Rs 100000 | Rs 1,00,000 | one lakh rupees |
| Large amount (crore) | Rs 10000000 | Rs 1,00,00,000 | one crore rupees |
| US Dollar | dollar 20 / USD20 | $ 20 | twenty dollars |
| Euro | euro 15 / EUR15 | € 15 | fifteen euros |
| British Pound | pound 30 / GBP 30 | £ 30 | thirty pounds |
| Japanese Yen | yen 1000 / JPY1000 | ¥ 1000 | one thousand yen |
10. Abbreviations and Acronyms
Acronyms and abbreviations must always be UPPERCASE. Lowercase or mixed-case versions risk being misread as words. Each uppercase letter is read individually.
| Type | Do NOT Use | Correct TTS Input | Expected Speech |
|---|
| Organisation | rnr / Rnr | RNR | R N R |
| Paramilitary | crpf / Crpf | CRPF | C R P F |
| Space agency | isro / Isro | ISRO | I S R O |
| Finance term | emi / Emi | EMI | E M I |
| National ID | pan | PAN | P A N |
| Identity check | kyc / Kyc | KYC | K Y C |
| OTP/security | otp | OTP | O T P |
| Vehicle type | suv | SUV | S U V |
| Tax | gst | GST | G S T |
Some acronyms pronounced as words (NASA, NEFT, SWIFT) may be read as words rather than letter-by-letter. Verify pronunciation during QA for each acronym used in your content.
11. Ordinal Numbers
Always include the ordinal suffix (st, nd, rd, th). Without it, the engine reads bare numbers as cardinals (“one”, “two”) instead of ordinals (“first”, “second”).
| Context | Do NOT Use | Correct TTS Input | Expected Speech |
|---|
| Floor | 3 floor | 3rd floor | third floor |
| Rank | 1 rank | 1st rank | first rank |
| Date in sentence | The 15 of August | The 15th of August | the fifteenth of August |
| Anniversary | 25 anniversary | 25th anniversary | twenty-fifth anniversary |
| Queue position | You are 2 in queue | You are 2nd in queue | you are second in queue |
12. Decimals and Percentages
Use a period (.) as the decimal separator — never a comma. Percentages use the % symbol directly after the number with no space. Avoid trailing zeros in Rupee amounts unless paise must be communicated.
| Type | Do NOT Use | Correct TTS Input | Expected Speech |
|---|
| Interest rate | 8,5% | 8.5% | eight point five percent |
| Discount | 20 percent off | 20% off | twenty percent off |
| Rupee (no trailing zeros) | Rs 1,234.00 | Rs 1,234 | one thousand two hundred thirty-four rupees |
| Weight/measure | 1,5 kg | 1.5 kg | one point five kilograms |
| Score/ratio | 7,8 out of 10 | 7.8 out of 10 | seven point eight out of ten |
Quick Reference
| Data Type | Rule | Example |
|---|
| Phone Number | Each digit separated by single space | 9 8 7 6 5 4 3 2 1 0 |
| Account Number | Each character (alpha + digit) separated by single space | A B 1 2 3 4 5 6 7 8 9 |
| PIN Number | Each digit by single space; 0 = “zero” never “oh” | 4 8 2 1 |
| Aadhaar Number | Each of 12 digits separated by single space | 2 3 4 5 6 7 8 9 1 2 3 4 |
| Vehicle Reg. Number | Each character separated by single space; strip hyphens | K A 0 9 M F 1 2 3 4 |
| GST / GSTIN | All 15 characters separated by single space; uppercase only | 2 9 A B C D E 1 2 3 4 F 1 Z 5 |
| Address (postal PIN) | PIN digits only → digit-by-digit; house numbers read naturally | Bengaluru, 5 6 0 0 0 1 |
| Currency (Rupee) | Use Rs — not rs / RS / Rs. / INR; Indian comma grouping | Rs 1,00,000 |
| Currency (others) | Use symbol $ € £ ¥ before amount with one space | $ 20 / € 15 |
| Dates | DD/MM/YYYY or DD-MM-YYYY; ordinal suffix in natural language | 15/08/2024 or 15th August 2024 |
| Acronyms | Always UPPERCASE — never lowercase or mixed case | CRPF KYC OTP |
| Ordinals | Always include suffix: 1st, 2nd, 3rd, 15th | 3rd floor / 15th August |
| Decimals | Period (.) not comma; % directly after number | 8.5% / 1.5 kg |