
Massamanมัสมั่น
The low end of the roster, for copy that has to land heavy.
Male · Thai · Leading man · 0:03massaman
ในเมืองที่ไม่เคยหลับ มีเรื่องราวหนึ่งรอให้ใครสักคนกล้าเล่ามันออกมา
The clip is written as a trailer line. Listen to how far the voice drops through กล้าเล่ามันออกมา.
Massaman is the voice a trailer reaches for. It sits low, moves slowly, and leaves space around a line so the line has somewhere to land.
That makes it a specialist. The register is written for copy measured in seconds, and the roster keeps separate voices for the distances it does not cover.
Cast it for#
- Trailers and teasers
- Film, series, and game copy where the read has to carry more than the words do.
- Title sequences
- Cold opens and stingers that run under ten seconds and set the register for everything after.
- High-stakes announcements
- Launch films and keynote lines where a neutral read would undersell the moment.
Reach for instead
In production#
- Announcements
Launch and campaign films.
- Creators
Trailers and channel title sequences.
- Publishers
Dramatic feature openers.
Call it from the API#
The voice field takes the id above. Every other value in this request is a Paxa TTS Flash default.
curl -X POST https://api.paxalabs.com/v1/tts \
-H "Authorization: Bearer $PAXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "ในเมืองที่ไม่เคยหลับ มีเรื่องราวหนึ่งรอให้ใครสักคนกล้าเล่ามันออกมา",
"voice": "massaman",
"model": "paxa-tts-flash-v1"
}' \
--output massaman.mp3import { 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: "massaman",
model: "paxa-tts-flash-v1",
}),
});
if (!response.ok) throw new Error(`TTS failed: ${response.status}`);
await writeFile("massaman.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": "massaman", "model": "paxa-tts-flash-v1"},
)
response.raise_for_status()
with open("massaman.mp3", "wb") as f:
f.write(response.content)- Model
- Paxa TTS Flash
- Per request
- 5,000 characters
- Rate
- 15 credits per 1,000 characters
- Free credits
- 100 credits, about 9 minutes
Questions#
- Can it narrate long material?
- It is built for lines measured in seconds. Across a chapter the low register starts to flatten, and Khanom Krok or Tako carry that distance better.
- How is it different from Panang?
- Panang is theatrical in the stage sense, with articulation that carries to the back of a room. Massaman is cinematic, sitting lower and moving slower.
- Is there an English equivalent?
- The Thai voices read English words inside Thai text. For copy written entirely in English, Latte covers the same polished register.
Hear it read your own words.
New accounts start with 100 free credits. Open the playground and this voice is already selected.