先给块配音,需要就加一首歌,最后把整条时间轴渲染出来。
把调用指向时间轴上的某个块和你想要的声音。返回的是音频、它的精确时长,以及让字幕落在音节上的 Whisper 逐词时间。
export AUTOSTUD_API_KEY="sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
curl -X POST https://autostud.ai/api/v1/actions/timeline.generate_audio \
-H "Authorization: Bearer $AUTOSTUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"video_id": "0f4c8b71-2d95-47a3-9e6c-15b8ad7f3c20",
"block_id": "block_2",
"voice_settings": {
"voice_provider": "elevenlabs",
"voice_id": "rachel",
"playback_speed": 1
}
}'一段简述、一种风格,或者你自己的歌词。音乐是异步的:调用返回一个任务,music.completed 把托管好的音轨带回来。
curl -X POST https://autostud.ai/api/v1/actions/music.generate \
-H "Authorization: Bearer $AUTOSTUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Lighthouse",
"style": "warm lo-fi, slow, no drums",
"prompt": "A calm bed under a voice-over about the sea",
"instrumental": true
}'
# Already wrote the words? Send lyrics instead of prompt.块的长度由音频决定,所以声音一进去,renders.create 就把时间轴变成一条全部同步好的 mp4。
curl -X POST https://autostud.ai/api/v1/webhooks \
-H "Authorization: Bearer $AUTOSTUD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://your-app.com/hooks/autostud",
"events": ["music.completed", "music.failed"],
"description": "Audio"
}'三个字段用来念一个块,一个用来给歌曲下简述。
video_id要配音的那个块所在时间轴对应的视频。
block_id哪个块获得声音。它的时长跟着音频走,而不是反过来。
voice_settings声音本身:供应商、音色引用、语速。用你自己的供应商密钥,这次生成不花钱。
prompt给 music.generate 用的歌曲简述。如果歌词已经写好了,就改传 lyrics。
声音是一份目录,不是写死的清单。带上你自己的供应商密钥,生成免费;用我们的,就和其他一切一样按积分计费。
语音直接在响应里返回。歌曲更久,所以它触发事件:注册一次 Webhook,音轨就会托管好送达,积分也已经结清。
generation.completedmusic.completedmusic.failed能。Whisper 对齐跑在刚生成的音频上,所以响应带着完整精度的逐词时间,绝不会四舍五入到秒。
可以,这正是双模式的意义:用你的密钥,生成消耗零积分,而音频照样被托管、对齐并放到块上。
是分钟而不是毫秒,所以音乐是异步的。如果你的技术栈用不了 Webhook,就用 music.get_task 读回来。
由音频决定。一个块的长度就是里面那段语音加上你配置的间隙,所以事后不需要手工对时间。