สร้างงานถอดเสียง — POST /new-transcribe

สร้างงานถอดเสียงใหม่จาก URL ของไฟล์เสียงหรือวิดีโอ ระบบจะตอบกลับ job_id สำหรับติดตามสถานะ แล้วประมวลผลงานในเบื้องหลัง

POST https://api.lomasub.ai/new-transcribe

Headers

Header ค่า จำเป็น
Authorization Bearer <API_KEY>
Content-Type application/json

Request Body

ฟิลด์ ชนิด จำเป็น คำอธิบาย
source_url string (URL) URL แบบสาธารณะของไฟล์เสียง/วิดีโอ ระบบจะตรวจสอบว่าเข้าถึงได้ก่อนรับงาน
language string รหัสภาษาของเสียง เช่น "th" (แนะนำให้ระบุเสมอ)
config object ตัวเลือกปรับพฤติกรรมการถอดเสียง ดูตารางด้านล่าง ค่าที่ไม่ระบุจะใช้ค่าเริ่มต้น

ตัวอย่าง Request

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",
    "config": {
      "speaker_diarization": true
    }
  }'

ตัวเลือกใน config

ทุกฟิลด์เป็นตัวเลือกเสริม — ระบบจะบันทึกค่าเหล่านี้ไว้กับงาน (config snapshot) ตั้งแต่ตอนสร้าง

การสร้างซับไตเติล

ฟิลด์ ชนิด ค่าเริ่มต้น คำอธิบาย
srt_target_chars int 40 จำนวนตัวอักษรสูงสุดต่อบรรทัดซับไตเติล (ยกเว้นกรณีคำเดียวยาวเกิน)
min_srt_duration_ms int 2000 ระยะเวลาแสดงผลขั้นต่ำของแต่ละบรรทัด (มิลลิวินาที)
shift_ending bool true ขยับเวลาสิ้นสุดของบรรทัดให้อ่านทัน
forcealigner_level string "default" ระดับการจัดตำแหน่งเวลาของคำ — "none" ปิดการจัดตำแหน่งละเอียด (ใช้เวลาแบบหยาบ), "default" เปิดใช้งานปกติ, "llmsplitting" เพิ่มการตัดประโยคด้วยโมเดลภาษาและจัดตำแหน่งเวลารอบที่สอง
revise_srt bool false เปิดขั้นตอนขัดเกลาข้อความซับไตเติลเพิ่มเติม

การรวมบรรทัดสั้น

ฟิลด์ ชนิด ค่าเริ่มต้น คำอธิบาย
merge_srt_if_char_shorter int 15 รวมบรรทัดเมื่อข้อความสั้นกว่าจำนวนตัวอักษรนี้ (ต้องเข้าเงื่อนไขระยะเวลาด้วย)
merge_srt_if_duration_shorter float 1.2 รวมบรรทัดเมื่อระยะเวลาสั้นกว่านี้ (วินาที)
merge_srt_duration_distance_limit float 1.0 ไม่รวมกับบรรทัดข้างเคียงที่ห่างเกินนี้ (วินาที)
merge_srt_char_limit int 60 ไม่รวมถ้าข้อความหลังรวมยาวเกินจำนวนตัวอักษรนี้

การแบ่งช่วงเสียง (VAD)

ฟิลด์ ชนิด ค่าเริ่มต้น คำอธิบาย
min_vad_duration_seconds float 5.0 ความยาวช่วงเสียงขั้นต่ำ (วินาที)
max_vad_duration_seconds float 25.0 ความยาวช่วงเสียงสูงสุด (วินาที)
vad_threshold float 0.4 ค่าความเชื่อมั่นขั้นต่ำในการถือว่าเป็นเสียงพูด (0.0–1.0)
vad_segment_seconds float 900.0 ขนาดช่วงที่ใช้สแกนเสียงพูดแบบขนาน (วินาที)

การระบุผู้พูด (Speaker Diarization)

ฟิลด์ ชนิด ค่าเริ่มต้น คำอธิบาย
speaker_diarization bool false เปิดการจำแนกและติดป้ายชื่อผู้พูดในซับไตเติล
speaker_local_distance_threshold float 0.60 เกณฑ์ระยะห่างการจัดกลุ่มผู้พูดภายในกลุ่มย่อย (0.0–2.0)
speaker_merge_distance_threshold float 0.35 เกณฑ์ระยะห่างการรวมกลุ่มผู้พูดข้ามกลุ่มย่อย (0.0–2.0)
speaker_clustering_drop_dialogue_percentile float 0.02 ไม่ติดป้ายกลุ่มผู้พูดที่มีสัดส่วนบทพูดน้อยกว่าค่านี้
agglomeration_min_appear int 5 จำนวนบทพูดขั้นต่ำของกลุ่มผู้พูดที่จะได้รับป้ายชื่อ
agglomolation_group_size int 300 ขนาดกลุ่มย่อยสำหรับการจัดกลุ่มแบบแบ่งช่วงเวลา (0 = จัดกลุ่มรอบเดียวทั้งงาน)
revise_speakername bool false ขัดเกลาป้ายชื่อผู้พูด — ต้องเปิด revise_srt และ speaker_diarization พร้อมกัน

Response — 201 Created

{
  "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"
}
ฟิลด์ ชนิด คำอธิบาย
job_id string (UUID) รหัสงานสำหรับติดตามสถานะ
status_url string (URL) URL สำเร็จรูปสำหรับเรียกตรวจสอบสถานะ
state string สถานะเริ่มต้นของงาน เป็น QUEUED เสมอ
s1_queued_ts string (timestamp) เวลาที่งานเข้าคิว

ข้อผิดพลาดที่อาจพบ

สถานะ สาเหตุ ตัวอย่างข้อความ
400 Bad Request source_url เข้าถึงไม่ได้ (ระบบทดสอบ HEAD/GET ก่อนรับงาน) "source_url is not reachable"
401 Unauthorized ไม่มีหรือ API key ไม่ถูกต้อง
422 Unprocessable Entity รูปแบบ body หรือค่าใน config ไม่ถูกต้อง / ใช้ชื่อฟิลด์เก่าที่ถูกเปลี่ยนชื่อแล้ว ระบุฟิลด์ที่ผิดพร้อมคำแนะนำ

ชื่อฟิลด์เก่าที่เลิกใช้แล้ว: min_charssrt_target_chars, min_vad_prob_to_transcribevad_threshold, parallel_vad_segment_secondsvad_segment_seconds, speaker_clustering_ignore_percentspeaker_clustering_drop_dialogue_percentile — หากส่งชื่อเก่าระบบจะตอบ 422 พร้อมแจ้งชื่อใหม่

ขั้นตอนถัดไป: นำ job_id ไปติดตามความคืบหน้าที่ ตรวจสอบสถานะงาน — GET /status

results matching ""

    No results matching ""