สารบัญ
คู่มือถอดเสียงเป็นข้อความ
คู่มือถอดเสียงเป็นข้อความ
POST /v1/audio/transcriptions รองรับรูปแบบ OpenAI-compatible: อัปโหลดเสียงด้วย multipart/form-data หรือส่ง input_audio แบบ base64 ผ่าน JSON แล้วรับข้อความ โมเดลมี elevenlabs/scribe-v2 และ elevenlabs/scribe-v2-medical ดูรายการล่าสุดที่ GET /v1/models?output_modalities=transcription GET /v1/models ค่าเริ่มต้นจะคืนเฉพาะโมเดลข้อความ ให้เพิ่ม ?output_modalities=transcription (หรือ all) เพื่อดูรายการ
/v1/audio/transcriptionsพารามิเตอร์
| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| model | string | ใช่ | รหัสโมเดลถอดเสียง เช่น elevenlabs/scribe-v2 |
| file | file | ใช่ | ไฟล์เสียง (multipart) รองรับ wav, mp3, mp4, m4a, ogg, flac, webm, aac สูงสุด 25 MiB ไคลเอนต์ JSON ใช้ input_audio: {data: base64, format} แทนได้ |
| response_format | string | ไม่ | json (ค่าเริ่มต้น) ส่งคืน {text}; verbose_json เพิ่มภาษา ระยะเวลา และ segments/words |
| language | string | ไม่ | คำใบ้ภาษาแบบเลือกได้ เช่น en หรือ zh เว้นว่างเพื่อให้ตรวจจับอัตโนมัติ |
| prompt | string | ไม่ | ข้อความบริบทแบบเลือกได้เพื่อช่วยจำชื่อและศัพท์ ไม่ใช่ทุกโมเดลจะนำไปใช้ |
| timestamp_granularities[] | string[] | ไม่ | word และ/หรือ segment ใช้เฉพาะเมื่อ response_format=verbose_json; รูปแบบอื่นจะละเว้น ขณะนี้ยังไม่ส่งคืนเวลาระดับคำ แต่ส่งคืน segments |
รูปแบบผลลัพธ์
response_format รับเฉพาะ json หรือ verbose_json (ไม่รองรับ text, srt, vtt) ไม่รองรับ stream ระยะเวลาเสียงจำกัดตามโมเดล ค่าเริ่มต้น 60 วินาที เสียงที่ยาวกว่าจะถูกปฏิเสธก่อนประมวลผลด้วย 413 audio_too_long และไม่คิดค่าบริการ ให้แบ่งเสียงยาวเป็นช่วง
การคิดค่าบริการ
การถอดเสียงคิดตามจำนวนวินาทีของเสียง ราคาต่อวินาทีอยู่ในหน้าโมเดลที่ /models และใน GET /v1/models ที่ pricing.second; ราคาต่อนาทีเท่ากับ 60 เท่าของค่านี้ คำตอบ usage แสดงวินาทีที่คิดเงิน และ usage.cost แสดงยอดเรียกเก็บ
ตัวอย่าง
curl https://api.bazaarlink.ai/v1/audio/transcriptions \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-F model="elevenlabs/scribe-v2" \
-F file=@audio.mp3 \
-F response_format=verbose_json \
-F "timestamp_granularities[]=word"ข้อผิดพลาดที่พบบ่อย
| สถานะ | สาเหตุและวิธีแก้ |
|---|---|
| 400 | คำขอไม่ถูกต้อง: ขาด model หรือ file, เสียงว่าง, response_format ไม่ใช่ json/verbose_json, stream=true (unsupported_parameter) หรือ timestamp_granularities ไม่ใช่ word/segment |
| 401 | ไม่มีคีย์ API หรือคีย์ไม่ถูกต้อง |
| 402 | ยอดคงเหลือไม่พอ เติมเงินแล้วลองใหม่ |
| 413 | audio_too_large: เสียงหลังถอดรหัสเกิน 25 MiB audio_too_long: เสียงเกินขีดจำกัดตามโมเดล (ค่าเริ่มต้น 60 วินาที) จะถูกปฏิเสธก่อนประมวลผลและไม่คิดค่าบริการ ให้บีบอัดหรือแบ่งเสียง |
| 429 | ถึงขีดจำกัดอัตราแล้ว รอตาม Retry-After แล้วลองใหม่ |
| 502 | บริการโมเดลไม่พร้อมชั่วคราวหรือการส่งเสียงถูกขัดจังหวะ ให้ลองใหม่ คำขอที่ล้มเหลวไม่คิดค่าบริการ |
ถอดเสียง
ส่ง multipart/form-data model และ file หรือ JSON model และ input_audio:{data,format} (base64 ดิบ) รูปแบบ wav, mp3, mp4, m4a, ogg, flac, webm, aac เสียงสูงสุด 25 MiB; เนื้อหาคำขอ 50 MiB ค่า audio.transcription_max_seconds_by_model กำหนดขีดจำกัดตามโมเดล หากไม่มีจะใช้ audio.transcription_max_seconds แล้วจึงใช้ค่าเริ่มต้น 60 วินาที เสียงที่ยาวกว่าจะถูกปฏิเสธก่อนประมวลผลด้วย 413 audio_too_long และไม่คิดค่าบริการ response_format เฉพาะ json หรือ verbose_json; timestamp_granularities word/segment ต้องใช้ verbose_json ไม่รองรับ stream (400 unsupported_parameter); ใหญ่เกินไป 413 audio_too_large ละเว้น provider คิดค่าบริการตามราคาฐานข้อมูลต่อ usage.seconds หรือ token ขาเข้า/ขาออก ราคานาที = 60 × ราคาวินาที usage.cost เป็นค่าบริการลูกค้าใน USD
/v1/audio/transcriptions