API สร้างเสียงพูด
คำอธิบายเอนด์พอยต์
Speech ใช้เปลี่ยนสคริปต์คำพูดหรือคำอธิบายประโยคเดียวให้เป็นเสียง "พูด/ปราศรัย" เลือกได้ว่าจะใส่ดนตรีประกอบหรือไม่ เหมาะกับงานปราศรัย กล่าวอวยพร บรรยาย เสียงพากย์ เนื้อหาเสียง และงานลักษณะเดียวกัน
โปรดทราบ เอนด์พอยต์นี้สร้างเสียงพูด ไม่ใช่เพลงที่มีการร้อง (ไม่มีทำนอง ไม่มีเสียงร้อง) หากต้องการเพลงร้อง ให้ใช้ API สร้างเพลงโหมดง่าย หรือ API สร้างเพลงโหมดกำหนดเอง
เอนด์พอยต์: POST /api/music/speech
ค่าบริการ: มีค่าใช้จ่าย ปัจจุบันค่าเริ่มต้น 0.6 หยวนต่อครั้ง โดยทั่วไปแต่ละครั้งได้ 2 ไฟล์เสียง และจำนวนที่หักจริงเป็นไปตามการตั้งราคาในระบบหลังบ้านปัจจุบัน
Max Mode / Variety: เอนด์พอยต์นี้รองรับพารามิเตอร์ทางเลือก max_mode และ variety (0-4) เมื่อเปิด
max_mode ครั้งนี้จะคิดค่าบริการเป็น 2 เท่า (0.6 → 1.2 หยวนต่อครั้ง) ส่วน variety ไม่มีค่าใช้จ่ายเพิ่ม
ความหมายและวิธีส่งดูได้ในหัวข้อ "พารามิเตอร์ขั้นสูง" ของ
ภาพรวม API ใหม่
ระยะเวลารอและ timeout (สำคัญ): เอนด์พอยต์นี้เป็นแบบซิงโครนัส — คำสั่งจะถูกรับและส่งเข้าสู่การสร้างเมื่อคำตอบกลับมาเท่านั้น จากการวัด ส่วนใหญ่ตอบกลับภายในไม่กี่วินาที (1-10 วินาที) แต่เหมือนเอนด์พอยต์สร้างเพลงแบบซิงโครนัสอื่น ๆ ในกรณีสุดโต่งอาจใช้เวลานานกว่า กรุณาตั้ง timeout ฝั่งไคลเอนต์ไว้ที่ 300 วินาทีขึ้นไป การไม่ได้รับคำตอบไม่ได้หมายความว่าไม่ได้สร้าง และอย่าลองซ้ำทันทีหลัง timeout (จะซ้ำคำสั่งและถูกหักเงินซ้ำ) หากการเชื่อมต่อขาด ให้ตรวจสอบภายหลังด้วย
GET /api/music/songsดูหัวข้อ "ระยะเวลารอและการตั้งค่า timeout" ใน ภาพรวม API ใหม่
ความเหมาะสมของเนื้อหา: แพลตฟอร์มจะตรวจสคริปต์เรื่องลิขสิทธิ์และนโยบายเนื้อหา หากตัดสินว่าเกี่ยวข้องกับวัสดุที่มีลิขสิทธิ์ (เช่น อ้างเนื้อเพลงของผู้อื่นหรือข้อความต้นฉบับของงานที่รู้จัก) ครั้งนี้จะสร้างไม่สำเร็จและคืนเงินเต็มจำนวนอัตโนมัติ ให้เปลี่ยนเป็นถ้อยคำของคุณเอง หรือเปลี่ยนการอ้างเป็นถ้อยคำสรุป แล้วลองใหม่
พารามิเตอร์คำขอ
Headers
| พารามิเตอร์ | ชนิด | จำเป็น | หมายเหตุ |
|---|---|---|---|
| Authorization | string | ใช่ | Bearer YOUR_API_KEY |
| Content-Type | string | ใช่ | application/json |
พารามิเตอร์บอดี
| พารามิเตอร์ | ชนิด | จำเป็น | ค่าเริ่มต้น | หมายเหตุ |
|---|---|---|---|---|
| script | string | ใช่ | - | ข้อความคำพูดทั้งหมด; ไม่เกิน 3000 ตัวอักษร (เกินจะคืน 400 ไม่คิดค่าใช้จ่าย) |
| tone | string | ไม่ | - | คำอธิบายน้ำเสียง / ความเร็ว / อารมณ์ / สถานที่ เช่น "กระตือรือร้นและทรงพลัง ความเร็วจากช้าไปเร็ว; หอประชุมโรงเรียน"; ไม่เกิน 1000 ตัวอักษร |
| song_title | string | ไม่ | - | ชื่อเรื่อง; ไม่เกิน 100 ตัวอักษร |
| gender | string | ไม่ | ไม่จำกัด | เพศของผู้พูด: m, f (รับ male, female ด้วย); จะส่งค่าเดียวกันผ่าน vocal_gender ก็ได้ |
| backing_music | boolean | ไม่ | true |
จะใส่ดนตรีประกอบหรือไม่; false คือคำพูดที่มีแค่เสียงคน |
| model | string | ไม่ | suno-v6 |
ชื่อโมเดลสำหรับลูกค้า: suno-v6, suno-v6-wild หรือ suno-v6-mini |
| wait_completion | boolean | ไม่ | false |
จะรอให้สร้างเสร็จก่อนตอบกลับหรือไม่ |
| max_mode | boolean | ไม่ | false |
เปิดแล้วครั้งนี้คิดค่าบริการ 2 เท่า |
| variety | integer | ไม่ | - | ระดับความหลากหลายของสไตล์ 0-4 ดูหัวข้อ "พารามิเตอร์ขั้นสูง" ในภาพรวม |
เอนด์พอยต์นี้ไม่รองรับ
duration(พารามิเตอร์ความยาว): ส่งมาจะคืน HTTP 400 ไม่ใช่เงียบ ๆ ไม่สนใจ ความยาวของคำพูดขึ้นอยู่กับความยาวเนื้อหาของscript
ตัวอย่างคำขอ
คำขอเล็กที่สุด (ใช้แค่สคริปต์)
curl -X POST https://www.suno-api.io/api/music/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--max-time 300 \
-d '{
"script": "สวัสดีคุณครูและเพื่อนนักเรียนทุกคน! วันนี้หัวข้อที่ผมจะพูดคือการใช้เวลาให้คุ้มค่าและก้าวต่อไปข้างหน้า"
}'
คำขอแบบเต็ม (ระบุน้ำเสียง เพศ และปิดดนตรีประกอบ)
curl -X POST https://www.suno-api.io/api/music/speech \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--max-time 300 \
-d '{
"script": "Good evening everyone, thank you all for coming to celebrate this special day with us.",
"tone": "warm and slow, wedding reception",
"song_title": "Wedding Toast",
"gender": "f",
"backing_music": false,
"model": "suno-v6"
}'
ตัวอย่าง Python
import requests
response = requests.post(
'https://www.suno-api.io/api/music/speech',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'script': 'สวัสดีทุกท่าน ช่วงบ่ายนี้ผมจะรายงานความคืบหน้าของสัปดาห์นี้',
'tone': 'เรียบและชัดเจน รายงานในที่ประชุม',
'gender': 'male',
'backing_music': True,
},
timeout=300,
)
response.raise_for_status()
items = response.json() # ปกติ 2 รายการ
for item in items:
print(item['song_id'], item['status'])
คำอธิบายพารามิเตอร์
script (คำพูด จำเป็น)
- วางเนื้อหาที่คุณจะพูดได้เลย; หรือจะเขียนคำอธิบายประโยคเดียวให้โมเดลเขียนคำพูดเองก็ได้ (เช่น "คำปลุกใจช่วงพักครึ่งให้ทีมที่ตามอยู่ยี่สิบแต้ม จากเสียงพึมพำเบา ๆ ไปจนถึงเสียงตะโกนก้อง")
- ขึ้นบรรทัดใหม่ ย่อหน้า และคำกำกับเวทีอย่าง
[หยุด]เขียนลงไปได้เลย โมเดลจะทำตามเท่าที่ทำได้ - ขีดจำกัด 3000 ตัวอักษร (นับเป็นอักขระ Unicode ตัวอักษรจีนนับเป็น 1) เกินแล้วคืน 400 และไม่คิดค่าใช้จ่าย
tone (น้ำเสียงและฉาก ไม่บังคับ)
ใช้บรรยายว่า "พูดอย่างไร" ไม่ใช่ "พูดอะไร" แนะนำให้มีข้อมูลสี่ประเภท: น้ำเสียง ความเร็ว/จังหวะ อารมณ์ และสถานที่
กระตือรือร้นและทรงพลัง ความเร็วจากช้าไปเร็ว หยุดชัดเจน; หอประชุมโรงเรียน ต่อหน้าครูและนักเรียนทั้งโรงเรียน
อบอุ่นและนุ่มนวล ความเร็วช้า ๆ; งานเลี้ยงแต่งงาน
สุขุมและสงบ ความเร็วสม่ำเสมอชัดเจน; รายงานต่อคณะกรรมการบริษัท
ขีดจำกัด 1000 ตัวอักษร หากไม่ใส่ โมเดลจะพิจารณาจากเนื้อหาของ script เอง
gender / vocal_gender (เพศของผู้พูด ไม่บังคับ)
- เสียงชายส่ง
mหรือmaleเสียงหญิงส่งfหรือfemaleเซิร์ฟเวอร์จะปรับให้เป็นm/f - ใช้ชื่อฟิลด์ได้ทั้งสอง เลือกอันเดียวพอ:
genderเป็นรูปแบบที่แนะนำสำหรับเอนด์พอยต์นี้ หากคุณใช้ โหมดกำหนดเอง อยู่แล้ว จะใช้vocal_genderต่อก็ได้ - ไม่ส่งคือ "ไม่จำกัด" ให้โมเดลตัดสินเอง
backing_music (ดนตรีประกอบ ไม่บังคับ)
- ค่าเริ่มต้น
true(มีดนตรีประกอบ) เหมือนค่าเริ่มต้นของ Suno เว็บ - ส่ง
falseจะได้คำพูดที่มีแค่เสียงคน เหมาะถ้าภายหลังคุณจะใส่เพลงหรือพากย์เอง - ต้องเป็นค่าบูลีน JSON
true/falseสตริง"true","1"ก็รับ แต่แนะนำให้ใช้บูลีน
model (โมเดล ไม่บังคับ)
โมเดลสำหรับลูกค้าทั้งสามตัวใช้ได้และราคาเท่ากัน (0.6 หยวนต่อครั้ง) คำพูดสร้างด้วยตระกูล Suno v6 หากไม่ส่งจะถือเป็น
suno-v6 หากไม่มีข้อกำหนดชัดเจน ปกติไม่จำเป็นต้องส่งฟิลด์นี้
การตรวจสอบพารามิเตอร์และขีดจำกัดข้อความ
กรณีต่อไปนี้คืน HTTP 400 และถูกสกัดก่อนคิดค่าใช้จ่ายทั้งหมด จึงไม่เกิดค่าใช้จ่าย:
| กรณี | ข้อความข้อผิดพลาด |
|---|---|
ไม่ส่ง script หรือส่งแค่ช่องว่าง |
script is required for speech |
gender ไม่ใช่ m/f/male/female |
gender must be one of m, f, male, female |
backing_music ไม่ใช่ค่าบูลีน |
backing_music must be a boolean |
ส่ง duration ที่ไม่รองรับ |
duration is not supported on /api/music/speech |
ขีดจำกัดความยาวฟิลด์ข้อความ
เกินขีดจำกัดก็คืน HTTP 400 เช่นกัน ไม่เข้าสู่การสร้างและไม่หักเงินล่วงหน้า การนับใช้จำนวนอักขระ Unicode (ตัวอักษรจีนนับเป็น 1 อักขระ)
และนับช่องว่างหัวท้ายด้วย:
| ฟิลด์ | ขีดจำกัด |
|---|---|
script (คำพูด) |
3000 อักขระ |
tone (คำอธิบายน้ำเสียง) |
1000 อักขระ |
song_title (ชื่อเรื่อง) |
100 อักขระ |
ข้อความข้อผิดพลาดมีรูปแบบ script must not exceed 3000 characters; received 4120:
คำแรกคือชื่อฟิลด์ที่เกินขีดจำกัด ส่วนท้ายคือจำนวนจริง เมื่อได้ 400 จึงตัดตามตัวเลขสองตัวนี้ได้เลย
คำตอบ
คำตอบเป็นอาร์เรย์เพลงเหมือนกับเอนด์พอยต์สร้างเพลงอื่นทั้งหมด (ปกติ 2 รายการ) ให้เก็บ song_id แล้วใช้
API สอบถามเพลงและประวัติ เพื่อดูสถานะสุดท้ายและที่อยู่เสียง:
[
{
"song_id": "b7529174-b495-465b-8c5e-cd21bea2df8c",
"song_title": "ใช้เวลาให้คุ้มค่า",
"status": "pending",
"audio_url": "",
"cover_url": "",
"video_url": "",
"model_version": "suno-v6",
"generation_type": "generate",
"created_at": "2026-10-08T01:00:00Z"
}
]
| ฟิลด์ | หมายเหตุ |
|---|---|
song_id |
ID ของเพลง ใช้ในการสอบถามและดาวน์โหลดต่อไปทั้งหมด |
status |
pending (ส่งแล้ว กำลังสร้าง), processing, completed (เสร็จสิ้น), failed (ล้มเหลว) |
song_title |
ชื่อเรื่อง (โมเดลสร้างให้เมื่อคุณไม่ส่ง song_title อาจว่างได้) |
audio_url |
ที่อยู่เสียง ว่างก่อนสร้างเสร็จ และเล่นหรือดาวน์โหลดได้ทันทีเมื่อเสร็จ |
การสร้างล้มเหลวและการคืนเงิน
เมื่อสร้างล้มเหลว ค่าใช้จ่ายครั้งนั้นจะคืนเต็มจำนวนอัตโนมัติ ไม่ต้องติดต่อฝ่ายบริการ สาเหตุดูได้จากคำตอบหรือ
error_message ของ API สอบถามเพลงและประวัติ
สาเหตุที่พบบ่อยที่สุดคือเนื้อหาถูกตัดสินว่าเกี่ยวข้องกับวัสดุที่มีลิขสิทธิ์ เช่น:
Your lyrics contain copyrighted material. Please change it and try again.
ในกรณีนั้นให้เปลี่ยนสคริปต์เป็นถ้อยคำของคุณเอง (หรือเปลี่ยนการอ้างเป็นถ้อยคำสรุป) แล้วส่งใหม่
คำถามที่พบบ่อย
ถาม: ทำไมผลออกมาเป็น "พูด" ไม่ใช่ร้อง? ตอบ: เอนด์พอยต์นี้เป็นเอนด์พอยต์คำพูด ผลลัพธ์จึงเป็นเสียงพูด หากต้องการร้องให้ใช้เอนด์พอยต์สร้างเพลงหรือโหมดกำหนดเอง
ถาม: ทำไมแต่ละครั้งได้ 2 รายการ?
ตอบ: เหมือนเอนด์พอยต์สร้างเพลงอื่นของแพลตฟอร์ม การสร้างหนึ่งครั้งได้ 2 ตัวเลือก ให้สอบถามแยกตาม song_id แล้วเลือกอันที่พอใจ
ถาม: จะควบคุมความยาวอย่างไร?
ตอบ: ขึ้นอยู่กับความยาวของ script เอนด์พอยต์นี้ไม่รับพารามิเตอร์ duration
ถาม: ระบุเสียง (เช่นเสียงที่ผมโคลนไว้) ได้ไหม?
ตอบ: เวอร์ชันปัจจุบันยังไม่รองรับ คำพูดใช้ชุดเสียงพูดแบบคงที่ และระบุชาย/หญิงได้ด้วย gender
หากต้องการเสียงของคุณเอง ให้ใช้ความสามารถที่เกี่ยวข้องของ API สร้างโปรไฟล์เสียง (แนะนำ)
ถาม: ถ้าไม่ส่ง tone จะเป็นอย่างไร?
ตอบ: โมเดลจะตัดสินน้ำเสียงและจังหวะจากเนื้อหาของ script หากต้องการให้ได้สไตล์เดิมอย่างสม่ำเสมอ ควรเขียนน้ำเสียง ความเร็ว และสถานที่ลงใน tone
ฟิลด์ที่ใช้แทนกันได้
| ฟิลด์ที่แนะนำ | ฟิลด์ที่ใช้แทนกันได้ | หมายเหตุ |
|---|---|---|
gender |
vocal_gender |
ส่งอย่างใดอย่างหนึ่งได้ m/f/male/female รับทั้งหมด |
การเชื่อมต่อใหม่ให้ใช้ snake_case ให้สม่ำเสมอ ฟิลด์อื่น (script, tone, song_title, backing_music) ไม่มีชื่อพ้องแบบ camelCase
ขั้นตอนถัดไป
เมื่อได้ song_id แล้ว:
- ใช้ API สอบถามเพลงและประวัติ เพื่อดูสถานะการสร้างและที่อยู่เสียง;
- เมื่อเสร็จแล้วใช้ API ดาวน์โหลดและฟังตัวอย่างสื่อเพลง เพื่อดาวน์โหลดหรือฟังตัวอย่าง;
- หากต้องการดาวน์โหลดเป็นชุดหรือโอนย้ายไปที่เก็บของคุณ ดูเอนด์พอยต์ของศูนย์ดาวน์โหลด
รับคีย์ API
สร้างคีย์ API ในคอนโซลหลังสมัครสมาชิก การสร้างหนึ่งครั้งราคา 0.6 หยวน ได้ 2 เพลง ดาวน์โหลดไม่จำกัด และไม่ต้องใช้เบอร์โทรศัพท์
รับคีย์ API กลับไปภาพรวม