Foi Thongฝอยทอง
v1 + v2A narrator's voice, built to hold a listener from the first line to the last.
- Female
- Thai, English, and Mandarin Chinese
- Narrator
- foithongpaxa-tts-flash-v2
เรื่องราวทุกเรื่องมีจุดเริ่มต้น และวันนี้ ฉันจะเล่าให้คุณฟังตั้งแต่ต้นจนจบค่ะ
Cast it for#
Foi Thong reads at an even level that holds over a long piece, and it carries through a phone speaker or a car as readily as through headphones.
The product voices open bright and land quickly. This one is paced for material measured in chapters, and it is the female half of the roster's long-read range.
- Long-form narration
- Features, essays, and non-fiction where the read has to stay level for an hour.
- Explainer series
- Episodic material where every instalment has to sound like the last one.
- Course material
- Lesson narration a learner listens to twice, where a strong persona would wear.
Reach for instead
Nom YenCopy measured in seconds wants an opener's energy.
Tub Tim KrobThe same long-read range in a lower, more intimate register.
In production#
Call it from the API#
The voice field takes the id above. Every other value in this request is a Paxa TTS Flash v2 default.
- Model
- Paxa TTS Flash v2
- Per request
- 5,000 characters
- Rate
- 10 credits per 1,000 characters
- Free credits
- 100 credits, about 16 minutes
curl -X POST https://api.paxalabs.com/v1/tts \ -H "Authorization: Bearer $PAXA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "text": "เรื่องราวทุกเรื่องมีจุดเริ่มต้น และวันนี้ ฉันจะเล่าให้คุณฟังตั้งแต่ต้นจนจบค่ะ", "voice": "foithong", "model": "paxa-tts-flash-v2" }' \ --output foithong.mp3
import { writeFile } from "node:fs/promises"; const response = await fetch("https://api.paxalabs.com/v1/tts", { method: "POST", headers: { Authorization: `Bearer ${process.env.PAXA_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ text: "เรื่องราวทุกเรื่องมีจุดเริ่มต้น และวันนี้ ฉันจะเล่าให้คุณฟังตั้งแต่ต้นจนจบค่ะ", voice: "foithong", model: "paxa-tts-flash-v2", }), }); if (!response.ok) throw new Error(`TTS failed: ${response.status}`); await writeFile("foithong.mp3", Buffer.from(await response.arrayBuffer()));
import os import requests response = requests.post( "https://api.paxalabs.com/v1/tts", headers={"Authorization": f"Bearer {os.environ['PAXA_API_KEY']}"}, json={ "text": "เรื่องราวทุกเรื่องมีจุดเริ่มต้น และวันนี้ ฉันจะเล่าให้คุณฟังตั้งแต่ต้นจนจบค่ะ", "voice": "foithong", "model": "paxa-tts-flash-v2", }, ) response.raise_for_status() with open("foithong.mp3", "wb") as f: f.write(response.content)
Questions#
How does it hold up across an hour of audio?
The level stays even over long text, which is what the register exists for. Each request still caps at 5,000 characters. An hour of audio arrives as a sequence of requests or as a live stream.
Is it a formal voice?
It reads neutral. Thong Ek is the one to use when material needs the authority of a bulletin, and Panang when it needs stage polish.
Which voice pairs with it for two-narrator material?
Tub Tim Krob sits in the same long-read range in a lower, more intimate register, which makes the two a natural pair for dialogue and alternating chapters.
Hear it read your own words. New accounts start with 100 free credits. Open the playground and this voice is already selected.
Start free