สารบัญ
คู่มือสังเคราะห์เสียงพูด (TTS)
คู่มือสังเคราะห์เสียงพูด (TTS)
POST /v1/audio/speech รองรับรูปแบบ OpenAI-compatible: ส่ง JSON แล้วรับไฟล์เสียงเป็นข้อมูลไบนารี กลุ่ม ElevenLabs มี elevenlabs/eleven-v4, eleven-v4-turbo, eleven-v3, eleven-v3-conversational, eleven-multilingual-v2, eleven-flash-v2.5, eleven-flash-v2, eleven-turbo-v2.5, eleven-turbo-v2 ดูรายการล่าสุดที่ GET /v1/models?output_modalities=speech GET /v1/models ค่าเริ่มต้นจะคืนเฉพาะโมเดลข้อความ ให้เพิ่ม ?output_modalities=speech (หรือ all) เพื่อดูรายการ
/v1/audio/speechพารามิเตอร์
| พารามิเตอร์ | ชนิด | จำเป็น | คำอธิบาย |
|---|---|---|---|
| model | string | ใช่ | รหัสโมเดลเสียงพูด เช่น elevenlabs/eleven-flash-v2.5 |
| input | string | ใช่ | ข้อความที่จะสังเคราะห์: สูงสุด 4,096 อักขระต่อคำขอ (10,000 สำหรับ elevenlabs/eleven-v4 และ eleven-v4-turbo) หากยาวกว่านั้นให้แบ่งเป็นหลายคำขอ |
| voice | string | ใช่ | เสียงที่จะใช้ รูปแบบขึ้นอยู่กับโมเดล ดูกฎการใช้เสียงด้านล่าง |
| response_format | string | ไม่ | mp3 (ค่าเริ่มต้น) หรือ pcm API รับ opus, aac, flac และ wav แต่โมเดล ElevenLabs ปฏิเสธด้วย 400 ในขณะนี้ |
| speed | number | ไม่ | ความเร็วเสียงพูดตั้งแต่ 0.25 ถึง 4.0 ไม่ใช่ทุกโมเดลจะนำไปใช้ |
| instructions | string | ไม่ | คำสั่งกำหนดสไตล์เสียง ไม่ใช่ทุกโมเดลจะนำไปใช้ |
| stability | number | ไม่ | ความคงที่ของเสียง 0–1 (ค่าเริ่มต้น 0.5) ยิ่งต่ำยิ่งมีอารมณ์ ยิ่งสูงยิ่งเรียบ มีผลกับโมเดล elevenlabs/* เมื่อคำขอถูกให้บริการผ่านเส้นทางเสียงโดยตรงของเรา เฮดเดอร์ตอบกลับ X-Voice-Settings จะบอกว่า applied หรือ ignored |
| similarity_boost | number | ไม่ | ความคล้ายกับเสียงต้นฉบับ 0–1 (ค่าเริ่มต้น 0.75) Eleven v3 ไม่ใช้ค่านี้ |
| style | number | ไม่ | ความเน้นสไตล์ 0–1 (ค่าเริ่มต้น 0) ค่าเกิน 0 ทำให้ล่าช้าขึ้น Eleven v4 ไม่ใช้ค่านี้ |
| use_speaker_boost | boolean | ไม่ | เพิ่มความคล้ายกับผู้พูดต้นฉบับ (ค่าเริ่มต้น true) ทำให้ล่าช้าเล็กน้อย |
| clone_strength | number | ไม่ | ความแรงของการโคลน 0–1 (แนะนำ 0 สำหรับเสียงส่วนใหญ่) ใช้ได้เฉพาะเสียงโคลนระดับมืออาชีพของคุณเอง (voice_…) ที่ฝึกสำหรับ Eleven v4 |
| language_code | string | ไม่ | รหัสภาษาตัวพิมพ์เล็กสองตัวอักษร (ISO 639-1) เช่น ar, ja, en เพื่อกำหนดภาษาที่อ่าน โมเดล multilingual-v2 ไม่ใช้ค่านี้ |
| audio_effects | object | ไม่ | ออบเจ็กต์เอฟเฟกต์เสียงแบบเลือกได้: filter_preset_id (ฟิลเตอร์ เช่น phone, old_radio), environment_id (พื้นที่เสียงก้อง เช่น small_room, hall), background_noise_id (เช่น cafe), distance (0–1), send_level (ปริมาณเสียงก้อง 0–1) และ pan (−1…1) ID ใช้ตัวพิมพ์เล็ก ตัวเลข และขีดล่างเท่านั้น ไม่คิดค่าบริการเพิ่ม เสียงก้องหรือ pan ที่ไม่เท่ากับ 0 จะได้เสียงสเตอริโอ และใช้ร่วมกับเอาต์พุต pcm ไม่ได้ |
การตั้งค่าเสียงทั้งเจ็ดข้างบนเป็นตัวเลือกทั้งหมด หากไม่ส่งก็ไม่มีอะไรเปลี่ยน ค่านอกช่วงจะได้ 400 และจะไม่ถูกส่งหรือคิดเงิน เฮดเดอร์ตอบกลับ X-Voice-Settings บอกว่าการตั้งค่าของคุณถูกใช้หรือไม่: applied = ใช้แล้ว; ignored = เส้นทางสำรองตอบกลับ จึงไม่ได้ใช้การตั้งค่าของคุณ (ยังสร้างเสียงได้ตามปกติ); ไม่มีเฮดเดอร์ = คุณไม่ได้ส่งการตั้งค่าเสียง ตัวอย่าง: stability 0 อ่านมีอารมณ์มากขึ้น 1 อ่านเรียบขึ้น
กฎการใช้เสียง
โมเดล ElevenLabs (elevenlabs/…) รับชื่อเสียงต่อไปนี้ชื่อใดชื่อหนึ่ง (ไม่แยกตัวพิมพ์เล็กใหญ่): george, sarah, adam, alice, bella, bill, brian, callum, charlie, chris, daniel, eric, harry, jessica, laura, liam, lily, matilda, river, roger, will โมเดล ElevenLabs เว้น voice ได้ (ค่าเริ่มต้น george) ค่าอื่นจะได้ 400 invalid_voice เสียงที่กำหนดเองของคุณ (voice_…) อธิบายไว้ในหัวข้อ เสียงที่กำหนดเอง ด้านล่าง
ชื่อเสียงแบบ OpenAI-style เช่น alloy, echo หรือ nova ใช้ได้เฉพาะโมเดลที่ระบุชื่อเหล่านี้ ตรวจสอบเสียงในหน้าโมเดล
เสียงที่กำหนดเอง (โคลน) กำลังเปิดให้ใช้เป็นขั้นตอน: ดูหัวข้อ «เสียงที่กำหนดเอง» ด้านล่าง (POST /v1/voices) จนกว่าจะเปิดให้บัญชีของคุณ ให้ใช้ชื่อพรีเซ็ต 21 ชื่อด้านบนหรือ voice ID สาธารณะ
รายการเสียงที่มีให้
ตั้งค่า voice เป็นชื่อใดชื่อหนึ่งด้านล่าง (ตัวพิมพ์เล็ก) แต่ละเสียงมีคลิปตัวอย่างสั้น ๆ ของเราเอง และ GET /api/v1/audio/voices จะคืนรายการทั้งหมด (เพศ ช่วงอายุ สำเนียง สไตล์ และ URL ตัวอย่าง)
?lang= (en, zh-TW, zh-CN; ค่าเริ่มต้นตาม Accept-Language) กำหนดเฉพาะภาษาของ description ส่วน URL ตัวอย่างไม่เปลี่ยนตามพารามิเตอร์: preview_urls.en (เหมือน preview_url) คือคลิปภาษาอังกฤษ และ preview_urls.zh (เหมือน preview_url_zh) คือคลิปภาษาจีน
| เสียง | คำอธิบาย | ฟังตัวอย่าง |
|---|---|---|
| george | Male, middle-aged, British accent. Mature and steady, suited to narration and storytelling. | |
| sarah | Female, young adult, American accent. Professional and clear, suited to broadcast-style reading. | |
| adam | Male, middle-aged, American accent. Everyday and approachable, suited to short social videos. | |
| alice | Female, middle-aged, British accent. Professional and informative, suited to explainers and teaching. | |
| bella | Female, middle-aged, American accent. Professional and informative, suited to explainers and teaching. | |
| bill | Male, senior, American accent. Crisp and direct, suited to advertising voice-overs. | |
| brian | Male, middle-aged, American accent. Polished and refined, suited to social and brand content. | |
| callum | Male, middle-aged, American accent. Expressive, suited to characters and animation. | |
| charlie | Male, young adult, Australian accent. Energetic and lively, suited to conversation. | |
| chris | Male, middle-aged, American accent. Relaxed and casual, suited to conversation. | |
| daniel | Male, middle-aged, British accent. Formal and measured, suited to news-style and educational reading. | |
| eric | Male, middle-aged, American accent. Polished and warm, suited to conversation. | |
| harry | Male, young adult, American accent. Rough and gritty, suited to character voices. | |
| jessica | Female, young adult, American accent. Bright and cute, suited to conversation. | |
| laura | Female, young adult, American accent. Playful with attitude, suited to social content. | |
| liam | Male, young adult, American accent. Confident and upbeat, suited to social content. | |
| lily | Female, middle-aged, British accent. Confident and clear, suited to explainers and teaching. | |
| matilda | Female, middle-aged, American accent. Upbeat and friendly, suited to explainers and teaching. | |
| river | Neutral voice, middle-aged, American accent. Calm and even, suited to conversation. | |
| roger | Male, middle-aged, American accent. Polished and confident, suited to conversation. | |
| will | Male, young adult, American accent. Laid-back and easygoing, suited to conversation. |
แท็กอารมณ์และท่าทาง (audio tags)
เขียนแท็กในวงเล็บเหลี่ยมไว้ใน input ได้โดยตรง เช่น [laughs], [whispers], [excited], [sighs], [crying], [curious] หรือ [softly] แท็กจะถูกส่งให้โมเดลตามที่พิมพ์ทุกประการ และกำหนดวิธีแสดงถ้อยคำที่ตามมา แม้ข้อความจะเป็นภาษาไทย ให้คงแท็กเป็นภาษาอังกฤษ
curl https://api.bazaarlink.ai/v1/audio/speech \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"elevenlabs/eleven-v3","input":"[laughs] That was actually funny. [whispers] Do not tell anyone.","voice":"george","response_format":"mp3"}' \
--output audio-tags.mp3รองรับโดย elevenlabs/eleven-v3 และกลุ่ม elevenlabs/eleven-v4 โมเดลเสียงอื่นไม่ตีความแท็กและอาจอ่านข้อความในวงเล็บออกเสียง ควรลองกับประโยคสั้น ๆ ก่อน
แท็กนับเป็นอักขระของ input และคิดเงินเหมือนข้อความส่วนอื่น
รูปแบบผลลัพธ์
หากไม่ใส่ response_format ค่าเริ่มต้นคือ mp3 (Content-Type audio/mpeg) และ pcm (audio/pcm, PCM 16 บิตดิบ) ก็ใช้ได้ API รับ opus, aac, flac และ wav แต่โมเดล ElevenLabs ปฏิเสธด้วย 400 ในขณะนี้ บันทึกไฟล์ตามส่วนหัว Content-Type ของการตอบกลับ
การคิดค่าบริการ
การสังเคราะห์เสียงคิดตามจำนวนอักขระอินพุต ราคาต่ออักขระอยู่ในหน้าโมเดลที่ /models และใน GET /v1/models ที่ pricing.character หน้าโมเดลแสดงราคาต่อล้านอักขระ
ตัวอย่าง
curl https://api.bazaarlink.ai/v1/audio/speech \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"elevenlabs/eleven-flash-v2.5","input":"Hello from BazaarLink.","voice":"george","response_format":"mp3"}' \
--output speech.mp3ข้อผิดพลาดที่พบบ่อย
| สถานะ | สาเหตุและวิธีแก้ |
|---|---|
| 400 | คำขอไม่ถูกต้อง: ขาด model, input หรือ voice; input เกิน 4,096 อักขระ; speed อยู่นอก 0.25–4.0; response_format ไม่รองรับ; Unknown voice; unknown_model (ตรวจสอบ ID ที่ /models) |
| 401 | ไม่มีคีย์ API หรือคีย์ไม่ถูกต้อง ส่ง Authorization: Bearer พร้อมคีย์ BazaarLink |
| 402 | ยอดคงเหลือไม่พอ เติมเงินแล้วลองใหม่ |
| 403 | คีย์จัดการเรียกโมเดลไม่ได้ หรือบัญชีถูกระงับ ใช้คีย์ API ปกติ |
| 429 | ถึงขีดจำกัดอัตราแล้ว รอตาม Retry-After แล้วลองใหม่ |
| 502 | บริการโมเดลไม่พร้อมชั่วคราวหรือการส่งเสียงขาดตอน ลองใหม่ คำขอที่ล้มเหลวไม่คิดค่าบริการ |
สังเคราะห์เสียงพูด
แปลงข้อความเป็นเสียงด้วยรหัสโมเดลจาก /v1/models?output_modalities=speech คิดราคาต่อล้านอักขระตามหน้าโมเดล ระบบจะบัฟเฟอร์เสียงทั้งหมดก่อนส่งคืนเป็นข้อมูลไบนารี ยังไม่รองรับการสตรีมทีละช่วง ฟิลด์ควบคุมการกำหนดเส้นทาง เช่น provider, transforms, route, service_tier และ preset จะถูกละเว้น
/v1/audio/speech/v1/chat/completionsใช้ audio หรือ input_audio กับ /v1/chat/completions และโมเดลที่รองรับเสียง ราคาโทเคนอินพุตและเอาต์พุตที่ตั้งค่าไว้ใช้ร่วมกันกับโทเคนข้อความและเสียงทั้งหมดที่รายงาน
curl https://api.bazaarlink.ai/v1/chat/completions \
-H "$BAZAARLINK_AUTH_HEADER" \
-H "Content-Type: application/json" \
-d '{"model":"<audio-chat-model-id>","messages":[{"role":"user","content":"Say hi."}],"stream":true,"modalities":["text","audio"],"audio":{"voice":"alloy","format":"pcm16"},"max_tokens":32}'