Thai speech to text for interviews
Turn recorded interviews into Thai text with a speaker number and a second on every line. Quotes are searchable, coding starts the same day, and the recording stays the record.
What the transcript says
A user research answer
spokenตอนแรกก็ลองใช้แอปอยู่ ประมาณสองอาทิตย์ แล้วก็เลิกใช้ เพราะมันโหลดช้ามาก
writtenตอนแรกก็ลองใช้แอปอยู่ ประมาณ 2 อาทิตย์ แล้วก็เลิกใช้ เพราะมันโหลดช้ามาก
The spoken convention keeps the answer as said, which is what a verbatim quote needs. The written one puts the duration in digits.
A source on the record
spokenงบประมาณปีนี้ตั้งไว้ที่ หนึ่งร้อยยี่สิบล้านบาท และจะเริ่มเบิกจ่ายในเดือน ตุลาคม
writtenงบประมาณปีนี้ตั้งไว้ที่ 120 ล้านบาท และจะเริ่มเบิกจ่ายในเดือน ตุลาคม
A reporter quotes the spoken line and files the written one. Both carry the second the figure was said.
A candidate mid-answer
spokenที่ทีมเก่าผมดูแล pipeline ของ data ทั้งหมด ประมาณ สิบห้า ตัว
writtenที่ทีมเก่าผมดูแล pipeline ของ data ทั้งหมด ประมาณ 15 ตัว
The English terms stay English under both conventions. A vocabulary of role and tool names keeps the spelling consistent across candidates.
Every transcript pair on this page is an authored illustration of what the convention option changes, re-checked against live output before publish. The Speech-to-Text page carries the model's own witnessed transcripts of a real recording, with the capture date.
How it fits a study
A research team records thirty interviews and then spends the next month typing them. A newsroom records an hour with a source and quotes four sentences from memory. A hiring panel records every candidate and compares them by impression. Transcription moves the work from the ear to the page. Each interview becomes text the moment it ends, with every word carrying its second and each turn carrying a speaker number. A quote is found by search and checked against the recording at the moment it was said. Coding begins on day one. The transcript keeps the language as spoken. An English term inside a Thai answer arrives intact.
- Send each recording with diarization onPost the file as it comes off the call, up to 60 minutes. Speaker turns come from one pass over the recording and need a file under 9 minutes. Cut a long interview at its pauses and send each part with diarization on. The length is read before the charge. A file the model cannot read is refused before it.
- Ask for word timestampsEvery word carries its second. A quote in the report links to the moment. Keep the spoken convention for verbatim quotes and the written one for figures.
- Send the study's vocabularyProduct names, place names, and the terms the interview guide uses, up to 50. The spelling stays the same across every transcript.
What every interview becomes
- 0 and 1
- Speakers
- With diarization on, each turn carries a speaker number, counted from 0 by first appearance. The interviewer is the same number in every file they open, and the answers are the other one.
- Quotes with a second
- Ask for word timestamps and every word carries its start and end. A quote in the report links to the moment it was said. A reviewer plays that moment and nothing else.
- Coding on day one
- Themes are marked on text. The transcript is ready the same day the interview is recorded, and the codebook grows while the study is still running.
- The recording stays the record
- The transcript is the working copy. When a line matters, the second beside it opens the audio, and the words are checked against the voice.
The model writes what was said. Themes, quotes, and scores are yours to mark on the text.
A study, week by week
Word timestamps and speaker turns ride the same request. Neither changes the price.
What a study costs
| Workload | Audio | Credits |
|---|---|---|
| One interview, 45 minutes | 45 min | 375 |
| Ten interviews | 7.5 h | 3,750 |
| A study, 30 interviews | 11,250 credits | |
8.33 credits a minute of audio, billed by the millisecond. 22.5 hours of interviews at that rate. Speaker turns and word timestamps cost nothing extra.
For developers
The snippets send one recording with diarization on and read the transcript, the speaker turns, and the credits charged from the response.
AUDIO=$(base64 < meeting.m4a | tr -d '\n')
curl -X POST https://api.paxalabs.com/v1/stt \
--max-time 300 \
-H "Authorization: Bearer $PAXA_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"audio\": \"$AUDIO\", \"model\": \"paxa-stt-lite-v1-preview\", \"diarization\": true}"import { readFile } from "node:fs/promises";
const audio = (await readFile("meeting.m4a")).toString("base64");
const response = await fetch("https://api.paxalabs.com/v1/stt", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.PAXA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ audio, model: "paxa-stt-lite-v1-preview" }),
// A long recording can run for minutes; give it room.
signal: AbortSignal.timeout(300_000),
});
if (!response.ok) throw new Error(`Transcription failed: ${response.status}`);
const { text, usage } = await response.json();
console.log(text, `${usage.credits} credits`);import base64
import os
import requests
with open("meeting.m4a", "rb") as file:
audio = base64.b64encode(file.read()).decode()
response = requests.post(
"https://api.paxalabs.com/v1/stt",
headers={"Authorization": f"Bearer {os.environ['PAXA_API_KEY']}"},
json={"audio": audio, "model": "paxa-stt-lite-v1-preview"},
# A long recording can run for minutes; give it room.
timeout=300,
)
response.raise_for_status()
body = response.json()
print(body["text"], body["usage"]["credits"], "credits")What the model was built to hear
Paxa STT Lite transcribes Thai and English, including answers that switch language halfway. It numbers speaker turns on request and writes no name. It publishes no accuracy figure until the evaluation method is published beside it.
Common questions
- Can the transcript tell the interviewer from the participant?
- It numbers them. Each turn carries a speaker number, counted from 0 by first appearance. In a one-to-one interview the interviewer is usually the first voice, and the file's own metadata says who that is.
- What about an interview longer than an hour?
- One request takes up to 60 minutes, and under 9 with speaker turns on. Split a longer recording at a pause, send the parts in parallel, and offset the seconds of each part by its start time. Each part numbers its speakers from 0. Match the numbers across parts by the order the voices come in.
- Do participants' recordings stay private?
- The transcript returns to you and the usage record keeps counts and settings only. Inputs and outputs are kept, without account identity, to train the models. The Privacy Policy states it.
- What does a failed transcription cost?
- Nothing. The charge is taken first and refunded automatically when the request fails, and a recording the model cannot read is refused before the charge.
Start with free credits
Sign in with Google, GitHub, or Hugging Face and spend 100 one-time free credits on your own text.