All writing

September 2, 2026 · 9 min read

How to write a script for a Thai AI voice

Ten script rules for Thai text to speech cover where to put spaces and how to write numbers, dates, abbreviations, and English words the AI voice reads right.

A Thai AI voice reads what the script says, and a Thai script says less than it looks. Written Thai marks no word boundaries, writes some vowels nowhere, and leaves the reading of a number or an abbreviation to the reader. Ten rules below settle those gaps before the model has to. Every example line is 50 characters or fewer, the limit of the box on /tts. Each one can be pasted there and heard.

The rules apply to any Thai voice and were written for Paxa TTS Flash. The reading facts behind them are the ones published on the product page.

A space is a pause#

Thai spends the space character on phrase breaks, the job a comma does in English. A voice pauses at a space and runs through everything between two spaces as one breath. That gives the writer direct control of phrasing, and it also means a space in the wrong place cuts a word in half.

the space decides the phrase
before  วันนี้ฝนตกหนักมากรถติดทั้งเมือง
after   วันนี้ฝนตกหนักมาก รถติดทั้งเมือง

one breath becomes two phrases

wrong   วันนี้ฝนตกหนักมาก รถติดทั้งเมื อง

a space inside เมือง splits the word

A name inside a sentence reads cleanest with a space on each side. คุณ สมชาย stresses the name; คุณสมชาย runs it into the title. The same holds for a place or a product name that the listener needs to catch on the first hearing.

Put a space where a reader would breathe: after a clause, before a conjunction such as แต่ or แล้ว, and around a name that carries its own stress. Leave a compound alone. ร้านอาหาร, โทรศัพท์มือถือ, and กรุงเทพมหานคร each read as one word.

Full stops and question marks set the fall#

Thai prose usually ends a sentence with a space and nothing else. A voice needs more. A full stop tells it the pitch falls and the next sentence starts fresh; a question mark tells it to lift. A script for speech may punctuate where a printed page would not.

punctuation the page omits, the voice needs
before  ร้านเปิดกี่โมง พรุ่งนี้หยุดไหม
after   ร้านเปิดกี่โมง? พรุ่งนี้หยุดไหม?

before  ขอบคุณที่โทรมา เราจะติดต่อกลับ
after   ขอบคุณที่โทรมา. เราจะติดต่อกลับ.

An exclamation mark raises the line and suits a promotion. Three dots hold the voice on the last syllable, which works once in a bedtime story and wears out in a menu. A comma inside a Thai sentence does nothing a space does not already do, and a stray one can read as a pause in the wrong place. Use the space for pauses and keep the comma for numbers.

Numbers, dates, and prices#

A number has more than one reading, and the script decides which one the voice gets. A year reads as a quantity, a phone number reads digit by digit, and a quantity ending in one takes เอ็ด in place of หนึ่ง. Thai digits and Arabic digits read the same. Use whichever the audience expects, and keep to one kind within a script.

WrittenHow it readsWhat to write
พ.ศ. 2569พอ-สอ สองพันห้าร้อยหกสิบเก้าKeep it. A year reads as a quantity.
1,250 บาทหนึ่งพันสองร้อยห้าสิบบาทKeep the comma; the unit follows the number.
๑๐๑ร้อยเอ็ดA trailing one in a quantity takes เอ็ด. Nothing to add.
02 000 0000ศูนย์สอง ศูนย์ศูนย์ศูนย์ ศูนย์ศูนย์ศูนย์ศูนย์Space the groups; a phone number reads digit by digit.
10150หนึ่งศูนย์หนึ่งห้าศูนย์Leave a postal code unspaced; it reads digit by digit.
๑๖.๓๐ น.สิบหกนาฬิกาสามสิบนาทีKeep the น. mark; it makes the point a clock time.
3/4สามส่วนสี่ or สาม ทับ สี่Write the reading out when it matters: สามในสี่ or บ้านเลขที่ 3 ทับ 4.

When two readings are both plausible, write the one you mean as words. A fraction, a house number with a slash, and a score all look alike as digits and read differently aloud. The written-out form costs a few characters and removes the guess.

A date reads day, month, year, and the era mark tells the voice which century it is in. 15 กรกฎาคม 2569 reads the year in full. Add ค.ศ. in front of a Western year, because 2026 read bare sounds like a Buddhist year from the past. A percentage reads เปอร์เซ็นต์ and a decimal reads จุด, so 7% and 3.5 need no rewriting.

Abbreviations, and when to expand them#

Thai abbreviates with a full stop, ฯ, or ฯลฯ, and each mark carries a reading rule. กรุงเทพฯ restores six syllables. ฯลฯ reads และอื่น ๆ at the end of a list and ละถึง between two items. ก.พ. has two accepted readings, the full month กุมภาพันธ์ and the letter names กอ-พอ, and a listener accepts either.

Expand an abbreviation when only one reading is right for your audience. A clinic reminder wants กุมภาพันธ์ in full. A news line can leave กทม. as it is, because กรุงเทพมหานคร is the only reading it has.

expand where one reading is required
before  นัดครั้งถัดไป 14 ก.พ. ที่ รพ. เดิม
after   นัดครั้งถัดไป 14 กุมภาพันธ์ ที่โรงพยาบาลเดิม

English words inside Thai#

Thai business text carries English inside it: product names, job titles, and acronyms. Keep them in Latin script. A voice reads a Latin word as English and a Thai respelling as Thai, and the respelling often reads worse. An acronym reads letter by letter. AI and HR need no help.

keep English in its own script
before  ส่งอีเมลหาเอชอาร์ก่อนประชุม
after   ส่ง email หา HR ก่อน meeting

before  เปิดแอปเวอร์ชันใหม่ได้แล้ว
after   เปิด app เวอร์ชันใหม่ได้แล้ว

Words that Thai has fully absorbed stay Thai. แท็กซี่, คอมพิวเตอร์, and เวอร์ชัน read well in Thai script because that is how Thai speakers say them. A brand name follows the brand's own spelling.

Some acronyms are spoken as words. NASA and UNESCO read as two syllables each, and a letter-by-letter reading sounds foreign to a Thai listener. Write those in Thai script, นาซา and ยูเนสโก, and the voice reads the word. A mixed name keeps each half in its own script: บริษัท Paxa Labs จำกัด reads the Thai frame in Thai and the name in English.

ๆ and what it repeats#

The repetition mark ๆ repeats a word, two syllables, or a whole phrase, and meaning sets the span. เด็กเล็ก ๆ repeats one word. ในวันหนึ่ง ๆ repeats two syllables. แต่ละวัน ๆ repeats the phrase. Write the mark with a space before it, as the standard orthography does, and write the repetition out when the span is in doubt.

write the span out when it could be misread
before  ค่อย ๆ เดิน ช้า ๆ นะ
after   ค่อยค่อยเดิน ช้าช้านะ

both read the same here; the second
leaves the voice nothing to decide

Particles and pronouns set the register and the gender#

A Thai sentence carries its politeness in its last word and its speaker's gender in its pronoun. ค่ะ and ดิฉัน belong to a female speaker; ครับ and ผม to a male one. A script written with ครับ and read by a female voice sounds wrong before the first sentence ends. Match the line to the voice you pick on the voices page.

RegisterLineVoice
Formal, femaleยินดีต้อนรับค่ะ ดิฉันขอแนะนำบริการของเราNom Yen
Formal, maleสวัสดีครับ ผมขอแจ้งข่าวประจำวันนี้Thong Ek
Casual, maleเดี๋ยวผมส่งไฟล์ให้นะKhanom Krok

The particle does the work a style setting would do elsewhere. Write นะคะ and the read softens. Write ครับผม and it firms up. Drop the particle and the line reads as narration with no listener in the room.

Spell the female particle by its tone. ค่ะ closes a statement and carries a falling tone. คะ closes a question and follows นะ, with a high tone. ขอบคุณค่ะ and ใช่ไหมคะ are both right; the reverse spellings read with the wrong tone and a Thai listener hears the slip at once.

How long a line should be#

Short lines suit ads and prompts, because each one lands with its own stress. Narration reads better as full paragraphs of three to five sentences, where the voice can settle into a pace. One request takes up to 5,000 characters. A chapter longer than that splits at a heading or a paragraph, and a split inside a sentence is audible as a break in the read.

  • An ad line is one clause, one idea, and a particle at the end.
  • A menu prompt names the option first and the instruction second.
  • Narration is written in paragraphs, with a space at every phrase and a full stop at every sentence.
  • A list read aloud puts one item per line, with the item count written before the list.

English lines belong to the English-first voices#

A Thai voice reads a whole English sentence with a Thai accent, the way a Thai speaker would. That is right for one English word inside a Thai line and wrong for a support script written entirely in English. The roster carries English-first voices for that work; Cookie and Toast read a support greeting in the register a native speaker expects.

Note

A single line that switches language halfway is a Thai line. Give it a Thai voice, and keep the English words in Latin script.

Speed and timing#

Pace is a request option. The script never has to fake it with punctuation. The speed field runs from 0.5 to 1.5 on the voice's own rate, and it changes nothing in the charge. A meditation read sits below 1; a news bulletin sits above it. Word timestamps mark where each word starts and ends, which is what a subtitle track needs in a language that writes no spaces. The timestamps guide shows the three granularities.

Word timing suits subtitles and karaoke-style highlighting. Sentence timing suits a player that jumps between lines. Utterance timing marks the whole request and costs the least attention. Pick the coarsest one that does the job.

Common mistakes at a glance#

WrittenWhat you hearFix
รถติดทั้งเมื องTwo fragments where one word belongs.Delete the space inside the word.
โทร 020000000A quantity in the hundreds of millions.Space the digits into groups.
ประชุม 14 ก.พ.The letter names, when the month was meant.Write กุมภาพันธ์.
ส่งเมล์หาเอชอาร์Thai respellings that sound like neither language.Write email and HR in Latin script.
สวัสดีครับ read by a female voiceA male particle in a female voice.Write ค่ะ, or pick a male voice.
A 2,000-character block with no full stopOne long fall with no fresh starts.End each sentence with a full stop.

Before you press play#

  • Read the line aloud once. Where you breathed, put a space.
  • End every sentence with a full stop or a question mark.
  • Write ambiguous numbers as words, and space phone numbers into groups.
  • Expand an abbreviation when only one reading fits.
  • Keep English words in Latin script.
  • Match ครับ or ค่ะ to the voice you chose.
  • Try each line in the box on /tts, then move longer scripts to the playground, which takes 5,000 characters and returns audio you can download.
  • Developers integrating the read find the request fields in the text to speech guide and the API reference.