เริ่มต้นใช้งาน (Quickstart)
สร้างซับไตเติลแรกของคุณภายในไม่กี่นาที — ขั้นตอนทั้งหมดมีเพียง ส่งงาน → รอสถานะ → ดาวน์โหลดผลลัพธ์
สิ่งที่ต้องมี
API key — ติดต่อทีม Loma เพื่อขอรับ API key แล้วเก็บไว้ในตัวแปรสภาพแวดล้อม
export LOMA_API_SECRET_KEY="<your-api-key>"URL ไฟล์เสียง — ไฟล์เสียงหรือวิดีโอที่เข้าถึงได้แบบสาธารณะ (HTTP/HTTPS) เช่นไฟล์ตัวอย่างนี้
https://lomafastsrt.sgp1.cdn.digitaloceanspaces.com/cancer.mp3
ขั้นตอนที่ 1 — ส่งงานถอดเสียง
เรียก POST /new-transcribe พร้อม URL ของไฟล์เสียง
curl -X POST "https://api.lomasub.ai/new-transcribe" \
-H "Authorization: Bearer $LOMA_API_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{
"source_url": "https://lomafastsrt.sgp1.cdn.digitaloceanspaces.com/cancer.mp3",
"language": "th"
}'
ระบบตอบกลับ 201 Created พร้อม job_id สำหรับติดตามงาน
{
"job_id": "0b8a4f3e-6c1d-4a9b-9f2e-7d5c3b1a8e64",
"status_url": "https://api.lomasub.ai/status?job_id=0b8a4f3e-6c1d-4a9b-9f2e-7d5c3b1a8e64",
"state": "QUEUED",
"s1_queued_ts": "2026-07-10T09:15:22.481Z"
}
ขั้นตอนที่ 2 — ตรวจสอบสถานะจนเสร็จ
เรียก GET /status ด้วย job_id ที่ได้รับ (แนะนำให้ poll ทุก ~1 วินาที)
curl "https://api.lomasub.ai/status?job_id=0b8a4f3e-6c1d-4a9b-9f2e-7d5c3b1a8e64" \
-H "Authorization: Bearer $LOMA_API_SECRET_KEY"
ค่า state จะเปลี่ยนไปตามขั้นตอนการประมวลผล เช่น QUEUED → SPLITTING → TRANSCRIBING → ALIGNING → ... → READY
เมื่อ state เป็น READY ผลลัพธ์จะมีลิงก์ดาวน์โหลดเพิ่มเข้ามา
{
"job_id": "0b8a4f3e-6c1d-4a9b-9f2e-7d5c3b1a8e64",
"state": "READY",
"audio_duration_seconds": 213.4,
"srt_url": "https://...presigned.../jobs/0b8a4f3e-.../result.srt?...",
"vtt_url": "https://...presigned.../jobs/0b8a4f3e-.../result.vtt?...",
"compact_url": "https://...presigned.../jobs/0b8a4f3e-.../result.compact.txt?..."
}
ขั้นตอนที่ 3 — ดาวน์โหลดซับไตเติล
curl -o result.srt "<srt_url จากขั้นตอนที่ 2>"
เพียงเท่านี้คุณก็ได้ไฟล์ .srt พร้อมใช้งาน 🎉
ตัวอย่างสคริปต์ Python แบบครบวงจร
ตัวอย่างนี้ใช้เฉพาะ Python standard library — ส่งงาน รอจนเสร็จ แล้วบันทึกไฟล์ .srt
import json
import os
import time
import urllib.request
API_BASE = "https://api.lomasub.ai"
API_KEY = os.environ["LOMA_API_SECRET_KEY"]
AUDIO_URL = "https://lomafastsrt.sgp1.cdn.digitaloceanspaces.com/cancer.mp3"
def call_api(path, payload=None):
url = f"{API_BASE}{path}"
data = json.dumps(payload).encode() if payload is not None else None
req = urllib.request.Request(url, data=data, method="POST" if data else "GET")
req.add_header("Authorization", f"Bearer {API_KEY}")
if data:
req.add_header("Content-Type", "application/json")
with urllib.request.urlopen(req) as resp:
return json.loads(resp.read())
# 1) ส่งงานถอดเสียง
job = call_api("/new-transcribe", {"source_url": AUDIO_URL, "language": "th"})
job_id = job["job_id"]
print("job created:", job_id)
# 2) ตรวจสอบสถานะทุก 1 วินาทีจนกว่าจะเสร็จ
while True:
status = call_api(f"/status?job_id={job_id}")
state = status["state"]
print("state:", state)
if state in ("READY", "FAILED"):
break
time.sleep(1.0)
# 3) ดาวน์โหลดผลลัพธ์
if state == "READY":
urllib.request.urlretrieve(status["srt_url"], "result.srt")
print("saved result.srt")
else:
print("job failed at:", status.get("failed_stage"), "-", status.get("error"))
เปิดตัวเลือกเสริมตอนส่งงาน
ปรับพฤติกรรมการถอดเสียงได้ผ่านฟิลด์ config เช่น เปิดการระบุผู้พูด
{
"source_url": "https://lomafastsrt.sgp1.cdn.digitaloceanspaces.com/cancer.mp3",
"language": "th",
"config": {
"speaker_diarization": true,
"srt_target_chars": 40
}
}
ดูตัวเลือกทั้งหมดได้ที่ สร้างงานถอดเสียง — POST /new-transcribe
มีไฟล์อยู่ในเครื่อง ไม่มี URL สาธารณะ? ใช้
POST /presigned-urlเพื่อขอลิงก์อัปโหลดชั่วคราวก่อน — ระบบจะตอบกลับupload_urlสำหรับPUTไฟล์ขึ้นไป และsource_urlสำหรับนำมาใช้ส่งงานในขั้นตอนที่ 1 ได้ทันที