API สร้างเสียงพูด

อัปเดต 2026-09-18 · ทีม Suno-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 (คำพูด จำเป็น)

tone (น้ำเสียงและฉาก ไม่บังคับ)

ใช้บรรยายว่า "พูดอย่างไร" ไม่ใช่ "พูดอะไร" แนะนำให้มีข้อมูลสี่ประเภท: น้ำเสียง ความเร็ว/จังหวะ อารมณ์ และสถานที่

กระตือรือร้นและทรงพลัง ความเร็วจากช้าไปเร็ว หยุดชัดเจน; หอประชุมโรงเรียน ต่อหน้าครูและนักเรียนทั้งโรงเรียน
อบอุ่นและนุ่มนวล ความเร็วช้า ๆ; งานเลี้ยงแต่งงาน
สุขุมและสงบ ความเร็วสม่ำเสมอชัดเจน; รายงานต่อคณะกรรมการบริษัท

ขีดจำกัด 1000 ตัวอักษร หากไม่ใส่ โมเดลจะพิจารณาจากเนื้อหาของ script เอง

gender / vocal_gender (เพศของผู้พูด ไม่บังคับ)

backing_music (ดนตรีประกอบ ไม่บังคับ)

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 แล้ว:

  1. ใช้ API สอบถามเพลงและประวัติ เพื่อดูสถานะการสร้างและที่อยู่เสียง;
  2. เมื่อเสร็จแล้วใช้ API ดาวน์โหลดและฟังตัวอย่างสื่อเพลง เพื่อดาวน์โหลดหรือฟังตัวอย่าง;
  3. หากต้องการดาวน์โหลดเป็นชุดหรือโอนย้ายไปที่เก็บของคุณ ดูเอนด์พอยต์ของศูนย์ดาวน์โหลด
ถัดไปAPI สร้างเสียงเอฟเฟกต์

รับคีย์ API

สร้างคีย์ API ในคอนโซลหลังสมัครสมาชิก การสร้างหนึ่งครั้งราคา 0.6 หยวน ได้ 2 เพลง ดาวน์โหลดไม่จำกัด และไม่ต้องใช้เบอร์โทรศัพท์

รับคีย์ API กลับไปภาพรวม