可控文生音效
curl --request POST \
--url https://api.powertokens.ai/vidu/ent/v2/timing2audio \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "audio1.0",
"duration": 10,
"timing_prompts": [
{
"from": 0,
"to": 3,
"prompt": "清晨的鸟叫声"
},
{
"from": 3,
"to": 6,
"prompt": "远处传来火车驶过的声音"
},
{
"from": 5,
"to": 9.5,
"prompt": "海浪轻轻拍打沙滩"
}
],
"seed": 0
}
'import requests
url = "https://api.powertokens.ai/vidu/ent/v2/timing2audio"
payload = {
"model": "audio1.0",
"duration": 10,
"timing_prompts": [
{
"from": 0,
"to": 3,
"prompt": "清晨的鸟叫声"
},
{
"from": 3,
"to": 6,
"prompt": "远处传来火车驶过的声音"
},
{
"from": 5,
"to": 9.5,
"prompt": "海浪轻轻拍打沙滩"
}
],
"seed": 0
}
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({
model: 'audio1.0',
duration: 10,
timing_prompts: [
{from: 0, to: 3, prompt: '清晨的鸟叫声'},
{from: 3, to: 6, prompt: '远处传来火车驶过的声音'},
{from: 5, to: 9.5, prompt: '海浪轻轻拍打沙滩'}
],
seed: 0
})
};
fetch('https://api.powertokens.ai/vidu/ent/v2/timing2audio', 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://api.powertokens.ai/vidu/ent/v2/timing2audio",
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([
'model' => 'audio1.0',
'duration' => 10,
'timing_prompts' => [
[
'from' => 0,
'to' => 3,
'prompt' => '清晨的鸟叫声'
],
[
'from' => 3,
'to' => 6,
'prompt' => '远处传来火车驶过的声音'
],
[
'from' => 5,
'to' => 9.5,
'prompt' => '海浪轻轻拍打沙滩'
]
],
'seed' => 0
]),
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://api.powertokens.ai/vidu/ent/v2/timing2audio"
payload := strings.NewReader("{\n \"model\": \"audio1.0\",\n \"duration\": 10,\n \"timing_prompts\": [\n {\n \"from\": 0,\n \"to\": 3,\n \"prompt\": \"清晨的鸟叫声\"\n },\n {\n \"from\": 3,\n \"to\": 6,\n \"prompt\": \"远处传来火车驶过的声音\"\n },\n {\n \"from\": 5,\n \"to\": 9.5,\n \"prompt\": \"海浪轻轻拍打沙滩\"\n }\n ],\n \"seed\": 0\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://api.powertokens.ai/vidu/ent/v2/timing2audio")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"audio1.0\",\n \"duration\": 10,\n \"timing_prompts\": [\n {\n \"from\": 0,\n \"to\": 3,\n \"prompt\": \"清晨的鸟叫声\"\n },\n {\n \"from\": 3,\n \"to\": 6,\n \"prompt\": \"远处传来火车驶过的声音\"\n },\n {\n \"from\": 5,\n \"to\": 9.5,\n \"prompt\": \"海浪轻轻拍打沙滩\"\n }\n ],\n \"seed\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.powertokens.ai/vidu/ent/v2/timing2audio")
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 \"model\": \"audio1.0\",\n \"duration\": 10,\n \"timing_prompts\": [\n {\n \"from\": 0,\n \"to\": 3,\n \"prompt\": \"清晨的鸟叫声\"\n },\n {\n \"from\": 3,\n \"to\": 6,\n \"prompt\": \"远处传来火车驶过的声音\"\n },\n {\n \"from\": 5,\n \"to\": 9.5,\n \"prompt\": \"海浪轻轻拍打沙滩\"\n }\n ],\n \"seed\": 0\n}"
response = http.request(request)
puts response.read_body{
"task_id": "your_task_id_here",
"state": "created",
"model": "audio1.0",
"duration": 10,
"timing_prompts": [
{
"from": 0,
"to": 3,
"prompt": "清晨的鸟叫声"
},
{
"from": 3,
"to": 6,
"prompt": "远处传来火车驶过的声音"
},
{
"from": 5,
"to": 9.5,
"prompt": "海浪轻轻拍打沙滩"
}
],
"seed": 123456789,
"credits": 10,
"created_at": "2025-01-01T10:00:00.000Z"
}Vidu
Vidu 可控文生音效
使用 Vidu 模型基于时间轴生成可控音效片段。创作者可以通过时间轴自由控制音频中多个声音事件的时机。(不支持背景音乐)提交任务后,请通过 GET /vidu/ent/v2/tasks/{task_id}/creations 查询状态。
POST
/
vidu
/
ent
/
v2
/
timing2audio
可控文生音效
curl --request POST \
--url https://api.powertokens.ai/vidu/ent/v2/timing2audio \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "audio1.0",
"duration": 10,
"timing_prompts": [
{
"from": 0,
"to": 3,
"prompt": "清晨的鸟叫声"
},
{
"from": 3,
"to": 6,
"prompt": "远处传来火车驶过的声音"
},
{
"from": 5,
"to": 9.5,
"prompt": "海浪轻轻拍打沙滩"
}
],
"seed": 0
}
'import requests
url = "https://api.powertokens.ai/vidu/ent/v2/timing2audio"
payload = {
"model": "audio1.0",
"duration": 10,
"timing_prompts": [
{
"from": 0,
"to": 3,
"prompt": "清晨的鸟叫声"
},
{
"from": 3,
"to": 6,
"prompt": "远处传来火车驶过的声音"
},
{
"from": 5,
"to": 9.5,
"prompt": "海浪轻轻拍打沙滩"
}
],
"seed": 0
}
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({
model: 'audio1.0',
duration: 10,
timing_prompts: [
{from: 0, to: 3, prompt: '清晨的鸟叫声'},
{from: 3, to: 6, prompt: '远处传来火车驶过的声音'},
{from: 5, to: 9.5, prompt: '海浪轻轻拍打沙滩'}
],
seed: 0
})
};
fetch('https://api.powertokens.ai/vidu/ent/v2/timing2audio', 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://api.powertokens.ai/vidu/ent/v2/timing2audio",
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([
'model' => 'audio1.0',
'duration' => 10,
'timing_prompts' => [
[
'from' => 0,
'to' => 3,
'prompt' => '清晨的鸟叫声'
],
[
'from' => 3,
'to' => 6,
'prompt' => '远处传来火车驶过的声音'
],
[
'from' => 5,
'to' => 9.5,
'prompt' => '海浪轻轻拍打沙滩'
]
],
'seed' => 0
]),
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://api.powertokens.ai/vidu/ent/v2/timing2audio"
payload := strings.NewReader("{\n \"model\": \"audio1.0\",\n \"duration\": 10,\n \"timing_prompts\": [\n {\n \"from\": 0,\n \"to\": 3,\n \"prompt\": \"清晨的鸟叫声\"\n },\n {\n \"from\": 3,\n \"to\": 6,\n \"prompt\": \"远处传来火车驶过的声音\"\n },\n {\n \"from\": 5,\n \"to\": 9.5,\n \"prompt\": \"海浪轻轻拍打沙滩\"\n }\n ],\n \"seed\": 0\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://api.powertokens.ai/vidu/ent/v2/timing2audio")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"audio1.0\",\n \"duration\": 10,\n \"timing_prompts\": [\n {\n \"from\": 0,\n \"to\": 3,\n \"prompt\": \"清晨的鸟叫声\"\n },\n {\n \"from\": 3,\n \"to\": 6,\n \"prompt\": \"远处传来火车驶过的声音\"\n },\n {\n \"from\": 5,\n \"to\": 9.5,\n \"prompt\": \"海浪轻轻拍打沙滩\"\n }\n ],\n \"seed\": 0\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.powertokens.ai/vidu/ent/v2/timing2audio")
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 \"model\": \"audio1.0\",\n \"duration\": 10,\n \"timing_prompts\": [\n {\n \"from\": 0,\n \"to\": 3,\n \"prompt\": \"清晨的鸟叫声\"\n },\n {\n \"from\": 3,\n \"to\": 6,\n \"prompt\": \"远处传来火车驶过的声音\"\n },\n {\n \"from\": 5,\n \"to\": 9.5,\n \"prompt\": \"海浪轻轻拍打沙滩\"\n }\n ],\n \"seed\": 0\n}"
response = http.request(request)
puts response.read_body{
"task_id": "your_task_id_here",
"state": "created",
"model": "audio1.0",
"duration": 10,
"timing_prompts": [
{
"from": 0,
"to": 3,
"prompt": "清晨的鸟叫声"
},
{
"from": 3,
"to": 6,
"prompt": "远处传来火车驶过的声音"
},
{
"from": 5,
"to": 9.5,
"prompt": "海浪轻轻拍打沙滩"
}
],
"seed": 123456789,
"credits": 10,
"created_at": "2025-01-01T10:00:00.000Z"
}授权
在请求头中传入 Authorization: Bearer <token>。
请求体
application/json
模型名称可选值:audio1.0
可用选项:
audio1.0 可控音效参数。描述多个音效事件及各自时间区间,支持多个事件重叠。- 单个事件最大提示词字符数:1500 字符- from、to 必须在 [0, duration] 区间内
Minimum array length:
1Show child attributes
Show child attributes
音频时长默认 10,可选范围:2~10 秒内
必填范围:
2 <= x <= 10随机种子随机种子,若不传或传0则自动生成随机数,传固定值生成确定性结果
Callback 协议需要您在创建任务时主动设置 callback_url,请求方法为 POST,当视频生成任务有状态变化时,Vidu 将向此地址发送包含任务最新状态的回调请求。回调请求内容结构与查询任务API的返回体一致回调返回的"status"包括以下状态:- processing 任务处理中- success 任务完成(如发送失败,回调三次)- failed 任务失败(如发送失败,回调三次)Vidu采用回调签名算法进行认证,详情见:回调签名算法
响应
200 - application/json
提交成功,返回音频任务对象。
Vidu 生成的任务ID
处理状态 可选值:
- created 创建成功
- queueing 任务排队中
- processing 任务处理中
- success 任务成功
- failed 任务失败
可用选项:
created, queueing, processing, success, failed 本次调用的模型名称
本次调用的音频时长参数
本次调用中定义的多个音频事件参数
Show child attributes
Show child attributes
本次调用的随机种子参数
本次调用使用的积分数
任务创建时间
⌘I