API penjanaan pertuturan
Penerangan endpoint
Speech menukar teks ucapan atau perihalan satu baris menjadi audio "bertutur/ucapan", dengan muzik latar sebagai pilihan. Sesuai untuk ucapan, toast, narasi, skrip suara latar, kandungan audio dan senario serupa.
Perhatian: endpoint ini menghasilkan audio pertuturan, bukan lagu yang dinyanyikan (tiada melodi dan tiada vokal nyanyian). Jika perlu nyanyian, gunakan API penjanaan mod mudah atau API penjanaan mod tersuai.
Endpoint: POST /api/music/speech
Pengebilan: Berbayar, kini lalai 0.6 ¥ setiap panggilan. Setiap panggilan biasanya memulangkan 2 audio; jumlah yang benar-benar dicaj mengikut tetapan harga dalam back-office.
Max Mode / Variety: endpoint ini menyokong parameter pilihan max_mode dan variety (0-4). Dengan
max_mode dihidupkan, panggilan ini dibilkan pada 2× harga (0.6 → 1.2 ¥ setiap panggilan); variety tidak
menambah kos. Maksud dan cara menghantarnya ada dalam bahagian "Parameter lanjutan" pada
Gambaran keseluruhan API baharu.
Masa menunggu dan timeout (penting): ini endpoint segerak — pesanan hanya diterima dan dihantar ke penjanaan apabila respons tiba. Berdasarkan ukuran, kebanyakan permintaan membalas dalam beberapa saat (1-10 saat); tetapi seperti endpoint penjanaan segerak lain, dalam kes melampau ia boleh mengambil masa lebih lama. Tetapkan timeout klien kepada 300 saat atau lebih; tiada respons tidak bermakna tiada apa-apa dijana, dan jangan cuba semula sejurus selepas timeout (ia menggandakan pesanan dan mencaj dua kali). Jika sambungan terputus, periksa kemudian dengan
GET /api/music/songs. Lihat "Masa menunggu dan tetapan timeout" dalam Gambaran keseluruhan API baharu.
Pematuhan kandungan: platform menyemak teks dari segi hak cipta dan dasar kandungan. Jika dinilai melibatkan bahan berhak cipta (contohnya memetik lirik orang lain atau teks asal karya terkenal), panggilan ini gagal dan keseluruhan bayaran dipulangkan secara automatik. Tukar kepada ayat anda sendiri, atau jadikan petikan itu parafrasa, kemudian cuba lagi.
Parameter permintaan
Headers
| Parameter | Jenis | Wajib | Nota |
|---|---|---|---|
| Authorization | string | ya | Bearer YOUR_API_KEY |
| Content-Type | string | ya | application/json |
Parameter body
| Parameter | Jenis | Wajib | Lalai | Nota |
|---|---|---|---|---|
| script | string | ya | - | Teks ucapan penuh; maksimum 3000 aksara (lebih akan memulangkan 400, tanpa caj) |
| tone | string | tidak | - | Perihalan nada / tempo / emosi / suasana, contohnya "bertenaga dan kuat, tempo daripada perlahan ke pantas; dewan sekolah"; maksimum 1000 aksara |
| song_title | string | tidak | - | Tajuk; maksimum 100 aksara |
| gender | string | tidak | bebas | Jantina penutur: m, f (turut menerima male, female); anda boleh hantar nilai sama melalui vocal_gender |
| backing_music | boolean | tidak | true |
Sama ada menambah muzik latar; false memberi ucapan dengan suara sahaja |
| model | string | tidak | suno-v6 |
Nama model untuk pelanggan: suno-v6, suno-v6-wild atau suno-v6-mini |
| wait_completion | boolean | tidak | false |
Sama ada menunggu penjanaan selesai sebelum membalas |
| max_mode | boolean | tidak | false |
Jika hidup, panggilan ini dibilkan pada 2× harga |
| variety | integer | tidak | - | Tahap variasi gaya 0-4; lihat "Parameter lanjutan" dalam gambaran keseluruhan |
Endpoint ini tidak menyokong
duration: menghantarnya memulangkan HTTP 400, bukan diabaikan secara senyap. Tempoh ucapan ditentukan oleh panjang kandunganscript.
Contoh permintaan
Permintaan minimum (teks sahaja)
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": "Selamat pagi semua! Ucapan saya hari ini tentang memanfaatkan masa dengan baik dan terus melangkah ke hadapan."
}'
Permintaan penuh (dengan nada, jantina dan muzik latar dimatikan)
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"
}'
Contoh Python
import requests
response = requests.post(
'https://www.suno-api.io/api/music/speech',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'script': 'Selamat petang, rakan-rakan. Saya akan melaporkan kemajuan minggu ini.',
'tone': 'tenang dan jelas, laporan mesyuarat',
'gender': 'male',
'backing_music': True,
},
timeout=300,
)
response.raise_for_status()
items = response.json() # biasanya 2 item
for item in items:
print(item['song_id'], item['status'])
Penjelasan parameter
script (ucapan, wajib)
- Tampal kandungan yang ingin anda sampaikan; anda juga boleh menulis satu perihalan dan biarkan model menyediakan ucapan itu (contohnya "kata-kata semangat separuh masa untuk pasukan yang ketinggalan dua puluh mata, daripada bisikan perlahan hingga pekikan sekuat hati").
- Baris baharu, perenggan dan arahan pentas seperti
[jeda]boleh ditulis terus, dan model akan mengikutinya seboleh mungkin. - Hadnya 3000 aksara (dikira sebagai aksara Unicode; satu aksara Cina dikira 1); melebihi had memulangkan 400 tanpa caj.
tone (nada dan suasana, pilihan)
Ia menerangkan bagaimana bercakap, bukan apa yang dikatakan. Sebaiknya sertakan empat jenis maklumat: nada, tempo/irama, emosi dan suasana.
Bertenaga dan kuat, tempo daripada perlahan ke pantas, jeda yang jelas; dewan sekolah, di hadapan semua guru dan pelajar
Hangat dan lembut, tempo perlahan; majlis perkahwinan
Tenang dan terkawal, sekata dan jelas; laporan kepada lembaga pengarah
Hadnya 1000 aksara. Jika tidak dihantar, model menilainya daripada kandungan script.
gender / vocal_gender (jantina penutur, pilihan)
- Untuk suara lelaki hantar
mataumale, untuk suara wanitafataufemale; pelayan menormalkannya kepadam/f. - Kedua-dua nama medan berfungsi, pilih satu sahaja:
genderialah bentuk yang disyorkan untuk endpoint ini; jika anda sudah menggunakan mod tersuai, anda boleh terus gunavocal_gender. - Tidak menghantar bermaksud "bebas", model yang menentukan.
backing_music (muzik latar, pilihan)
- Lalai
true(dengan muzik latar), sama seperti lalai dalam versi web Suno. falsememberi ucapan dengan suara sahaja, berguna jika kemudian anda mahu menambah muzik atau suara latar sendiri.- Mesti boolean JSON
true/false; rentetan"true"dan"1"juga diterima, tetapi boolean lebih disyorkan.
model (model, pilihan)
Ketiga-tiga model untuk pelanggan tersedia pada harga yang sama (0.6 ¥ setiap panggilan). Ucapan dijana oleh keluarga Suno v6; jika tidak dihantar ia dianggap sebagai
suno-v6. Kecuali anda ada keutamaan tertentu, biasanya medan ini tidak perlu dihantar.
Pengesahan parameter dan had teks
Kes berikut memulangkan HTTP 400, dan semuanya disekat sebelum pengebilan, jadi tiada kos timbul:
| Kes | Mesej ralat |
|---|---|
script tiada, atau hanya ruang kosong |
script is required for speech |
gender bukan m/f/male/female |
gender must be one of m, f, male, female |
backing_music bukan boolean |
backing_music must be a boolean |
Menghantar duration yang tidak disokong |
duration is not supported on /api/music/speech |
Had medan teks
Melebihi had juga memulangkan HTTP 400 dan tidak masuk ke penjanaan serta tiada caj pendahuluan. Pengiraan menggunakan aksara Unicode (satu aksara Cina dikira 1)
dan ruang di awal serta akhir turut dikira:
| Medan | Had |
|---|---|
script (ucapan) |
3000 aksara |
tone (perihalan nada) |
1000 aksara |
song_title (tajuk) |
100 aksara |
Mesej ralat berbentuk script must not exceed 3000 characters; received 4120:
perkataan pertama ialah nama medan yang melebihi had dan penghujungnya ialah bilangan sebenar, jadi apabila menerima 400 anda boleh terus memangkas dengan dua nombor itu.
Respons
Respons ialah tatasusunan lagu sama seperti endpoint penjanaan lain (biasanya 2 item); simpan song_id dan gunakan
API pertanyaan lagu dan sejarah untuk melihat status akhir dan alamat audio:
[
{
"song_id": "b7529174-b495-465b-8c5e-cd21bea2df8c",
"song_title": "Memanfaatkan masa",
"status": "pending",
"audio_url": "",
"cover_url": "",
"video_url": "",
"model_version": "suno-v6",
"generation_type": "generate",
"created_at": "2026-10-08T01:00:00Z"
}
]
| Medan | Nota |
|---|---|
song_id |
ID trek; digunakan untuk semua pertanyaan dan muat turun seterusnya |
status |
pending (dihantar, sedang dijana), processing, completed (selesai), failed (gagal) |
song_title |
Tajuk (dijana oleh model jika anda tidak menghantar song_title; boleh kosong) |
audio_url |
Alamat audio; kosong sebelum penjanaan selesai dan boleh dimainkan atau dimuat turun sebaik selesai |
Kegagalan penjanaan dan bayaran balik
Jika penjanaan gagal, kos panggilan itu dipulangkan penuh secara automatik; tidak perlu menghubungi sokongan. Puncanya kelihatan dalam respons atau dalam
error_message bagi API pertanyaan lagu dan sejarah.
Punca paling biasa ialah kandungan dinilai melibatkan bahan berhak cipta, contohnya:
Your lyrics contain copyrighted material. Please change it and try again.
Dalam kes itu, tukar teks kepada ayat anda sendiri (atau jadikan petikan itu parafrasa) dan hantar semula.
Soalan lazim
S: Mengapa hasilnya "bertutur" dan bukan nyanyian? J: Ini endpoint ucapan, dan outputnya audio pertuturan. Untuk nyanyian gunakan endpoint penjanaan atau mod tersuai.
S: Mengapa setiap kali memulangkan 2 item?
J: Seperti endpoint penjanaan lain di platform ini, satu penjanaan menghasilkan 2 calon; pertanyakan secara berasingan mengikut song_id dan pilih yang anda suka.
S: Bagaimana mengawal tempoh?
J: Ia ditentukan oleh panjang script; endpoint ini tidak menerima parameter duration.
S: Bolehkah saya tentukan suara (contohnya suara klon saya)?
J: Versi semasa belum menyokong. Ucapan menggunakan set suara pertuturan tetap, dan gender memilih lelaki atau wanita;
jika perlu suara anda sendiri, gunakan keupayaan berkaitan API penciptaan profil suara (disyorkan).
S: Apa jadi jika tone tidak dihantar?
J: Model menilai nada dan irama daripada kandungan script. Untuk menghasilkan semula sesuatu gaya dengan stabil, tulis nada, tempo dan suasana dalam tone.
Medan serasi
| Medan disyorkan | Medan serasi | Nota |
|---|---|---|
gender |
vocal_gender |
Hantar salah satu; m/f/male/female semuanya diterima |
Untuk integrasi baharu gunakan snake_case secara konsisten. Medan lain (script, tone, song_title, backing_music) tiada alias camelCase.
Langkah seterusnya
Setelah mendapat song_id:
- Gunakan API pertanyaan lagu dan sejarah untuk melihat status penjanaan dan alamat audio;
- Setelah selesai, gunakan API muat turun dan pratonton media lagu untuk memuat turun atau mendengarnya;
- Untuk muat turun pukal atau menyalin ke storan anda sendiri, lihat endpoint pusat muat turun.
Dapatkan kunci API
Cipta kunci API dalam konsol selepas mendaftar. Setiap penjanaan berharga 0.6 ¥ dan mengembalikan 2 lagu, muat turun tanpa had dan nombor telefon tidak diperlukan.
Dapatkan kunci API Kembali ke gambaran