生成 Persona
curl --request POST \
--url https://apibox.erweima.ai/api/v1/generate/generate-persona \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"taskId": "5c79****be8e",
"audioId": "e231****-****-****-****-****8cadc7dc",
"name": "电子流行歌手",
"description": "具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色",
"vocalStart": 0,
"vocalEnd": 30,
"style": "电子流行"
}
'import requests
url = "https://apibox.erweima.ai/api/v1/generate/generate-persona"
payload = {
"taskId": "5c79****be8e",
"audioId": "e231****-****-****-****-****8cadc7dc",
"name": "电子流行歌手",
"description": "具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色",
"vocalStart": 0,
"vocalEnd": 30,
"style": "电子流行"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
taskId: '5c79****be8e',
audioId: 'e231****-****-****-****-****8cadc7dc',
name: '电子流行歌手',
description: '具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色',
vocalStart: 0,
vocalEnd: 30,
style: '电子流行'
})
};
fetch('https://apibox.erweima.ai/api/v1/generate/generate-persona', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://apibox.erweima.ai/api/v1/generate/generate-persona",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'taskId' => '5c79****be8e',
'audioId' => 'e231****-****-****-****-****8cadc7dc',
'name' => '电子流行歌手',
'description' => '具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色',
'vocalStart' => 0,
'vocalEnd' => 30,
'style' => '电子流行'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://apibox.erweima.ai/api/v1/generate/generate-persona"
payload := strings.NewReader("{\n \"taskId\": \"5c79****be8e\",\n \"audioId\": \"e231****-****-****-****-****8cadc7dc\",\n \"name\": \"电子流行歌手\",\n \"description\": \"具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色\",\n \"vocalStart\": 0,\n \"vocalEnd\": 30,\n \"style\": \"电子流行\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://apibox.erweima.ai/api/v1/generate/generate-persona")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"taskId\": \"5c79****be8e\",\n \"audioId\": \"e231****-****-****-****-****8cadc7dc\",\n \"name\": \"电子流行歌手\",\n \"description\": \"具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色\",\n \"vocalStart\": 0,\n \"vocalEnd\": 30,\n \"style\": \"电子流行\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apibox.erweima.ai/api/v1/generate/generate-persona")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"taskId\": \"5c79****be8e\",\n \"audioId\": \"e231****-****-****-****-****8cadc7dc\",\n \"name\": \"电子流行歌手\",\n \"description\": \"具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色\",\n \"vocalStart\": 0,\n \"vocalEnd\": 30,\n \"style\": \"电子流行\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"msg": "success",
"data": {
"personaId": "a1b2****c3d4",
"name": "电子流行歌手",
"description": "具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色"
}
}Generate Music
生成 Persona
基于已生成的音乐创建个性化的音乐 Persona,为音乐赋予独特的身份和特征。
POST
/
api
/
v1
/
generate
/
generate-persona
生成 Persona
curl --request POST \
--url https://apibox.erweima.ai/api/v1/generate/generate-persona \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"taskId": "5c79****be8e",
"audioId": "e231****-****-****-****-****8cadc7dc",
"name": "电子流行歌手",
"description": "具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色",
"vocalStart": 0,
"vocalEnd": 30,
"style": "电子流行"
}
'import requests
url = "https://apibox.erweima.ai/api/v1/generate/generate-persona"
payload = {
"taskId": "5c79****be8e",
"audioId": "e231****-****-****-****-****8cadc7dc",
"name": "电子流行歌手",
"description": "具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色",
"vocalStart": 0,
"vocalEnd": 30,
"style": "电子流行"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
taskId: '5c79****be8e',
audioId: 'e231****-****-****-****-****8cadc7dc',
name: '电子流行歌手',
description: '具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色',
vocalStart: 0,
vocalEnd: 30,
style: '电子流行'
})
};
fetch('https://apibox.erweima.ai/api/v1/generate/generate-persona', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://apibox.erweima.ai/api/v1/generate/generate-persona",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'taskId' => '5c79****be8e',
'audioId' => 'e231****-****-****-****-****8cadc7dc',
'name' => '电子流行歌手',
'description' => '具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色',
'vocalStart' => 0,
'vocalEnd' => 30,
'style' => '电子流行'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://apibox.erweima.ai/api/v1/generate/generate-persona"
payload := strings.NewReader("{\n \"taskId\": \"5c79****be8e\",\n \"audioId\": \"e231****-****-****-****-****8cadc7dc\",\n \"name\": \"电子流行歌手\",\n \"description\": \"具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色\",\n \"vocalStart\": 0,\n \"vocalEnd\": 30,\n \"style\": \"电子流行\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://apibox.erweima.ai/api/v1/generate/generate-persona")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"taskId\": \"5c79****be8e\",\n \"audioId\": \"e231****-****-****-****-****8cadc7dc\",\n \"name\": \"电子流行歌手\",\n \"description\": \"具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色\",\n \"vocalStart\": 0,\n \"vocalEnd\": 30,\n \"style\": \"电子流行\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://apibox.erweima.ai/api/v1/generate/generate-persona")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"taskId\": \"5c79****be8e\",\n \"audioId\": \"e231****-****-****-****-****8cadc7dc\",\n \"name\": \"电子流行歌手\",\n \"description\": \"具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色\",\n \"vocalStart\": 0,\n \"vocalEnd\": 30,\n \"style\": \"电子流行\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"msg": "success",
"data": {
"personaId": "a1b2****c3d4",
"name": "电子流行歌手",
"description": "具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色"
}
}使用指南
- 此接口用于为已生成的音乐创建 Persona(音乐角色)
- 需要提供来自音乐生成相关接口(生成、扩展、翻唱、上传扩展、混音)的 taskId 和音频ID
- 可以自定义 Persona 的名称和描述,为音乐赋予独特的个性
- 生成的 Persona 可用于后续的音乐创作和风格迁移
- 可以指定分析片段的时间范围(vocalStart 和 vocalEnd),用于提取音乐特征。如果不指定,将使用默认值(0.0-30.0秒)
参数详情
taskId: 必需参数,指定原始音乐生成任务的唯一标识符。可以是以下接口返回的 taskId:audioId: 必需参数,指定要创建 Persona 的音频IDname: 必需参数,为 Persona 指定一个易于识别的名称description: 必需参数,描述 Persona 的音乐特征、风格和个性vocalStart: 可选参数,指定分析片段的开始时间(秒)。默认值:0.0vocalEnd: 可选参数,指定分析片段的结束时间(秒)。默认值:30.0。必须大于 vocalStartstyle: 可选参数,音乐风格标签
开发者注意事项
- 重要提示:调用此接口前请确保音乐生成任务已完全完成。如果音乐正在生成中时调用此接口将会返回失败
- 模型要求:Persona 生成仅支持使用 V4 以上版本模型生成的音乐的 taskId
- 建议为 Persona 提供详细的描述,以便更好地捕捉音乐特征
vocalStart和vocalEnd用于指定分析片段的时间范围。如果不提供,将使用默认值(0.0-30.0秒)。建议选择最能代表音乐特征的片段- 返回的
personaId可以用于后续的音乐生成请求中,以创作具有相似风格特征的音乐 - 你可以将
personaId应用到以下接口: - 每个音频只能生成一次 Persona
参数示例
{
"taskId": "5c79****be8e",
"audioId": "e231****-****-****-****-****8cadc7dc",
"name": "电子流行歌手",
"description": "具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色",
"vocalStart": 0.0,
"vocalEnd": 30.0,
"style": "电子流行"
}
确保使用的 taskId 对应的音乐生成任务已完成,且 audioId 是有效的。
为 Persona 提供详细而具体的描述可以帮助系统更准确地捕捉音乐风格特征。
授权
🔑 API 认证说明
所有接口都需要通过 Bearer Token 方式进行认证。
获取 API Key
- 访问 API Key 管理页面 获取您的 API Key
使用方式
在请求头中添加:
Authorization: Bearer YOUR_API_KEY
⚠️ 注意:
- 请妥善保管您的 API Key,不要泄露给他人
- 如果怀疑 API Key 泄露,请立即在管理页面重置
请求体
application/json
原始音乐生成任务的唯一标识符。可以是以下任一接口返回的 taskId:
- 生成音乐 (/api/v1/generate)
- 扩展音乐 (/api/v1/generate/extend)
示例:
"5c79****be8e"
要创建 Persona 的音乐轨道的音频ID。此ID可以从音乐生成响应中获取。
示例:
"e231****-****-****-****-****8cadc7dc"
Persona 的名称。一个能够捕捉音乐风格或角色本质的描述性名称。
示例:
"电子流行歌手"
Persona 的音乐特征、风格和个性的详细描述。请具体说明流派、情绪、乐器使用和人声特质。
示例:
"具有现代电子音乐风格的流行歌手,擅长动感节奏和合成器音色"
指定分析片段的开始时间(秒)。用于提取音乐特征的时间范围起点。可选。默认值:0.0。
必填范围:
x >= 0示例:
0
指定分析片段的结束时间(秒)。用于提取音乐特征的时间范围终点。可选。默认值:30.0。必须大于 vocalStart。
必填范围:
x >= 0示例:
30
音乐风格标签。可选。用于标识 Persona 的音乐风格类型。
示例:
"电子流行"
响应
请求成功
响应状态码
- 200: 成功 - 请求已成功处理
- 401: 未授权 - 身份验证凭据缺失或无效
- 402: 积分不足 - 账户没有足够的积分执行此操作
- 404: 未找到 - 请求的资源或端点不存在
- 409: 冲突 - 该音乐的 Persona 已存在
- 422: 验证错误 - 请求参数未通过验证检查
- 429: 超出限制 - 已超过对此资源的请求限制
- 451: 未授权 - 获取音乐数据失败。请验证您或您的服务提供商设置的任何访问限制。
- 455: 服务不可用 - 系统当前正在进行维护
- 500: 服务器错误 - 处理请求时发生意外错误
可用选项:
200, 401, 402, 404, 409, 422, 429, 451, 455, 500 当 code != 200 时的错误信息
示例:
"success"
Show child attributes
Show child attributes
