演示文稿
通过 API 生成带有 AI 画面和演讲稿的专业演示文稿,适用于会议汇报和商业演示。
演示文稿模式(Slides)生成专业的幻灯片风格内容,包含 AI 画面和演讲旁白,适用于会议演示、商业汇报和大会演讲。
| 说明 | |
|---|---|
| 图片风格 | PPT 布局(网格、流程图、大数字展示) |
| 首页 | 演讲标题页 |
| 适用场景 | 会议演示、商业汇报、大会演讲 |
如需导出 PPT 文件,请通过 ListenHub 平台操作——OpenAPI 暂不支持 PPT 导出。
创建演示文稿
POST /v1/storybook/episodes
创建一个演示文稿单集,自动生成 AI 幻灯片画面与演讲旁白。
sources 最多 1 项,speakers 最多 1 项。
curl -X POST "https://api.marswave.ai/openapi/v1/storybook/episodes" \
-H "Authorization: Bearer $LISTENHUB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sources": [
{"type": "text", "content": "第三季度营收同比增长45%,亚太市场扩张成为主要增长动力..."}
],
"speakers": [
{"speakerId": "CN-Man-Beijing-V2"}
],
"language": "zh",
"mode": "slides"
}'const response = await fetch('https://api.marswave.ai/openapi/v1/storybook/episodes', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.LISTENHUB_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
sources: [{ type: 'text', content: '第三季度营收同比增长45%,亚太市场扩张成为主要增长动力...' }],
speakers: [{ speakerId: 'CN-Man-Beijing-V2' }],
language: 'zh',
mode: 'slides',
}),
});
const data = await response.json();
console.log(data);import os, requests
response = requests.post(
'https://api.marswave.ai/openapi/v1/storybook/episodes',
headers={'Authorization': f'Bearer {os.environ["LISTENHUB_API_KEY"]}'},
json={
'sources': [{'type': 'text', 'content': '第三季度营收同比增长45%,亚太市场扩张成为主要增长动力...'}],
'speakers': [{'speakerId': 'CN-Man-Beijing-V2'}],
'language': 'zh',
'mode': 'slides',
}
)
print(response.json())响应:
{
"code": 0,
"message": "",
"data": {
"episodeId": "{episodeId}"
}
}请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sources | array(1) | 是 | 内容来源,最多 1 个 |
| sources[].type | string | 是 | "text" 或 "url" |
| sources[].content | string | 是 | 文本内容或 URL |
| sources[].uri | string | 否 | 来源 URI |
| sources[].metadata | object | 否 | 来源元数据 |
| speakers | array(1) | 是 | 语音配置,最多 1 个 |
| speakers[].speakerId | string | 是 | 说话人 ID(参见音色列表) |
| language | string | 否 | 语言代码(如 "zh"、"en") |
| mode | string | 是 | 必须为 "slides" |
| style | string | 否 | 视觉风格 ID |
查询单集状态
GET /v1/storybook/episodes/{episodeId}
用返回的 episodeId 轮询查询,直到 processStatus 为 success。
curl "https://api.marswave.ai/openapi/v1/storybook/episodes/{episodeId}" \
-H "Authorization: Bearer $LISTENHUB_API_KEY"const response = await fetch(
`https://api.marswave.ai/openapi/v1/storybook/episodes/${episodeId}`,
{ headers: { 'Authorization': `Bearer ${process.env.LISTENHUB_API_KEY}` } }
);
const data = await response.json();
console.log('状态:', data.data.processStatus);import os, requests
response = requests.get(
f'https://api.marswave.ai/openapi/v1/storybook/episodes/{episode_id}',
headers={'Authorization': f'Bearer {os.environ["LISTENHUB_API_KEY"]}'}
)
data = response.json()
print('状态:', data['data']['processStatus'])响应(processStatus 为 success 时):
{
"code": 0,
"message": "",
"data": {
"episodeId": "{episodeId}",
"createdAt": 1700000000,
"mode": "slides",
"processStatus": "success",
"credits": 30,
"title": "Q3 业务回顾",
"cover": "https://assets.listenhub.ai/covers/{episodeId}.png",
"audioUrl": "https://assets.listenhub.ai/storybook/{episodeId}.mp3",
"audioDuration": 180,
"videoUrl": "",
"videoStatus": "not_generated",
"pages": [
{
"text": "欢迎来到第三季度业务回顾。本季度取得了显著增长...",
"pageNumber": 1,
"imageUrl": "https://assets.listenhub.ai/pages/{episodeId}-1.png",
"audioTimestamp": 0
},
{
"text": "营收同比增长 45%,主要受亚太市场扩张驱动...",
"pageNumber": 2,
"imageUrl": "https://assets.listenhub.ai/pages/{episodeId}-2.png",
"audioTimestamp": 25.3
}
]
}
}幻灯片 + 演讲稿素材:pages[] 中的 imageUrl(幻灯片画面)和 text(演讲旁白,每页约 80–100 词)可作为独立素材下载,用于自行组合演示文稿或二次创作。
processStatus 状态
| 值 | 含义 |
|---|---|
pending | 处理中 |
success | 生成完成 |
fail | 生成失败(查看 failCode) |
videoStatus 状态
| 值 | 含义 |
|---|---|
not_generated | 未触发视频生成 |
pending | 视频生成中 |
success | 视频就绪(videoUrl 可用) |
fail | 视频生成失败 |
生成通常需要 2–5 分钟。推荐轮询策略:等待 60 秒后开始,每 10 秒查询一次。
生成视频
POST /v1/storybook/episodes/{episodeId}/video
为已完成的单集触发视频生成,processStatus 必须为 success。
必须等待 processStatus 为 success 后才能调用此接口。
curl -X POST "https://api.marswave.ai/openapi/v1/storybook/episodes/{episodeId}/video" \
-H "Authorization: Bearer $LISTENHUB_API_KEY"const response = await fetch(
`https://api.marswave.ai/openapi/v1/storybook/episodes/${episodeId}/video`,
{
method: 'POST',
headers: { 'Authorization': `Bearer ${process.env.LISTENHUB_API_KEY}` },
}
);
console.log(await response.json());import os, requests
response = requests.post(
f'https://api.marswave.ai/openapi/v1/storybook/episodes/{episode_id}/video',
headers={'Authorization': f'Bearer {os.environ["LISTENHUB_API_KEY"]}'}
)
print(response.json())响应:
{
"code": 0,
"message": "",
"data": {
"success": true
}
}触发后,继续轮询 GET /v1/storybook/episodes/{episodeId},等待 videoStatus 为 success。
完整工作流
创建演示文稿
调用 POST /v1/storybook/episodes,设置 mode: "slides",传入内容来源和音色,保存返回的 episodeId。
轮询等待完成
轮询 GET /v1/storybook/episodes/{episodeId}(初始等待 60 秒,之后每 10 秒查询),直到 processStatus 为 success。
使用幻灯片素材(可选)
pages[] 数组包含幻灯片画面(imageUrl)和演讲旁白(text),可直接下载使用,无需生成视频。
生成视频
调用 POST /v1/storybook/episodes/{episodeId}/video,将幻灯片合成为带旁白的视频。
轮询视频状态
继续轮询直到 videoStatus 为 success,videoUrl 即为下载链接。