Przejdź do głównej treści
Wraz z coraz szerszym zastosowaniem AI, różnego rodzaju programy AI stopniowo stają się powszechne. AI stopniowo przeniknęła do wszystkich aspektów pracy i życia ludzi. Coraz więcej jest również branż związanych z AI — od początkowego pisania, przez opiekę medyczną i edukację, aż po obecną muzykę. Suno to profesjonalna platforma AI do tworzenia wysokiej jakości piosenek i muzyki. Użytkownicy muszą jedynie wprowadzić proste tekstowe podpowiedzi, aby na podstawie gatunku, stylu i tekstu wygenerować piosenki z wokalem. Ten generator muzyki AI został opracowany przez członków zespołu z renomowanych firm technologicznych, takich jak Meta, TikTok i Kensho, a jego celem jest umożliwienie wszystkim tworzenia pięknej muzyki bez potrzeby używania jakichkolwiek instrumentów. Poniżej przedstawiono postęp aktualizacji modeli:
Limity lyric i style w powyższej tabeli są górnymi limitami w trybie niestandardowym (custom ma wartość true). W nieniestandardowym trybie inspiracji (custom ma wartość false) należy wypełnić tylko prompt, którego maksymalna długość wynosi 500 znaków (taka sama dla wszystkich modeli).
Suno obsługuje obecnie chirp-v6, chirp-v6-wild i chirp-v6-mini. Zaleca się używanie chirp-v6; nazwy starszych modeli są nadal kompatybilne. Jednak Suno oficjalnie nie udostępnia API. AceDataCloud oferuje zestaw API Suno, który symuluje integrację z oficjalnym Suno i umożliwia wygodne oraz szybkie generowanie wybranej muzyki.

Aplikowanie i korzystanie

Aby korzystać z Suno Audios Generation API, najpierw przejdź do konsoli Ace Data Cloud, aby uzyskać swój API Token i zachowaj go na później. Jeśli nie jesteś jeszcze zalogowany ani zarejestrowany, nastąpi automatyczne przekierowanie na stronę logowania z zaproszeniem do rejestracji i logowania. Po zakończeniu automatycznie wrócisz na bieżącą stronę. Jeden API Token pozwala wywoływać wszystkie usługi platformy, bez potrzeby osobnego aplikowania dla każdej usługi. Przy pierwszym zgłoszeniu otrzymasz bezpłatny limit, aby móc korzystać z bezpłatnej wersji próbnej; gdy limit będzie niewystarczający, możesz doładować uniwersalne saldo w konsoli.
📘 Pełna dokumentacja: Suno Audios Generation API →

Podstawowe użycie

Jakie piosenki chcesz, możesz dowolnie wprowadzić fragment tekstu. Na przykład, jeśli chcę wygenerować piosenkę o Bożym Narodzeniu, mogę wprowadzić a song for Christmas, jak pokazano na ilustracji:

Można zobaczyć, że ustawiliśmy tutaj Request Headers, w tym:
  • accept: jaki format odpowiedzi chcesz otrzymać; tutaj wpisz application/json, czyli format JSON.
  • authorization: klucz do wywoływania API, który po aplikowaniu można bezpośrednio wybrać z listy rozwijanej.
Dodatkowo ustawiono Request Body, w tym:
  • action: typ zadania audio, domyślnie generate. Obsługuje operacje takie jak generowanie, kontynuacja, cover, łączenie, rozdzielanie ścieżek, dodawanie ścieżek audio, wyodrębnianie wskazanych ścieżek audio, generowanie efektów dźwiękowych i dostosowywanie prędkości itd.; wszystkie są wywoływane jednolicie przez POST /suno/audios.
  • prompt: podpowiedź trybu inspiracji Suno Official (obowiązuje, gdy custom ma wartość false), maksymalnie 500 znaków.
  • model: model dla tego zadania generowania muzyki. Seria v6 obejmuje chirp-v6, chirp-v6-wild i chirp-v6-mini; nazwy starszych modeli są nadal kompatybilne.
  • max_mode: ulepszony tryb generowania. generate jest włączany tylko wtedy, gdy zarówno custom, jak i max_mode mają wartość true, a koszt wynosi 1.12 Credits; add_stem można włączyć bezpośrednio, a koszt wynosi 1.344 Credits. Gdy jest wyłączony lub pominięty, koszty wynoszą odpowiednio 0.56 i 0.672 Credits.
  • variety: intensywność różnorodności wyników generowania, opcje to off, normal, high, extra, max. Używane tylko dla generate i add_stem; przekazanie dla innych action zwróci 400.
  • lyric: treść tekstu piosenki w niestandardowym trybie Suno Official. Maksymalnie 3000 znaków dla chirp-v3-5 i chirp-v4; maksymalnie 5000 znaków dla chirp-v4-5 i wyższych (w tym chirp-v5, chirp-v5-5).
  • custom: czy używać trybu niestandardowego, domyślnie: false.
  • instrumental: opcja muzyki instrumentalnej w trybie inspiracji Suno Official.
  • title: tytuł utworu w niestandardowym trybie Suno Official. Maksymalnie 80 znaków dla chirp-v3-5, chirp-v4; maksymalnie 100 znaków dla chirp-v4-5 i wyższych.
  • style: styl muzyczny w niestandardowym trybie Suno Official. Maksymalnie 200 znaków dla chirp-v3-5 i chirp-v4; maksymalnie 1000 znaków dla chirp-v4-5 i wyższych (w tym chirp-v5, chirp-v5-5).
  • negative_tags: style muzyczne lub gatunki, które mają zostać wykluczone z wyników generowania w trybie niestandardowym (gdy custom ma wartość true).
  • audio_weight: waga wpływu cech audio lub głosu, w zakresie 0-1; 0 również jest prawidłową wartością. Może być używana w operacjach generowania, kontynuacji, coveru, dodawania ścieżek audio i spójności głosu itd.; gdy nie ma referencyjnego audio ani cech głosu, model może osłabić lub zignorować tę wartość.
  • audio_id: ID muzyki referencyjnej.
  • overpainting_start/overpainting_end: czas rozpoczęcia i zakończenia dodawania wokalu do istniejącej muzyki instrumentalnej, w sekundach.
  • underpainting_start/underpainting_end: czas rozpoczęcia i zakończenia dodawania akompaniamentu do śpiewu a cappella, w sekundach.
  • persona_id: ID utworu artysty.
  • continue_at: granica kontynuacji, w sekundach. Na przykład 213.5 oznacza rozpoczęcie generowania kolejnego fragmentu od 3 minuty i 33.5 sekundy. lyric i style kierują tylko nową treścią po granicy i nie zastępują tekstu ani śpiewu przed granicą w źródłowym audio.
  • style_influence: wpływ stylu w trybie niestandardowym, w zakresie 0-1; większa wartość zazwyczaj lepiej dopasowuje do wybranego stylu; 0 zostanie przekazane jako prawidłowa wartość.
  • replace_section_end: końcowy czas zastępowanego fragmentu.
  • replace_section_start: początkowy czas zastępowanego fragmentu.
  • vocal_gender: kontroluje preferencję głosu żeńskiego lub męskiego, głos żeński f, głos męski m; obowiązuje dla modeli 4.5 i wyższych; jest to preferencja i nie gwarantuje ścisłego przestrzegania.
  • weirdness: dziwaczność w trybie niestandardowym, w zakresie 0-1; większa wartość zwykle oznacza więcej kreatywności i eksperymentalności; 0 zostanie przekazane jako prawidłowa wartość.
  • duration: oczekiwany czas trwania utworu, w sekundach, musi być liczbą całkowitą w zakresie od 10 do 360. Ten parametr jest używany do generowania utworów w trybie niestandardowym (gdy custom ma wartość true). Jest to wskazówka dotycząca preferencji, a nie twarde ograniczenie: model weźmie ją pod uwagę, ale nie gwarantuje jej osiągnięcia; rzeczywisty czas trwania gotowego utworu zależy od pola duration w odpowiedzi i zazwyczaj jest krótszy niż oczekiwany.

Zakres zastosowania parametrów zaawansowanych

Platforma sprawdza typy parametrów i zakresy wartości, ale nie odrzuca tych opcjonalnych elementów regulacji wyłącznie z powodu różnic w action; konkretny efekt zależy od operacji, trybu i modelu.
  • lyric_prompt: prompt do generowania tekstu piosenki, obowiązuje wtedy i tylko wtedy, gdy custom ma wartość true oraz lyric nie zostało przekazane.
  • callback_url: URL, na który ma zostać przekazany wynik wywołania zwrotnego.
  • async: opcjonalne; gdy ustawione na true, interfejs natychmiast zwraca task_id, bez konieczności podawania callback_url, a następnie wynik jest uzyskiwany przez odpytywanie odpowiedniego interfejsu zapytań o zadania.
Wygenerowany kod jest następujący:

Możesz kliknąć przycisk „Try”, aby bezpośrednio przetestować API, poczekać 1–2 minuty, a wynik będzie następujący:
Można zauważyć, że w tym momencie otrzymaliśmy zawartość dwóch piosenek, w tym tytuł, obraz podglądu, tekst, audio, wideo i inne informacje. Opis pól jest następujący:
  • success:czy generowanie zakończyło się powodzeniem; jeśli tak, wartość wynosi true, w przeciwnym razie false
  • data:jest listą zawierającą szczegółowe informacje o wygenerowanych piosenkach.
    • state: status generowania piosenki, obejmuje głównie cztery rodzaje, konkretnie:
      • succeeded:wygenerowano pomyślnie
      • pending:w kolejce
      • running:w trakcie wykonywania
      • error:niepowodzenie
    • id:ID piosenki
    • title:tytuł piosenki
    • image_url:obraz okładki piosenki
    • lyric:tekst piosenki
    • audio_url:adres końcowego pliku audio piosenki. Platforma w pierwszej kolejności zwróci adres Ace Data Cloud CDN; jeśli trwałe zapisanie się nie powiedzie, może zostać zwrócony oryginalny adres mediów, należy go niezwłocznie pobrać.
    • video_url:plik wideo piosenki, po otwarciu jest to wideo mp4.
    • created_at:czas utworzenia
    • model:użyty model, zazwyczaj najnowszy model v3
    • style:styl

Generowanie niestandardowe

Jeśli chcesz niestandardowo wygenerować tekst piosenki, możesz wprowadzić tekst: W tym momencie do pola lyric można przekazać treść podobną do poniższej:
Uwaga, \n w tekście piosenki tutaj oznacza znak nowej linii. Jeśli nie wiesz, jak wygenerować tekst piosenki, możesz użyć interfejsu API generowania tekstów dostarczanego przez AceDataCloud, aby wygenerować tekst na podstawie promptu; API to Suno Lyrics Generation API.
Następnie, aby niestandardowo wygenerować piosenkę na podstawie tekstu, tytułu i stylu, można określić następującą zawartość:
  • lyric:tekst piosenki
  • custom:ustaw na true, co oznacza generowanie niestandardowe; domyślna wartość tego parametru to false, co oznacza generowanie przy użyciu prompt.
  • title:tytuł piosenki.
  • style:styl piosenki, opcjonalnie.
Przykład wypełnienia jest następujący:

Po wypełnieniu kod zostanie automatycznie wygenerowany w następujący sposób:

Odpowiedni kod:
Testowanie jest dozwolone, a efekt generowania jest podobny.

Funkcja niestandardowego generowania stylu wokalisty

Jeśli chcesz użyć stylu piosenkarza do generowania piosenek, najpierw wygeneruj piosenkę poprzez podstawowe użycie opisane powyżej, a następnie należy ustawić tę piosenkę jako styl piosenkarza. Potem należy przejść do Suno Persona API, aby na podstawie oficjalnie wygenerowanego identyfikatora muzyki audio_id wygenerować parametr id stylu piosenkarza persona_id; konkretne parametry są pokazane na poniższym obrazku:

Po wypełnieniu automatycznie generowany jest następujący kod:

Odpowiedni kod Python:
Kliknij uruchom, a zobaczysz, że otrzymasz wynik jak poniżej:
Jako przykładowe dane wykorzystamy powyższe audio_id i persona_id, odpowiednio 97efc9f4-0e8d-4b3e-88df-14568fa1b11f oraz e0d7319e-aa2a-44cb-b00a-916218d7cb0b. Następnie można ustawić parametr action na artist_consistency (jeśli jest to nowa wersja stylu piosenkarza Persona-v2-vox, action musi być ustawione na artist_consistency_vox) i wprowadzić ID piosenki, której generowanie ma być kontynuowane, oraz ID stylu piosenkarza, jak pokazano w poniższym przykładzie:

Po wypełnieniu automatycznie generowany jest następujący kod:

Odpowiedni kod Python:
Kliknij uruchom, a zobaczysz, że otrzymasz wynik jak poniżej:
Można zauważyć, że zawartość wyniku jest zgodna z tą powyżej, co realizuje funkcję generowania piosenek z użyciem stylu piosenkarza.

Funkcja kontynuowania generowania

Jeśli chcesz kontynuować generowanie już wygenerowanej piosenki Suno, możesz ustawić parametr action na extend i wprowadzić ID piosenki, której generowanie ma być kontynuowane. ID piosenki uzyskuje się poprzez podstawowe użycie; z powyższego tekstu wiadomo, że w tym momencie ID piosenki to:
Uwaga, id w tekście piosenki tutaj jest ID piosenki po jej wygenerowaniu. Jeśli nie wiesz, jak wygenerować piosenkę, możesz zapoznać się z podstawowym użyciem opisanym powyżej, aby wygenerować piosenkę.
Jeśli chcesz kontynuować generowanie własnej przesłanej piosenki, możesz ustawić parametr action na upload_extend i wprowadzić ID własnej przesłanej piosenki, której generowanie ma być kontynuowane. ID piosenki uzyskuje się za pomocą Suno Upload Generation API, jak pokazano na poniższym obrazku:

Następnie należy wypełnić tekst fragmentu kontynuacji i można określić styl:
  • lyric:używane tylko do kierowania tekstem nowo wygenerowanego fragmentu po continue_at; nie zastąpi tekstu przed tym punktem czasowym w źródłowym audio.
  • custom:ustawienie na true oznacza niestandardowe generowanie; domyślna wartość tego parametru to false, co oznacza generowanie z użyciem prompt.
  • style:styl piosenki dla fragmentu kontynuacji, opcjonalny.
  • continue_at:granica kontynuacji, w sekundach. Na przykład 213.5 oznacza rozpoczęcie generowania kolejnego fragmentu od 3 minut i 33.5 sekundy.
extend służy do dalszego tworzenia na podstawie istniejącej piosenki, a nie do zmiany tekstu całej piosenki. Jeśli chcesz użyć nowego tekstu od początku całej piosenki, użyj generate, aby wygenerować ją ponownie; jeśli chcesz ponownie zinterpretować istniejącą piosenkę, możesz użyć cover. Po przekazaniu całego nowego tekstu oryginalny tekst przed continue_at nadal nie zostanie zastąpiony.
Przykład wypełnienia jest następujący:

Po wypełnieniu automatycznie generowany jest następujący kod:

Poniżej zachowano rzeczywisty historyczny zrzut wywołania, w którym continue_at wynosi 2 sekundy, dlatego tylko pierwsze 2 sekundy należą do oryginalnej treści sprzed granicy kontynuacji. Przy faktycznej kontynuacji w pobliżu końca utworu należy ustawić tę wartość na liczbę sekund, od której oczekuje się rozpoczęcia kontynuacji, oraz podać w lyric wyłącznie nowy fragment, który ma być śpiewany po granicy. Odpowiedni kod Python:
Po kliknięciu uruchomienia można zauważyć, że zostanie uzyskany wynik, jak poniżej:
Jak można zauważyć, lyric w wyniku zwróci tekst piosenki użyty w tym zadaniu kontynuacji. To pole nie jest dosłowną transkrypcją kompletnego gotowego audio; w przypadku extend źródłowe audio przed continue_at nadal używa oryginalnego tekstu, a nowy tekst służy jedynie do kierowania fragmentem kontynuacji.

Pobieranie kompletnej piosenki

Wynik extend bieżącego modelu zazwyczaj zawiera już źródłowe audio przed continue_at oraz nową treść po granicy, dlatego najpierw należy ocenić na podstawie rzeczywistego czasu trwania i zawartości zwróconego audio, czy jest to już kompletna piosenka. Jeśli zwrócony został niezależny fragment kontynuacji lub konieczne jest jawne połączenie historii wielu kontynuacji w jedną piosenkę, należy następnie użyć funkcji łączenia:
  • action: wartość to concat.
  • audio_id: ID ostatniego fragmentu kontynuacji.
Na przykład, jeśli ID rozszerzonej piosenki to: 0a1e1b10-c36a-41c9-9bfb-b26d9d25db98, można ustawić parametry jak poniżej:
Pozostałe parametry pozostają bez zmian, a zwrócona zostanie kompletna piosenka, czyli wynik połączenia wszystkich fragmentów piosenki, jednak wynik zawiera tylko jedną piosenkę, jak w poniższym przykładzie:

Cover muzyczny

Po kontynuowaniu generowania utworu na podstawie oryginalnego utworu styl zwróconego utworu może nie być zbyt odpowiedni. Jeśli chcesz wykonać cover wcześniej wygenerowanego utworu (obsługiwana jest również niestandardowo przesłana muzyka), musisz użyć metody coveru muzycznego, dzięki czemu możesz określić następującą zawartość:
  • action:wartość to cover; gdy wykonywana jest operacja coveru na niestandardowo przesłanej muzyce, należy określić wartość jako: upload_cover.
  • audio_id:ID wcześniej wygenerowanego utworu.
Na przykład, jeśli ID wcześniej wygenerowanego utworu to: 0a1e1b10-c36a-41c9-9bfb-b26d9d25db98, możesz ustawić parametry w następujący sposób:
Pozostałe parametry pozostają bez zmian, a zwrócony wynik będzie utworem po wykonaniu coveru, czyli wynikiem wykonania coveru wcześniej wygenerowanego utworu, jak w poniższym przykładzie:
Wygenerowany wynik jest podobny do powyższego, co kończy proces generowania coveru wcześniej wygenerowanego utworu.

Zastępowanie fragmentu

Gdy po wygenerowaniu utworu konieczne jest przeprowadzenie wtórnej kreacji polegającej na osobnej operacji zastąpienia fragmentu utworu, można wykonać operację zastąpienia określonego fragmentu utworu.
⚠️ Uwaga:replace_section_result_mode domyślnie ma wartość full_song: system osobno połączy 2 nowo wygenerowane kandydaty i zwróci 2 kompletne utwory. Jeśli potrzebujesz tylko jeszcze niepołączonych kandydatów zastępowanego fragmentu, jawnie ustaw wartość na candidates, a następnie wybierz kandydata i wywołaj Łączenie muzyki.
Opis parametrów jest następujący:
  • action:wartość to replace_section.
  • audio_id:ID oryginalnego utworu (źródłowego utworu, który zostanie zastąpiony).
  • model: model generowania utworu.
  • lyric: pełny tekst po zastąpieniu (obejmujący zastępowany segment i jego kontekst, zgodny z treścią w prompt).
  • prompt:nowy tekst dla segmentu, który ma zostać zastąpiony.
  • style:styl utworu, opcjonalny.
  • replace_section_start:czas rozpoczęcia zastępowanego fragmentu w oryginalnym utworze (w sekundach).
  • replace_section_end:czas zakończenia zastępowanego fragmentu w oryginalnym utworze (w sekundach).
  • replace_section_result_mode:tryb zwracania, domyślnie full_song. full_song osobno łączy 2 kandydatów i zwraca 2 kompletne utwory; candidates zwraca 2 jeszcze niepołączone fragmenty kandydackie.

Krok pierwszy: rozpoczęcie zadania zastępowania fragmentu

Na przykład, jeśli ID wcześniej wygenerowanego utworu to: 18db7ed0-2b8a-41db-91c1-b0781dcca0d4 (czas trwania 94,12 sekundy) i chcesz zastąpić refren od 30. do 60. sekundy nowym tekstem, możesz ustawić parametry w następujący sposób:
Domyślnie zwracane są 2 pełne utwory, każdy złożony z jednego z dwóch kandydatów. Jeśli replace_section_result_mode zostanie ustawione na candidates, zwrócone zostaną 2 niepołączone jeszcze fragmenty zastępcze, o strukturze zgodnej z poniższym przykładem:
W trybie candidates długości dwóch zwróconych nagrań audio (45,16 sekundy, 33,8 sekundy) są znacznie krótsze niż oryginalny utwór (94,12 sekundy); są to fragmenty zastępcze zawierające niewielką ilość kontekstu i nie są całymi utworami. Można wybrać zadowalającego kandydata, aby kontynuować ręczne łączenie. Domyślny tryb full_song wykona natomiast dwa połączenia i bezpośrednio zwróci 2 pełne utwory.

Bezpośrednie zwracanie pełnych utworów

Jeśli chcesz bezpośrednio uzyskać pełne utwory, w kroku pierwszym możesz ustawić replace_section_result_mode na full_song. Interfejs połączy odpowiednio dwóch kandydatów i zwróci 2 pełne utwory; wówczas nie ma potrzeby ponownego wywoływania concat.

Krok drugi: połączenie fragmentu zastępczego z powrotem z oryginalnym utworem

Dla wybranego powyżej fragmentu (na przykład 364f9d8b-ca25-463b-9a5e-d0b7139e2d6a) rozpocznij zadanie concat zgodnie z metodą opisaną w sekcji Łączenie muzyki:
Zwracany jest połączony pełny utwór, a przykład wygląda następująco:
W tym momencie duration zostało przywrócone do pełnej długości utworu (105,28 sekundy, w przybliżeniu równej długości oryginalnego utworu), a audio_url wskazuje na cały utwór po zakończeniu zastępowania. Tym samym kończy się proces wtórnej twórczości „generowanie → zastępowanie fragmentu → składanie całego utworu”.

Separacja wokalu i muzyki

Gdy po wygenerowaniu utworu konieczne jest przeprowadzenie wtórnej twórczości z osobnymi operacjami na akompaniamencie i wokalu, można oddzielić czysto muzyczny akompaniament i wokal a cappella. Można wtedy określić następującą zawartość:
  • action:wartość to stems。
  • audio_id:ID wcześniej wygenerowanego utworu。
Na przykład, jeśli ID wcześniej wygenerowanego utworu to: ec13e502-d043-4eb2-92ee-e900c6da69d1, można ustawić parametry w następujący sposób:
Za pomocą powyższych parametrów można uzyskać wynik separacji wokalu i muzyki, przedstawiony poniżej:
Wygenerowany wynik jest podobny do powyższego, co kończy proces separacji wokalu i muzyki dla wcześniej wygenerowanego utworu.

Separacja wokalu i muzyki na wszystkich ścieżkach

Gdy po wygenerowaniu utworu konieczne jest przeprowadzenie operacji separacji wokalu i muzyki na wszystkich ścieżkach, można określić następującą zawartość:
  • action:wartość to all_stems。
  • audio_id:ID wcześniej wygenerowanego utworu。
Na przykład, jeśli ID wcześniej wygenerowanego utworu to: bdf23a5a-59f5-4103-b452-054a824a7f9f, można ustawić parametry w następujący sposób:
Za pomocą powyższych parametrów można uzyskać wynik separacji wokalu i muzyki na wszystkich ścieżkach, przedstawiony poniżej:
Wygenerowany wynik jest podobny do powyższego, co kończy proces separacji wokalu i muzyki z wcześniej wygenerowanej piosenki.

Dodawanie ścieżki audio

add_stem generuje docelową ścieżkę instrumentu lub głosu dla określonego dźwięku audio, wywoływane przez POST /suno/audios.
  • Wymagane: action, audio_id, stem_type.
  • Opcjonalne: model, prompt, title, style, negative_tags, weirdness, style_influence, audio_weight, max_mode, variety.
  • Opłata: tryb zwykły 0.672 Credits; gdy max_mode ma wartość true, 1.344 Credits.
Odpowiedź w stanie końcowym:

Wyodrębnianie ścieżki audio

extract_stem wyodrębnia docelową ścieżkę audio z określonego dźwięku audio, jednocześnie zwracając wersję uzupełniającą po usunięciu tej ścieżki, wywoływane przez POST /suno/audios.
  • Wymagane: action, audio_id, stem_type.
  • Opcjonalne: audio_format, obecny publiczny kontrakt dwukanałowy obsługuje tylko mp3.
  • Opłata: 1.12 Credits.
data w odpowiedzi w stanie końcowym zachowuje płaską listę audio, a stem_sets wskazuje relację między docelową ścieżką audio a ścieżką uzupełniającą:

Generowanie efektów dźwiękowych

sounds generuje jednorazowe lub zapętlane efekty dźwiękowe na podstawie opisu tekstowego, wywoływane przez POST /suno/audios.
  • Wymagane: action, sound, sound_type.
  • Opcjonalne: model, bpm, key, audio_format; audio_format obecnie obsługuje tylko mp3.
  • sound_type: one-shot lub loop.
  • Opłata: 0.112 Credits.

Dostosowywanie prędkości audio

adjust_speed dostosowuje prędkość odtwarzania określonego audio, wywoływane przez POST /suno/audios.
  • Wymagane: action, audio_id, speed_multiplier, title.
  • Opcjonalne: keep_pitch.
  • speed_multiplier: zakres 0.25–4.
  • Rozliczenie: 0.28 Credits.
Czas trwania źródłowego audio wynosi 9.8 sekundy, wynik przy prędkości 1.1x wynosi 8.909090909 sekundy:
Model generujący ma losowość. Interfejs gwarantuje spójność semantyki parametrów, statusu zadania i struktury odpowiedzi, nie gwarantuje całkowicie identycznych przebiegów fal generowanych przez różne żądania.

Zaawansowane parametry niestandardowego generowania

Oficjalnie zezwala się na używanie w trybie niestandardowym zaawansowanych parametrów weirdness==>Weirdness, style_influence==>Style Influence, audio_weight==>Audio Influence do generowania, odpowiadających następującym oficjalnym przykładom:

Zakresy zaawansowanych parametrów mieszczą się wszystkie między 0 a 1, konkretne parametry pokazano na poniższym obrazku:

Po wypełnieniu automatycznie generowany jest kod jak poniżej:

Odpowiedni kod Python:
Kliknij uruchom, można zauważyć, że zostanie uzyskany wynik, jak poniżej:
W ten sposób użyto zaawansowanych parametrów do wygenerowania niestandardowej piosenki, wynik jest podobny do powyższego.

Kontrolowanie długości piosenki

Domyślnie długość generowanej piosenki jest określana przez model, zwykle wynosi od 30 sekund do 4 minut. Jeśli potrzebny jest dłuższy lub krótszy gotowy utwór, można określić oczekiwaną długość za pomocą parametru duration, jednostką są sekundy, a wartość jest liczbą całkowitą od 10 do 360. Ten parametr jest używany do generowania piosenek w trybie niestandardowym (custom ma wartość true). Należy szczególnie wyjaśnić, że duration jest wskazówką tendencji, a nie twardym ograniczeniem: model będzie odnosił się do tej wartości podczas tworzenia, ale nie gwarantuje jej osiągnięcia; w testach rzeczywista długość jest zwykle wyraźnie krótsza od oczekiwanej wartości, a długości dwóch piosenek zwróconych w tym samym żądaniu mogą również różnić się kilkukrotnie. Nawet w przypadku całkowicie identycznych żądań długości uzyskane po wielokrotnym przesłaniu mogą również znacznie się różnić. Dlatego nie należy używać tego jako precyzyjnej kontroli długości; jeśli w zastosowaniu biznesowym potrzebna jest stała długość, należy samodzielnie przyciąć gotowy utwór lub ponowić próbę po jego otrzymaniu. Odpowiedni kod Python:
Należy zauważyć, że duration w żądaniu jest oczekiwanym czasem trwania, natomiast pole duration każdej piosenki w odpowiedzi data jest rzeczywistym czasem trwania tej piosenki. Nazwy obu są takie same, ale ich znaczenia są różne; rzeczywisty czas trwania nie musi być równy oczekiwanej wartości. Długość tekstu jest jednym z głównych czynników wpływających na czas trwania gotowego utworu; jeśli potrzebny jest dłuższy gotowy utwór, zaleca się jednoczesne podanie pełniejszego tekstu. Interfejs sprawdza, czy duration jest liczbą całkowitą od 10 do 360; nadal jest to jedynie cel generowania, a nie gwarancja długości gotowego utworu.

Funkcja Add Insterumental

W sierpniu 2025 roku suno wprowadziło nową funkcję Add Insterumental. Najpierw należy przesłać utwór a cappella bez podkładu muzycznego, aby suno mogło dodać do niego muzykę. Najpierw można przejść do Suno Upload API, aby przesłać utwór a cappella bez podkładu muzycznego; odpowiednie operacje są pokazane na poniższym obrazie:

Następnie należy zapisać audio_id po przesłaniu, a konkretny wynik jest pokazany na poniższym obrazie:

Na końcu otrzymujemy audio_id: 92254cab-3372-4d9e-bce9-cdcfdbc39070, a następnie musimy jeszcze wypełnić następujące parametry:
  • action: wartość to underpainting.
  • underpainting_start: czas rozpoczęcia dodawania akompaniamentu do przesłanego utworu, wartość domyślna to 0.
  • underpainting_end: czas zakończenia dodawania akompaniamentu do przesłanego utworu, musi być mniejszy niż całkowity czas trwania utworu.
  • audio_id: ID przesłanego utworu a cappella bez podkładu muzycznego.
  • style: styl akompaniamentu, najlepiej bez tekstu, ponieważ w końcu jest to podkład muzyczny.
Po wypełnieniu kod jest automatycznie generowany w następujący sposób:

Odpowiedni kod Python:
Klikając uruchom, można zauważyć, że otrzymamy wynik jak poniżej:
W ten sposób zakończono operację dodawania muzyki do przesłanego utworu a cappella bez podkładu muzycznego, a wynik jest podobny do opisanego powyżej.

Funkcja Add Vocals

W sierpniu 2025 roku suno wprowadziło nową funkcję Add Vocals. Najpierw należy przesłać utwór instrumentalny, aby suno napisało tekst i wygenerowało śpiew wokalny. Najpierw można przejść do Suno Upload API, aby przesłać utwór a cappella bez podkładu muzycznego; odpowiednie operacje są pokazane na poniższym obrazie:

Następnie należy zapisać audio_id po przesłaniu, a konkretny wynik jest pokazany na poniższym obrazie:

Na końcu otrzymujemy audio_id: 92254cab-3372-4d9e-bce9-cdcfdbc39070, a następnie musimy jeszcze wypełnić następujące parametry:
  • action: wartość to overpainting.
  • overpainting_start: czas rozpoczęcia dodawania wokalu do przesłanego utworu, wartość domyślna to 0.
  • overpainting_end: czas zakończenia dodawania wokalu do przesłanego utworu, musi być mniejszy niż całkowity czas trwania utworu.
  • audio_id: ID przesłanego utworu a cappella bez podkładu muzycznego.
  • custom: w tym trybie należy użyć trybu niestandardowego do wprowadzenia tekstu.
  • lyric: tekst wprowadzony w trybie niestandardowym.
  • style: styl akompaniamentu.
Po wypełnieniu kod jest automatycznie generowany w następujący sposób:

Odpowiedni kod Python:
Klikając uruchomienie, można zauważyć, że otrzymamy wynik, jak poniżej:
W ten sposób zakończono operację dodawania wokalu do przesłanej piosenki a cappella bez podkładu, wynik jest podobny do powyższego.

Funkcja Remaster

W grudniu 2025 roku suno wprowadziło nową funkcję Remaster, funkcja ta może ponownie wygenerować piosenkę, nie można tego robić między kontami, następnie musimy jeszcze wypełnić następujące parametry:
  • action:wartość to remaster。
  • audio_id:ID piosenki, którą należy ponownie wygenerować。
  • model:obsługuje tylko v4.5+、v5。
  • variation_category:obsługiwane tylko w wersji v5 i wyższych, a dostępne są tylko 3 wartości: high normal subtle。
Po wypełnieniu automatycznie generowany jest kod, jak poniżej:

Odpowiedni kod Python:
Klikając uruchomienie, można zauważyć, że otrzymamy wynik, jak poniżej:
W ten sposób zakończono operację ponownego generowania już wygenerowanej piosenki, wynik jest podobny do powyższego.

Funkcja generowania miksów Mashup

W grudniu 2025 roku suno wprowadziło nową funkcję Mashup, funkcja ta może generować piosenkę na podstawie dwóch referencyjnych piosenek, następnie musimy jeszcze wypełnić następujące parametry:
  • action:wartość to mashup。
  • mashup_audio_ids:ID dwóch referencyjnych piosenek。 Po wypełnieniu formularza kod został automatycznie wygenerowany w następujący sposób:

Odpowiadający kod Python:
Po kliknięciu uruchomienia można zauważyć, że zostanie uzyskany wynik, jak poniżej:
W ten sposób zakończono operację generowania miksu na podstawie referencyjnych piosenek, a wynik jest podobny do opisanego powyżej.

Samples generowanie piosenek na podstawie próbek

Samples tutaj oznacza pobieranie próbek z pojedynczego fragmentu audio: wybierz czas rozpoczęcia i zakończenia z istniejącego nagrania audio, a następnie użyj tego fragmentu jako materiału do tworzenia. Różni się to od funkcji tworzenia inspirowanego Inspo, która używa od 1 do 4 pełnych referencyjnych nagrań audio, opisanej poniżej. Należy wypełnić następujące parametry:
  • action:wartość to samples.
  • samples_start:czas rozpoczęcia pobierania próbki.
  • samples_end:czas zakończenia pobierania próbki.
  • audio_id:ID referencyjnej piosenki, z której należy pobrać próbkę.
Po wypełnieniu formularza kod został automatycznie wygenerowany w następujący sposób:

Odpowiadający kod Python:
Po kliknięciu uruchomienia można zauważyć, że zostanie uzyskany wynik, jak poniżej:
W ten sposób operacja generowania utworu na podstawie próbkowania jest zakończona, a wynik jest podobny do opisanego powyżej.

Funkcja tworzenia inspirowanego Inspo

Funkcja tworzenia inspirowanego Inspo może generować nową muzykę na podstawie od 1 do 4 pełnych referencyjnych nagrań audio oraz obsługuje przeciąganie i upuszczanie lub przesyłanie audio jako źródła inspiracji. API używa istniejącej akcji inspo: klient podaje publicznie dostępne adresy URL audio, a usługa automatycznie kończy przygotowanie referencyjnego audio i tworzenie, bez konieczności osobnego odczytywania przez klienta tekstu, stylu lub długości i składania żądania. Różni się to od opisanego powyżej próbkowania zakresu, a także od Cover odtwarzającego styl oryginalnego utworu. Podczas użycia należy wypełnić następujące parametry:
  • action: zawartością jest inspo.
  • audio_urls: lista adresów URL referencyjnego audio; należy podać od 1 do 4 publicznie dostępnych adresów audio.
  • model: używany model, zalecany jest chirp-v6.
  • prompt: tekst piosenki lub wskazówki twórcze (opcjonalnie).
Uwaga: referencyjne audio musi być publicznie dostępnym plikiem audio. Jeśli referencyjne audio idealnie odpowiada znanemu nagraniu w katalogu utworów platformy, Suno może odmówić generowania z powodu weryfikacji praw autorskich; zaleca się używanie własnego audio lub audio wygenerowanego przez Suno jako źródła inspiracji.
Odpowiedni kod Python:
Poniżej zachowano zweryfikowany historyczny zrzut odpowiedzi; zrzut używa ówczesnego chirp-v5, w bieżącym przykładzie żądania zalecany jest chirp-v6, a struktura zwracanych danych jest taka sama:
W ten sposób operacja tworzenia z inspiracji jest zakończona, a zwrócony wynik jest taki sam jak w przypadku zwykłego generowania piosenek.

Asynchroniczne wywołanie zwrotne

Ponieważ generowanie muzyki przez Suno trwa stosunkowo długo, około 1–2 minut, jeśli API przez długi czas nie odpowiada, żądanie HTTP będzie stale utrzymywać połączenie, co prowadzi do dodatkowego zużycia zasobów systemowych, dlatego to API również zapewnia obsługę asynchronicznych wywołań zwrotnych. Ogólny proces wygląda następująco: gdy klient inicjuje żądanie, dodatkowo określa pole callback_url; po wysłaniu przez klienta żądania API, API natychmiast zwróci wynik zawierający informację w polu task_id, reprezentującą bieżący identyfikator zadania. Po zakończeniu zadania wynik generowania muzyki zostanie wysłany w formie POST JSON na callback_url określony przez klienta, który również zawiera pole task_id, dzięki czemu wynik zadania można powiązać za pomocą identyfikatora. Poniżej zapoznamy się ze szczegółowym sposobem działania na przykładzie. Po pierwsze, wywołanie zwrotne Webhook jest usługą, która może odbierać żądania HTTP; programista powinien zastąpić je adresem URL własnego serwera HTTP. W celu wygodnej prezentacji użyto tutaj publicznej przykładowej strony Webhook https://webhook.site/; po otwarciu tej strony można uzyskać adres URL Webhook, jak pokazano na rysunku: Skopiuj ten URL, aby użyć go jako Webhooka; przykładowy adres tutaj to https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2. Następnie możemy ustawić pole callback_url na powyższy adres URL Webhooka, jednocześnie wypełniając prompt, jak pokazano na rysunku: Kliknij uruchom, a zobaczysz, że wynik zostanie uzyskany natychmiast, jak poniżej:
Po krótkiej chwili możemy zaobserwować wynik wygenerowanej piosenki na https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2, jak pokazano na rysunku: Treść jest następująca:
Można zauważyć, że w wyniku znajduje się pole task_id, a pozostałe pola są podobne do opisanych powyżej; za pomocą tego pola można zrealizować powiązanie zadań. Oczywiście możemy również uzyskać wynik poprzez wywołanie strumieniowe; wystarczy ustawić wartość accept w nagłówku żądania na application/x-ndjson, poniżej użyto przykładowego wejścia jako demonstracji:

Podczas oczekiwania możemy uzyskać następujące dane wyjściowe:
Odpowiedź strumieniowa będzie kolejno wysyłać status przetwarzania i wynik końcowy dla tego samego task_id; powyżej zachowano jedynie pierwszą i końcową rzeczywistą odpowiedź, pomijając powtarzające się aktualizacje pośrednie.

Obsługa błędów

Jeśli wystąpi błąd, otrzymasz komunikat o błędzie podobny do następującego:
Poniżej znajduje się lista HTTP Status Code, error.code, error.message:
Uwaga: limity i komunikaty o błędach różnych kont upstream mogą się różnić. Zwykle ograniczenie style dla chirp-v3-5/chirp-v4 jest niższe (200), podczas gdy chirp-v4-5 i nowsze wersje zazwyczaj obsługują do 1000; w przypadku korzystania ze starszego upstreamu mogą pojawić się kompatybilne komunikaty, takie jak Tags too long. lub style must be less than or equal 120. | Kod statusu | error.code | error.message | | ----------- | ------------- | --------------------------------------------------------------- | | 400 | bad_request | Id utworu nie istnieje lub został wyłączony. | | 400 | bad_request | Prompt jest zbyt długi. | | 400 | bad_request | Tagi są zbyt długie. | | 400 | bad_request | Przesłane audio odpowiada istniejącemu dziełu sztuki. | | 400 | bad_request | instrumental musi być wartością logiczną | | 400 | bad_request | Tytuł jest zbyt długi. | | 400 | bad_request | Temat jest zbyt długi. | | 400 | bad_request | style musi być mniejsze lub równe 120 | | 400 | bad_request | custom musi być wartością logiczną | | 400 | bad_request | audio_id jest wymagane podczas rozszerzania audio | | 400 | bad_request | continue_at jest wymagane podczas rozszerzania audio | | 400 | bad_request | continue_at musi być liczbą większą niż 0 | | 400 | bad_request | lyric jest wymagane podczas rozszerzania audio, gdy instrumental ma wartość false | | 400 | bad_request | prompt jest wymagane podczas generowania audio | | 400 | bad_request | lyric jest wymagane podczas generowania niestandardowego audio | | 403 | forbidden | Prompt jest prawdopodobnie nieprawidłowo sformułowany | | 403 | forbidden | Prompt prawdopodobnie jest chroniony prawem autorskim | | 403 | forbidden | Prompt zawierał nieodpowiednie materiały | | 403 | forbidden | Opis utworu oznaczony do moderacji | | 403 | forbidden | Opis utworu zawierał nazwę artysty | | 403 | forbidden | Tagi zawierały nazwę artysty | | 403 | forbidden | Tekst zawierał materiały chronione prawem autorskim | | 403 | forbidden | Opis utworu zawierał tag producenta | | 403 | forbidden | Ogólny błąd openAI | | 403 | forbidden | Prompt oznaczony do moderacji | | 500 | api_error | Nie można wygenerować tekstu z opisu utworu | | 500 | api_error | zadanie nie powiodło się z nieznanym błędem | | 500 | api_error | brak dostępnego workera w systemie | | 500 | api_error | usługa w trakcie konserwacji, generowanie wstrzymane | | 504 | timeout | przekroczono limit czasu podczas oczekiwania na generowanie audio |