Перейти к основному содержанию
В этой статье будет представлена инструкция по интеграции Producer Audios Generation API, который позволяет генерировать официальную музыку Producer посредством ввода пользовательских параметров.

Процесс подачи заявки

Чтобы использовать Producer Audios Generation API, сначала получите ваш API Token в консоли Ace Data Cloud и сохраните его для дальнейшего использования. Если вы ещё не вошли в систему или не зарегистрировались, вы будете автоматически перенаправлены на страницу входа, где вам будет предложено зарегистрироваться и войти в систему; после завершения вы автоматически вернётесь на текущую страницу. Один API Token позволяет вызывать все сервисы платформы, нет необходимости подавать отдельную заявку для каждого сервиса. При первой заявке предоставляется бесплатный лимит для бесплатного ознакомления; при недостатке лимита вы можете пополнить общий баланс в консоли.
📘 Полная документация: Producer Audios Generation API →

Базовое использование

О какой песне вы думаете — можно произвольно ввести текст. Например, если я хочу сгенерировать песню о Рождестве, можно ввести a song for Christmas, как показано на рисунке:

Можно увидеть, что здесь мы установили Request Headers, включая:
  • accept: в каком формате вы хотите получить результат ответа; здесь указывается application/json, то есть формат JSON.
  • authorization: ключ для вызова API, после подачи заявки его можно непосредственно выбрать из выпадающего списка.
Кроме того, параметры Request Body включают:
  • action: действие этой задачи генерации музыки; для генерации песни используется generate.
  • model: модель, используемая для создания песни; в настоящее время основные модели: FUZZ-2.0 Pro, FUZZ-2.0, FUZZ-2.0 Raw,FUZZ-1.1 Pro, FUZZ-1.0 Pro, FUZZ-1.0, FUZZ-1.1, FUZZ-0.8.
  • lyric: содержание текста песни.
  • custom: использовать ли пользовательский способ генерации песни.
  • prompt: подсказка в режиме вдохновения.
  • title: информация о названии песни.
  • audio_id: ID эталонной песни, используется для таких операций, как продолжение/кавер и т. д.
  • continue_at: начать продолжение песни с указанной секунды.
  • replace_section_start/replace_section_end: время начала и окончания заменяемого фрагмента в секундах.
  • lyrics_strength: сила текста песни, обозначает степень влияния текста на генерацию аудио; доступно значение от 0 до 1, по умолчанию 0.7.
  • sound_strength: сила подсказки аудио; доступно значение от 0.2 до 1, по умолчанию 0.7.
  • cover_strength: сила кавера — от 0.2 до 1, по умолчанию 1.
  • weirdness: степень необычности стиля; доступно значение от 0 до 1, по умолчанию 0.5.
  • callback_url: URL, на который необходимо отправить результат обратного вызова.
  • async: необязательно; если установлено значение true, интерфейс немедленно возвращает task_id, без необходимости предоставлять callback_url, после чего результат можно получить путём опроса соответствующего интерфейса запроса задач.
  • instrumental: является ли это режимом без текста песни.
После выбора можно заметить, что справа также сгенерирован соответствующий код, как показано на рисунке:

Нажмите кнопку «Try», чтобы выполнить тестирование. Как показано на рисунке выше, здесь мы получили следующий результат:
Результат ответа содержит несколько полей, описание которых приведено ниже:
  • success: статус текущей задачи генерации музыки.
    • data: результат этой музыкальной задачи.
      • id: ID текущей задачи генерации музыки.
      • sound: подсказка текущей задачи генерации музыки.
      • seed: значение seed текущей задачи генерации музыки.
      • audio_url: ссылка на аудио текущей задачи генерации музыки.
      • image_url: ссылка на обложку текущей задачи генерации музыки.
      • image_id: ID обложки текущей задачи генерации музыки.
      • state: статус текущей задачи генерации музыки.
      • duration: информация о длительности текущей музыки.
      • progress: значение прогресса текущей музыкальной задачи.
      • model: информация о модели, используемой текущей задачей генерации музыки.
      • lyric: информация о тексте песни текущей задачи генерации музыки.
Можно увидеть, что мы получили информацию о нужной музыке. Нам нужно лишь получить сгенерированную музыку Producer по адресу ссылки на музыку в data результата. Кроме того, если вы хотите сгенерировать соответствующий код интеграции, можете непосредственно скопировать сгенерированный код, например, код CURL выглядит следующим образом:

Пользовательская генерация

Если вы хотите пользовательским образом сгенерировать текст песни, можно ввести текст: В это время в поле lyric можно передать содержимое, аналогичное следующему:
Далее, чтобы пользовательским образом сгенерировать песню на основе текста, названия и стиля, можно указать следующее содержимое:
  • lyric:текст песни
  • custom:укажите true, что означает пользовательскую генерацию; по умолчанию данный параметр имеет значение false, что означает генерацию с использованием prompt.
  • title:название песни.
Пример заполнения приведён ниже:

После заполнения автоматически генерируется следующий код:

Соответствующий код:
Тестирование разрешено, результат генерации является аналогичным.

Кавер-версии песен

Если вы хотите выполнить операцию создания кавер-версии для уже сгенерированной песни, вы можете ввести сгенерированную выше песню для создания кавер-версии; далее мы будем пользовательски генерировать песню на основе текста и названия. Если вы хотите продолжить создание кавер-версии для самостоятельно загруженной песни, можно установить параметр action в значение upload_cover и ввести ID самостоятельно загруженной песни, для которой необходимо продолжить создание кавер-версии. ID песни получается с помощью Producer Upload API, как показано на рисунке ниже:

Можно указать следующее содержимое:
  • action:действие задачи данной песни; в настоящее время поддерживаются: generate、cover、extend、upload_cover、upload_extend、replace_section、swap_vocals、swap_instrumentals、variation; для данной кавер-версии используется параметр cover.
  • lyric:текст песни
  • title:название песни.
  • custom:использовать ли пользовательский режим для генерации; по умолчанию — false.
  • audio_id:ID песни, для которой необходимо создать кавер-версию.
Пример заполнения приведён ниже:

После заполнения автоматически генерируется следующий код:

Соответствующий код:
Тестирование разрешено, результат генерации является аналогичным.

Продолжение песни

Если вы хотите продолжить песню, нам нужно передать значение параметра action: extend, далее мы можем пользовательски генерировать песню на основе текста, названия и стиля. Если вы хотите продолжить песню, загруженную вами самостоятельно, можно установить для параметра action значение upload_extend и ввести ID самостоятельно загруженной песни, которую необходимо продолжить. ID песни получается с помощью Producer Upload API, как показано на рисунке ниже:

Пример заполнения приведён ниже:

После заполнения автоматически генерируется следующий код:

Соответствующий код:
Тест выполнен успешно, сгенерированный результат аналогичен.

Вариация музыки

Если вы хотите сгенерировать новую музыку с похожим эффектом на основе значения seed предыдущей композиции, нам нужно передать значение параметра action: variation, после чего можно пользовательски сгенерировать новую музыку с похожим эффектом. Пример заполнения приведён ниже:

После заполнения автоматически генерируется следующий код:

Соответствующий код:
Тестирование разрешено, сгенерированный результат является похожим.

Замена фрагмента

Если вы хотите выполнить замену фрагмента в песне, нам необходимо передать значение параметра action как: replace_section, далее мы можем создавать песни по своему усмотрению на основе текста и названия. Если вы хотите продолжить заменять фрагменты в песне, загруженной вами самостоятельно, вы можете установить параметр action в значение upload_replace_section и ввести ID самостоятельно загруженной песни, для которой необходимо продолжить замену. ID песни получается с помощью Producer Upload API, как показано на рисунке ниже:

Пример заполнения приведён ниже:

После заполнения код автоматически генерируется следующим образом:

Соответствующий код:
Тестирование разрешено, сгенерированный результат является похожим.

Версия с заменой инструментала

Если вы хотите использовать официальную операцию создания версии с заменой инструментала, можно установить значение параметра action в: swap_instrumentals, далее мы будем пользовательски генерировать песню на основе текста и названия. Пример заполнения:

После заполнения автоматически генерируется следующий код:

Соответствующий код:
Тестирование разрешено, сгенерированный эффект похожий.

Версия с заменой вокала

Если вы хотите использовать официальную операцию создания версии с заменой вокала, можно установить значение параметра action в: swap_vocals, далее мы будем пользовательски генерировать песню на основе текста, названия и стиля. Пример заполнения:

После заполнения автоматически генерируется следующий код:

Соответствующий код:
Тестирование разрешено, сгенерированный эффект похожий.

Разделение вокала и музыки

Если вы хотите использовать официальную операцию разделения вокала и музыки, можно установить значение параметра action в: stems, далее мы будем выполнять разделение вокала и музыки на основе ID песни. Пример заполнения выглядит следующим образом:

После заполнения автоматически генерируется следующий код:

Соответствующий код:
Тест разрешён, сгенерированный результат аналогичен.

Асинхронный обратный вызов

Поскольку время генерации Producer Audios Generation API иногда может быть относительно долгим, если API долго не отвечает, HTTP-запрос будет постоянно поддерживать соединение, что приводит к дополнительному потреблению системных ресурсов, поэтому данный API также предоставляет поддержку асинхронных обратных вызовов. Общий процесс таков: когда клиент инициирует запрос, он дополнительно указывает поле callback_url, после того как клиент инициирует API-запрос, API немедленно вернёт результат, содержащий информацию о поле task_id, которое представляет ID текущей задачи. После завершения задачи результат задачи генерации будет отправлен в формате POST JSON на указанный клиентом callback_url, который также включает поле task_id, таким образом результаты задачи можно связать по ID. Ниже мы на примере узнаем, как именно это сделать. Прежде всего, обратный вызов Webhook — это сервис, который может принимать HTTP-запросы, разработчик должен заменить его URL-адресом собственного развёрнутого HTTP-сервера. Здесь для удобства демонстрации используется публичный пример сайта Webhook https://webhook.site/, открыв этот сайт, можно получить URL Webhook, как показано на рисунке: Скопировав этот URL, его можно использовать в качестве Webhook, пример здесь: https://webhook.site/#!/view/0d73431d-f833-4be4-9276-b6e1690d55c1. Далее мы можем установить для поля callback_url указанный выше URL Webhook и одновременно заполнить соответствующие параметры, конкретное содержимое показано на рисунке:

Нажмите «Запустить», и можно обнаружить, что немедленно будет получен результат, как показано ниже:
Немного подождав, мы можем наблюдать результат задачи генерации на https://webhook.site/#!/view/0d73431d-f833-4be4-9276-b6e1690d55c1, как показано на рисунке: Содержимое следующее:
Можно увидеть, что в результате есть поле task_id, остальные поля аналогичны приведённым выше, и с помощью этого поля можно реализовать связь задач.

Обработка ошибок

При вызове API, если возникает ошибка, API возвращает соответствующий код ошибки и информацию. Например:
  • 400 token_mismatched:Неверный запрос, возможно, из-за отсутствующих или недопустимых параметров.
  • 400 api_not_implemented:Неверный запрос, возможно, из-за отсутствующих или недопустимых параметров.
  • 401 invalid_token:Не авторизован, недопустимый или отсутствующий токен авторизации.
  • 429 too_many_requests:Слишком много запросов, вы превысили ограничение по частоте запросов.
  • 500 api_error:Внутренняя ошибка сервера, на сервере что-то пошло не так.

Пример ответа с ошибкой

Заключение

С помощью этого документа вы уже узнали, как использовать Producer Audios Generation API для генерации музыки путём ввода подсказок. Надеемся, этот документ поможет вам лучше интегрировать и использовать этот API. Если у вас возникнут какие-либо вопросы, пожалуйста, свяжитесь с нашей командой технической поддержки.