Thai speech to text for voice notes
Turn the voice notes a field team sends into Thai text within the hour. Orders, amounts, and follow-ups are filed by search, and the back office stops retyping.
What the transcript says
A sales visit
spokenร้านป้าแดงสั่งเพิ่ม สองลัง ส่งวันจันทร์ ยอดค้างเดือนก่อน สามพันห้า ยังไม่จ่ายนะ
writtenร้านป้าแดงสั่งเพิ่ม 2 ลัง ส่งวันจันทร์ ยอดค้างเดือนก่อน 3,500 ยังไม่จ่ายนะ
The written convention puts the quantity and the balance in digits. An order rule reads the first and a collections rule reads the second.
A service call
spokenเปลี่ยน compressor เรียบร้อย แต่ตัว thermostat ยังไม่มีของ นัดกลับมาอีก สองอาทิตย์
writtenเปลี่ยน compressor เรียบร้อย แต่ตัว thermostat ยังไม่มีของ นัดกลับมาอีก 2 อาทิตย์
The part names stay English under both conventions. A vocabulary of part names keeps the spelling consistent across the whole team.
A claim visit
spokenรถลูกค้าเสียหายด้านหน้าซ้าย ประเมินเบื้องต้น หนึ่งหมื่นสองพันบาท ถ่ายรูปไว้แล้ว หกรูป
writtenรถลูกค้าเสียหายด้านหน้าซ้าย ประเมินเบื้องต้น 12,000 บาท ถ่ายรูปไว้แล้ว 6 รูป
The estimate and the photo count are digits in the written line. The claim record takes both without anyone retyping them.
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 field team
A sales rep leaves a customer's shop and speaks a forty-second note into the phone before driving on. A technician records what was fixed and what part is still missing. An insurance agent dictates a claim visit from the car park. The notes reach a group chat, and someone in the office listens to each one and types it up. Transcription removes the retyping. Each note becomes text within seconds of being sent. An amount, a date, and a customer's name are in the text, and a rule files the note to the right account. A search across a month of notes finds every mention of one product. The recording is kept beside the text for the day a detail is disputed.
- Forward each note as it arrivesPost the audio file the messaging app already saves, any length up to 60 minutes. The language is detected from the note itself.
- Ask for the written conventionQuantities, amounts, and dates arrive as digits. The rules that file them stay simple. Add the clean style for a note that reads at a glance.
- Send the team's vocabularyProduct names, part names, and the shops on the route, up to 50 terms. The spelling stays the same across every rep's notes.
A rep's day, note by note
Each note is one request. The length is read from the file before the charge, and a note the model cannot read costs nothing.
What every note becomes
- A filed record
- The customer's name and the figures are in the text. A rule you write posts the note to the account it belongs to, with the recording attached.
- A searchable month
- Every note from every rep is text in one index. A search for a product, a shop, or a word finds every mention across the team.
- A cleaner read
- The clean style drops the fillers a note spoken from the road carries, for a text that reads at a glance. Keep verbatim where every word matters.
- The recording, kept
- The audio sits beside the text. When a figure is questioned, the second it was said is one click away.
The model writes what was said. Filing, alerts, and search are rules you run over the text.
What a team's month costs
| Workload | Audio | Credits |
|---|---|---|
| One note, 40 seconds | 40 s | 5.56 |
| A day, 30 notes | 20 min | 166.8 |
| A month, 660 notes | 3,669.6 credits | |
8.33 credits a minute of audio, billed by the millisecond. 7.3 hours of notes over 22 working days at that rate. The transcript options change nothing.
For developers
The snippets send one recording with a vocabulary and read the transcript 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\", \"language\": \"th\", \"vocabulary\": [\"Paxa Labs\", \"quarterly review\"]}"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 a Thai note that names its parts in English. It detects the language of each recording on its own. It publishes no accuracy figure until the evaluation method is published beside it.
Common questions
- Are short notes worth sending one at a time?
- Yes. Each request bills by the recording's exact length, with a floor of a tenth of a credit. A 40-second note costs 5.56 credits, and batching changes nothing.
- What if a rep speaks Thai and English in one note?
- The transcript keeps both as spoken. A part name in English inside a Thai sentence stays English, and the language hint can be left out.
- Can the office trust the figures?
- The figures are what was said, in digits under the written convention. The recording stays beside the text, and the second a figure was said opens the audio for a check.
- 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.