Клонирование голоса в музыке: как подключить Suno Voices API за два запроса
Клонирование голоса для генерации музыки — задача, которая ещё пару лет назад требовала собственной ML-инфраструктуры и обучения моделей. Сегодня это можно сделать одним HTTP-запросом. В этой статье разберём, как через единый endpoint https://api.acedata.cloud подключить API клонирования голоса Suno и использовать полученный голосовой профиль для генерации песен с моделями chirp-v4-5 и выше.
Зачем это нужно
API клонирования голоса Suno позволяет создать кастомного «персонажа» из любого аудиофайла — записи собственного голоса, вокала артиста (с соответствующими правами) или дублирующей дорожки — и затем использовать этот тембр при генерации новых композиций. В отличие от готовых Persona, которые формируются из audio_id, здесь на вход подаётся публично доступный audio_url — то есть можно клонировать голос из собственного WAV/MP3 файла, загруженного на любой публичный хостинг.
Требования к исходному аудио
- Формат —
WAVилиMP3 - Длительность не менее 10 секунд, оптимально 30–60 секунд чистой записи
- Один чёткий, узнаваемый голос — речь или пение
- Без фонового шума, музыкального сопровождения, эха и реверберации
- Не допускается несколько говорящих или наложенных голосов
- Тихая, невнятная или зашумлённая запись может привести к сбою клонирования или низкому качеству результата
Важный нюанс: голосовой профиль, созданный загрузкой аудио, — приватный ресурс. Он не подходит для повторного использования на других аккаунтах, и рекомендуется использовать его вскоре после создания — при долгом простое профиль может стать недоступным.
Шаг 1. Создание голосового профиля
Отправляем POST-запрос с публичной ссылкой на аудиофайл. Параметр audio_url обязателен, name и description — опциональны, но помогают потом находить профиль в списке.
curl -X POST 'https://api.acedata.cloud/suno/voices' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
"audio_url": "https://example.com/my-voice-sample.mp3",
"name": "My Voice Test",
"description": "Чистая запись голоса, 45 секунд"
}'
Ответ содержит persona_id — именно этот идентификатор понадобится на следующем шаге:
{
"success": true,
"task_id": "b9150e51-d87c-4556-a55e-100947a63bdf",
"data": {
"persona_id": "e95013f8-eaee-4741-a42f-1d559a9d0b2b",
"name": "My Voice Test",
"is_public": false
}
}
Шаг 2. Генерация песни с клонированным голосом
Теперь используем persona_id в вызове генерации аудио. Обязательно указываем action: "generate" и модель не ниже chirp-v4-5 — клонирование голоса не поддерживается на chirp-v4.
curl -X POST 'https://api.acedata.cloud/suno/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
"action": "generate",
"model": "chirp-v5-5",
"prompt": "A warm synth-pop song about city nights",
"persona_id": "e95013f8-eaee-4741-a42f-1d559a9d0b2b"
}'
То же самое на Python — удобно, если клонирование голоса встраивается в бэкенд-пайплайн:
import requests
TOKEN = "your_token_here"
BASE = "https://api.acedata.cloud"
headers = {
"accept": "application/json",
"authorization": f"Bearer {TOKEN}",
"content-type": "application/json",
}
voice_resp = requests.post(
f"{BASE}/suno/voices",
headers=headers,
json={
"audio_url": "https://example.com/my-voice-sample.mp3",
"name": "My Voice Test",
},
)
persona_id = voice_resp.json()["data"]["persona_id"]
print("persona_id:", persona_id)
audio_resp = requests.post(
f"{BASE}/suno/audios",
headers=headers,
json={
"action": "generate",
"model": "chirp-v5-5",
"prompt": "A warm synth-pop song about city nights",
"persona_id": persona_id,
},
)
data = audio_resp.json()["data"][0]
print(data["title"], data["audio_url"])
Результат — массив с готовыми треками, у каждого есть прямая ссылка на аудио и превью-обложку:
{
"success": true,
"data": [
{
"id": "16463960-077c-4700-bbb3-3c7897b943d3",
"title": "Soft Neon on My Skin",
"audio_url": "https://cdn1.suno.ai/16463960-077c-4700-bbb3-3c7897b943d3.mp3",
"model": "chirp-v5-5",
"state": "succeeded",
"duration": 156.28
}
]
}
Ещё один сценарий: cover с новым тембром
Тот же persona_id можно передать не только с action: "generate", но и с action: "cover" — это позволяет перепеть существующую композицию клонированным голосом, сохранив аранжировку оригинала. Полезно для локализации кавер-версий или адаптации референс-трека под нужный тембр.
Инженерные заметки
- Проверяйте
stateв ответе — генерация асинхронна, и при статусе, отличном отsucceeded, стоит опрашивать задачу поtask_idс экспоненциальной задержкой - Не переиспользуйте один и тот же
persona_idспустя длительное время без проверки — если профиль истёк, API вернёт ошибку, и профиль нужно будет пересоздать - Так как endpoint единый для всех моделей платформы, тот же токен и тот же паттерн запросов работают для GPT, Claude, Gemini, Midjourney, Flux и других моделей — не нужно поддерживать десяток разных SDK
Как начать
Зарегистрируйтесь на platform.acedata.cloud/ru, создайте приложение и токен в разделе console/applications, а полную документацию по всем эндпоинтам, включая параметры Suno Voices и Suno Audios, смотрите на странице platform.acedata.cloud/documents. Для разработчиков, работающих с несколькими моделями одновременно, единый endpoint и единый биллинг существенно упрощают архитектуру приложения — не нужно держать отдельные интеграции и отдельные ключи для каждого провайдера.
Comments
Post a Comment