API för talgenerering (Speech)
Beskrivning av ändpunkten
Speech gör om ett talmanus eller en beskrivning på en rad till "tal/anförande"-ljud, med bakgrundsmusik som valfritt tillägg. Det passar tal, skåltal, berättarröst, inläsningstexter, ljudinnehåll och liknande.
Observera: den här ändpunkten skapar talljud, inte en sjungen låt (ingen melodi och ingen sjungen sång). Behöver du sång använder du genererings-API i enkelt läge eller genererings-API i anpassat läge.
Ändpunkt: POST /api/music/speech
Fakturering: Betalt, för närvarande som standard 0,6 ¥ per anrop. Varje anrop ger oftast 2 ljudfiler; det faktiskt debiterade beloppet följer prisinställningen i backoffice.
Max Mode / Variety: den här ändpunkten stöder de valfria parametrarna max_mode och variety (0-4). Med
max_mode på debiteras anropet till dubbelt pris (0,6 → 1,2 ¥ per anrop); variety kostar
inget extra. Vad de betyder och hur de skickas står i avsnittet "Avancerade parametrar" i
Översikt över det nya API:t.
Väntetider och timeouts (viktigt): detta är en synkron ändpunkt — beställningen accepteras och lämnas till generering först när svaret kommer. Mätt: de flesta anrop svarar inom sekunder (1-10 s); men som vid andra synkrona genereringsändpunkter kan det i extrema fall ta längre tid. Ställ in klientens timeout på 300 sekunder eller mer; inget svar betyder inte att inget genererades, och försök inte igen direkt efter en timeout (det duplicerar beställningen och debiterar igen). Om anslutningen bröts, kontrollera senare med
GET /api/music/songs. Se "Väntetider och timeout-inställningar" i Översikt över det nya API:t.
Innehållsefterlevnad: plattformen granskar texten för upphovsrätt och innehållspolicy. Bedöms den innehålla skyddat material (till exempel att citera någon annans sångtext eller den ordagranna texten i ett känt verk), misslyckas anropet och hela beloppet återbetalas automatiskt. Byt till din egen formulering, eller gör om citatet till en omskrivning, och försök igen.
Begäransparametrar
Headers
| Parameter | Typ | Krävs | Anmärkningar |
|---|---|---|---|
| Authorization | string | ja | Bearer YOUR_API_KEY |
| Content-Type | string | ja | application/json |
Brödtextparametrar
| Parameter | Typ | Krävs | Standard | Anmärkningar |
|---|---|---|---|---|
| script | string | ja | - | Hela talmanuset; högst 3000 tecken (mer ger 400, ingen debitering) |
| tone | string | nej | - | Beskrivning av ton / tempo / känsla / miljö, till exempel "energiskt och kraftfullt, tempo från långsamt till snabbt; skolans aula"; högst 1000 tecken |
| song_title | string | nej | - | Titel; högst 100 tecken |
| gender | string | nej | valfritt | Talarens kön: m, f (accepterar även male, female); du kan skicka samma värde som vocal_gender |
| backing_music | boolean | nej | true |
Om bakgrundsmusik läggs till; false ger ett tal med bara röst |
| model | string | nej | suno-v6 |
Kundvänt modellnamn: suno-v6, suno-v6-wild eller suno-v6-mini |
| wait_completion | boolean | nej | false |
Om svaret väntar tills genereringen är klar |
| max_mode | boolean | nej | false |
På innebär att anropet debiteras till dubbelt pris |
| variety | integer | nej | - | Grad av stilvariation 0-4; se "Avancerade parametrar" i översikten |
Den här ändpunkten stöder inte
duration: skickas det returneras HTTP 400, det ignoreras inte tyst. Talets längd bestäms av innehållets längd iscript.
Exempelbegäranden
Minsta begäran (bara texten)
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": "God morgon allihop! Mitt tal idag handlar om att använda vår tid väl och gå framåt."
}'
Fullständig begäran (med ton, kön och bakgrundsmusik av)
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-exempel
import requests
response = requests.post(
'https://www.suno-api.io/api/music/speech',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'script': 'God eftermiddag, kollegor. Jag rapporterar om veckans framsteg.',
'tone': 'lugnt och tydligt, mötesrapport',
'gender': 'male',
'backing_music': True,
},
timeout=300,
)
response.raise_for_status()
items = response.json() # oftast 2 poster
for item in items:
print(item['song_id'], item['status'])
Förklaring av parametrarna
script (talet, obligatoriskt)
- Klistra in det du vill säga; du kan också skriva en enda beskrivning och låta modellen skriva talet (till exempel "ett pepptalk i halvtid för ett lag som ligger tjugo poäng under, från en låg viskning till ett vrål av full hals").
- Radbrytningar, stycken och scenanvisningar som
[paus]kan skrivas direkt, och modellen följer dem så långt den kan. - Gränsen är 3000 tecken (räknat i Unicode-tecken; ett kinesiskt tecken räknas som 1); över gränsen returneras 400 utan debitering.
tone (ton och miljö, valfritt)
Det beskriver hur något sägs, inte vad som sägs. Ta gärna med fyra slags information: ton, tempo/rytm, känsla och miljö.
Energiskt och kraftfullt, tempo från långsamt till snabbt, tydliga pauser; skolans aula, inför alla elever och lärare
Varmt och mjukt, lugnt tempo; bröllopsmottagning
Lugnt och återhållet, jämnt och tydligt; rapport till styrelsen
Gränsen är 1000 tecken. Skickas det inte bedömer modellen utifrån innehållet i script.
gender / vocal_gender (talarens kön, valfritt)
- Skicka
mellermaleför mansröst,fellerfemaleför kvinnoröst; servern normaliserar dem tillm/f. - Båda fältnamnen fungerar, använd bara ett:
genderär den rekommenderade formen här; använder du redan anpassat läge kan du fortsätta medvocal_gender. - Att utelämna betyder "valfritt", och modellen avgör.
backing_music (bakgrundsmusik, valfritt)
- Standard är
true(med bakgrundsmusik), samma som i Sunos webbversion. falseger ett tal med bara röst, praktiskt om du senare vill lägga på egen musik eller inläsning.- Måste vara ett JSON-booleskt
true/false; strängarna"true"och"1"accepteras också, men booleska värden rekommenderas.
model (modell, valfritt)
Alla tre kundvända modeller finns till samma pris (0,6 ¥ per anrop). Talet genereras av Suno v6-familjen; utan värde behandlas det som
suno-v6. Om du inte har en tydlig preferens behövs oftast inte detta fält.
Parametervalidering och textgränser
Följande fall returnerar HTTP 400, och alla blockeras före debiteringen, så ingen kostnad uppstår:
| Fall | Felmeddelande |
|---|---|
script saknas eller innehåller bara blanksteg |
script is required for speech |
gender är inte m/f/male/female |
gender must be one of m, f, male, female |
backing_music är inte booleskt |
backing_music must be a boolean |
En duration som inte stöds skickades |
duration is not supported on /api/music/speech |
Gränser för textfält
För lång text returnerar också HTTP 400 och startar ingen generering och gör ingen förhandsdebitering. Räkningen sker i Unicode-tecken (ett kinesiskt tecken räknas som 1)
och inledande/avslutande blanksteg räknas med:
| Fält | Gräns |
|---|---|
script (talet) |
3000 tecken |
tone (tonbeskrivning) |
1000 tecken |
song_title (titel) |
100 tecken |
Felet ser ut så här: script must not exceed 3000 characters; received 4120:
första ordet är fältet som överskred gränsen och slutet är det faktiska antalet, så vid ett 400 kan du korta direkt med de två talen.
Svar
Svaret är en låtarray exakt som för de andra genereringsändpunkterna (oftast 2 poster); spara song_id och använd
API för låtfrågor och historik för att se sluttillståndet och ljudadressen:
[
{
"song_id": "b7529174-b495-465b-8c5e-cd21bea2df8c",
"song_title": "Använda tiden väl",
"status": "pending",
"audio_url": "",
"cover_url": "",
"video_url": "",
"model_version": "suno-v6",
"generation_type": "generate",
"created_at": "2026-10-08T01:00:00Z"
}
]
| Fält | Anmärkningar |
|---|---|
song_id |
Spårets ID; används för alla senare frågor och nedladdningar |
status |
pending (inskickad, genereras), processing, completed (klar), failed (misslyckades) |
song_title |
Titel (skapas av modellen om du inte skickade song_title; kan vara tom) |
audio_url |
Ljudadress; tom innan genereringen är klar och direkt spelbar eller nedladdningsbar när den är klar |
Misslyckad generering och återbetalningar
Misslyckas genereringen återbetalas hela beloppet för anropet automatiskt; ingen kontakt med supporten behövs. Orsaken syns i svaret eller i
error_message för API för låtfrågor och historik.
Den vanligaste orsaken är att innehållet bedöms vara skyddat material, till exempel:
Your lyrics contain copyrighted material. Please change it and try again.
Byt då ut manuset mot din egen formulering (eller gör om citatet till en omskrivning) och skicka in igen.
Vanliga frågor
F: Varför blir resultatet "tal" och inte sång? S: Det här är taländpunkten och dess utdata är talljud. För sång använder du genererings- eller anpassat-läge-ändpunkterna.
F: Varför kommer 2 poster varje gång?
S: Som vid plattformens andra genereringsändpunkter ger en generering 2 kandidater; fråga efter dem separat via song_id och behåll den du gillar.
F: Hur styr jag längden?
S: Den bestäms av längden på script; ändpunkten accepterar ingen duration-parameter.
F: Kan jag ange en röst (till exempel min klonade röst)?
S: Nuvarande version stöder inte det. Talet använder en fast uppsättning talröster och gender väljer manlig eller kvinnlig;
behöver du din egen röst använder du motsvarande funktion i API för att skapa röstprofil (rekommenderas).
F: Vad händer om jag inte skickar tone?
S: Modellen bedömer ton och rytm utifrån innehållet i script. För att återge en stil tillförlitligt, skriv ton, tempo och miljö i tone.
Kompatibla fält
| Rekommenderat fält | Kompatibelt fält | Anmärkningar |
|---|---|---|
gender |
vocal_gender |
Skicka ett av dem; m/f/male/female fungerar alla |
Använd snake_case genomgående i nya integrationer. Övriga fält (script, tone, song_title, backing_music) har inga camelCase-alias.
Nästa steg
När du har song_id:
- Använd API för låtfrågor och historik för att se genereringsstatus och ljudadress;
- Ladda ner eller lyssna med API för nedladdning och uppspelning av låtmedia när den är klar;
- För massnedladdning eller kopiering till din egen lagring, se nedladdningscentrets ändpunkter.
Skaffa en API-nyckel
Skapa en API-nyckel i konsolen efter registreringen. Varje generering kostar 0,6 ¥ och returnerar 2 spår, nedladdningar är obegränsade och inget telefonnummer krävs.
Hämta API-nyckel Tillbaka till översikten