All use cases

Thai audio novels and serialized fiction

Voice a serialized Thai novel episode by episode, with a different catalog voice for each character, billed by the characters in the chapter you publish this week.

Ideas to try

Open in the playground
Open in the playground
Open in the playground
Open in the playground

Every card plays a real clip generated from its exact script with Nom Yen. Open one in the playground to make it say anything.

How an episode becomes audio

You finish a chapter on Monday and it goes up on Thursday. That is the shape of Thai web fiction, and Tunwalai, readAwrite, and Fictionlog all sell it by the episode. Your readers have been asking for audio for a year, and the reason they do not have it is not that you never considered it. It is that a voice cast has to be booked, and a schedule like yours cannot wait on anyone. Meanwhile the writing itself is mostly dialogue, two or three characters trading lines down the page, which is exactly the material that gets hard to follow when one narrator reads all of it. Casting from a catalog answers both. Each character keeps a voice id, an episode is one batch, and the batch runs the same week you wrote the chapter. A reader who used to save your update for the evening now hears it on the way to work.

Sources:Tunwalai(opens in a new tab)readAwrite(opens in a new tab)Fictionlog(opens in a new tab)

  1. Split the chapter by speakerNarration and each character's dialogue become separate spans. A span longer than the model ceiling splits again at a sentence boundary.
  2. Render the spans as a batchEach span is one request carrying that character's voice id. Spans return as MP3 and join in order into the episode track, and a span up to 5,000 characters is a single request.
  3. Publish, then patch a lineA corrected line is re-rendered on its own and swapped into the track. The rest of the episode is untouched, and so is the rest of the season.

A serial, priced by the episode

RunCharactersCreditsCost
One 12-minute episode7,290109.35$0.11
A season of 20145,8002,187$2.19
A 120-episode novel, voiced end to endabout $13.12

Computed at 608 characters per minute of speech at the flat rate. A cast changes which voice reads a line and not what the line costs.

A week in a serial's life

MonThe chapter is writtenThe author finishes the episode and marks who says what. Attribution is the only structure the pipeline needs.
TueThe cast is appliedEach speaker maps to a voice id held in the series file. Narration takes one voice and never borrows a character's.
WedThe episode rendersOne request per span of speech, run as a batch. A twelve-minute episode is a few hundred requests and finishes unattended.
ThuA line is fixedAn edited line re-renders on its own, in the same voice, and costs the characters that changed.

The schedule is the point: a cast that has to be booked cannot keep a weekly release, and a voice id can.

The series file a cast lives in

series.json
{
  "title": "เงาในสายฝน",
  "narrator": "foithong",
  "cast": {
    "ณิชา":   "nomyen",
    "ธาวิน":  "massaman",
    "คุณยาย": "tako",
    "เด็กชาย": "lukchup"
  },
  "format": "mp3",
  "model": "paxa-tts-flash-v1"
}

Five voice ids and a model, committed beside the manuscript. Nothing here expires, so episode 120 is cast the same way episode 1 was.

For developers

The Python and TypeScript quickstarts post one span and write the MP3 a batch collects. The options request shows the voice, model, and format fields a series pins in its cast file.

import os
import requests

response = requests.post(
    "https://api.paxalabs.com/v1/tts",
    headers={"Authorization": f"Bearer {os.environ['PAXA_API_KEY']}"},
    json={"text": "สวัสดีครับ ยินดีต้อนรับสู่ Paxa Labs", "voice": "khanomkrok", "model": "paxa-tts-flash-v1"},
)
response.raise_for_status()

with open("speech.mp3", "wb") as f:
    f.write(response.content)

Full API reference

Hear the voices

  • Foi ThongFemale0:05

    Clear, captivating narrator for long reads and explainers.

    เรื่องราวทุกเรื่องมีจุดเริ่มต้น และวันนี้ ฉันจะเล่าให้คุณฟังตั้งแต่ต้นจนจบค่ะ

  • Khanom KrokMale0:03

    Calm, unhurried elder voice and the roster's male lead: documentary, heritage storytelling, and narration.

    สมัยผมยังหนุ่ม แถวนี้ยังเป็นทุ่งนา เดินไปตลาดทีหนึ่งก็ค่อนวันแล้วครับ

  • Nom YenFemale0:06

    Bright, energetic voice and the roster's female lead: promos, social clips, and everyday product speech.

    ยินดีต้อนรับสู่ Paxa Labs ค่ะ เสียงภาษาไทยที่สลับเป็น English ได้กลางประโยค อย่างเป็นธรรมชาติ

  • TakoFemale0:05

    Friendly young narrator for audiobooks, recaps, and explainers.

    ยามเช้าในกรุงเทพฯ แสงแดดอ่อน ๆ ทาบลงบนถนนที่เริ่มคึกคัก

A few of the 26 production voices, generated from the API with the published voice ids. The full roster plays on the Text-to-Speech page.

Dialogue is the hard part of Thai fiction

Thai prose runs without spaces between words, and a novel's dialogue leans on particles and pronouns to say who is speaking and how they stand to each other. Paxa TTS Flash reads tone from spelling the way a literate reader does, and holds one delivery across a whole series, which is what lets a cast stay recognisable from the first episode to the last.

Common questions

How many voices can one novel use?
Any of the catalog's 26, as many as the story needs. A cast is a mapping from speaker name to voice id, so adding a character in episode 40 is a line in that file.
Does a character keep the same voice all season?
Yes. A voice is a fixed id, and the same id returns the same voice on the last episode as on the first. Nothing drifts between runs.
What does one episode cost?
About $0.11 for 12 minutes of finished audio, billed by the characters in the chapter. A patched line is billed the same way, for the characters that changed.
Can it read a chapter that mixes Thai and English?
Yes, in one voice. An English name or phrase inside a Thai sentence stays in the same speaker's delivery.
Can we publish and sell the audio?
Output made on free credits is for personal use and evaluation. Once you buy a plan or credits, generated output becomes yours for any use, including commercial publication, and that covers output generated before the purchase. The rights in the underlying story remain yours to clear.

Start with free credits

Sign in with Google, GitHub, or Hugging Face and spend 100 one-time free credits on your own text.