01 概览
H3 是一个全模态视频生成模型,在一次前向里联合生成画面与同步立体声(人声、音效、音乐)。接口为异步:提交任务立即拿到 id,再轮询状态、完成后取件。
Base URL
h3.yiling.ink
协议
HTTPS · REST
请求体
multipart/form-data
鉴权
Bearer Token
并发
串行 1 路 · 异步排队
输出
MP4(H.264 + AAC)
兼容性接口按 OpenAI Sora-2 的
/v1/videos 规范设计(响应里 model 字段显示 sora-2),但由本地 H3 引擎生成。已有 Sora 客户端稍改即可接入。02 鉴权
每个请求(提交/查询/下载)都需在请求头带上 Bearer Token,否则返回 401。Token 校验在 nginx 网关层完成,后端服务只监听内网,外部扫描无法直连。
Authorization header
Authorization: Bearer h3-c7203631286407cd4e86136b11b4ab2e8cc601f5879902ce
私钥,请妥善保管以上是你的专属 Token。泄露即可被他人调用消耗 GPU;需要轮换时改一处 nginx 配置即可失效旧 Token。
03 快速开始
文生视频(t2va),8 步快档,约 2–3 分钟出片。三个必填字段:task、target、prompt。
curl · 提交
curl https://h3.yiling.ink/v1/videos \
-H "Authorization: Bearer h3-c72036…901f5879902ce" \
-F task=t2va \
-F 'target={"short_edge":768,"aspect_ratio":"16:9","duration_seconds":5}' \
-F prompt=一只橘猫在钢琴键上散步,阳光洒进房间,轻柔的钢琴声 \
-F num_inference_steps=8 \
-F seed=42
# → {"id":"7932b6bd-…","status":"queued","progress":0, …}
Python · 提交 + 轮询 + 下载
import requests, time
BASE = "https://h3.yiling.ink"
TOKEN = "h3-c7203631286407cd4e86136b11b4ab2e8cc601f5879902ce"
H = {"Authorization": f"Bearer {TOKEN}"}
# 1) 提交任务(multipart 表单)
r = requests.post(f"{BASE}/v1/videos", headers=H, data={
"task": "t2va",
"target": '{"short_edge":768,"aspect_ratio":"16:9","duration_seconds":5}',
"prompt": "一只橘猫在钢琴键上散步,阳光洒进房间",
"num_inference_steps": 8,
"seed": 42,
})
vid = r.json()["id"]
# 2) 轮询直到完成
while True:
s = requests.get(f"{BASE}/v1/videos/{vid}", headers=H).json()
if s["status"] in ("completed", "failed"): break
time.sleep(5)
# 3) 取件:s["inference_time_s"], s["file_paths"], 或 /content 下载
print(s["status"], s["inference_time_s"])
04 端点
POST/v1/videos提交生成任务,返回 job id(立即返回,不阻塞)
GET/v1/videos/{id}查询任务状态与结果(轮询用)
GET/v1/videos/{id}/content下载生成的 MP4 文件
GET/v1/videos列出历史任务
辅助端点:GET /health 健康检查 · GET /model_info 模型信息 · GET /openapi.json 完整 schema。
05 请求参数
POST /v1/videos 使用 multipart/form-data。下表为常用字段;标红的三项必填。
核心字段
| 字段 | 类型 | 说明 / 取值 |
|---|---|---|
| task必填 | string | 任务模式:t2va(文生视频)· fl2va(首/尾帧)· ref2va(参考素材) |
| target必填 | json string | 输出规格对象,如 {"short_edge":768,"aspect_ratio":"16:9","duration_seconds":5} |
| prompt必填 | string | 文本描述。支持中英等 11 种语言;含台词时会生成对应人声 |
| num_inference_steps | int | 去噪步数。质量档 50,均衡 20,快档 8(配合 Turbo)。见 预设 |
| seed | int | 随机种子,固定后可复现同一结果 |
| negative_prompt | string | 负向提示,描述不希望出现的内容 |
| guidance_scale | float | CFG 引导强度。蒸馏/Turbo 权重下用 1.0(过高会中止) |
| flow_shift | float | 流匹配偏移。官方 benchmark 视频 12 / 音频 3 |
| num_outputs_per_prompt | int | 同一 prompt 生成多少条(默认 1) |
target 输出规格对象
| 子字段 | 类型 | 取值 |
|---|---|---|
| short_edge | int | 短边像素,默认 768。长边按比例算(宽高需为 32 倍数)。降到 960×544 每步约快 2.3× |
| aspect_ratio | string | 21:9 · 16:9 · 4:3 · 1:1 · 3:4 · 9:16 等 |
| duration_seconds | number | 时长,4–15 秒 |
条件输入(fl2va / ref2va 用)
| 字段 | 类型 | 说明 |
|---|---|---|
| input_reference | file | 上传参考/首帧图片(二进制) |
| reference_url | string | 参考/首帧图片的 URL |
| video_reference | file | 上传参考视频片段(ref2va) |
| video_url / video_path | string | 参考视频的 URL 或服务器路径 |
增强与输出(可选)
| 字段 | 类型 | 说明 |
|---|---|---|
| enable_teacache | bool | 开启时间步缓存加速(近无损,约 1.4×) |
| enable_frame_interpolation | bool | 补帧,配 frame_interpolation_exp / _scale |
| enable_upscaling | bool | 超分,配 upscaling_scale |
| output_quality | string | 输出画质档位 |
| generator_device | string | 默认 cuda |
完整字段(含 fps、num_frames、size、true_cfg_scale、max_sequence_length、extra_body 等)以 GET /openapi.json 为准。
06 三种任务模式
由 task 字段选择。当前服务加载的是 FL2VA 检查点,支持 t2va 与 fl2va;ref2va 为独立检查点能力。
| task | 含义 | 输入 | 典型用途 |
|---|---|---|---|
| t2va | 文本 → 音视频 | 仅 prompt | 纯创意生成、有声短片 |
| fl2va | 首/尾帧 → 音视频 | prompt + 1~2 张图 首帧 / 尾帧 / 首尾帧 | 图片动起来、指定开场结尾 |
| ref2va | 参考素材 → 音视频 | prompt + ≤9 图 / ≤3 视频 / ≤3 音频 | 角色一致性、风格/音色参考 |
fl2va · 首帧图生视频
curl https://h3.yiling.ink/v1/videos \
-H "Authorization: Bearer $TOKEN" \
-F task=fl2va \
-F 'target={"short_edge":768,"aspect_ratio":"16:9","duration_seconds":5}' \
-F prompt=镜头缓缓推近,人物微笑转头 \
-F input_reference=@first_frame.png \
-F num_inference_steps=8
07 响应结构
提交与查询都返回同一个 VideoResponse 对象。关键字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 任务唯一 id,轮询/下载都用它 |
| status | string | queued in progress completed failed |
| progress | int | 进度百分比 0–100 |
| file_paths | array | 生成的 MP4 服务器路径(可多条) |
| url | string | 下载 URL(如提供) |
| inference_time_s | float | 实际生成耗时(秒) |
| peak_memory_mb | float | 显存峰值(MB) |
| size / seconds | string | 实际分辨率与时长 |
| error | object | 失败时的错误详情 |
completed 示例
{
"id": "7932b6bd-c572-4b0a-b04b-429578587f94",
"status": "completed", "progress": 100,
"size": "1344x768", "seconds": "5.166667",
"inference_time_s": 139.58,
"peak_memory_mb": 36506.0,
"file_paths": ["outputs/7932b6bd-….mp4"]
}
08 异步流程
视频生成耗时以分钟计,接口设计为异步三段式。提交后客户端无需保持长连接,拿 id 走人,之后轮询即可。
| 步骤 | 调用 | 结果 |
|---|---|---|
| 1 · 提交 | POST /v1/videos | 立即返回 id + queued |
| 2 · 轮询 | GET /v1/videos/{id} | 每 5 秒查一次 status / progress |
| 3 · 取件 | GET /v1/videos/{id}/content | 完成后下载 MP4 |
排队行为可以一次性提交多条,它们进入服务内部队列逐条串行执行(当前同时只跑 1 路)。超出处理能力不会报错,而是排队。服务重启会清空未完成队列——需要生产级持久化时,建议在前面加一层任务网关(可另行部署)。
09 预设与样片
同一 prompt、同一 1344×768 / 5 秒规格,在双 A800 上的实测三档。步数越少越快,画质略降。点卡片播放样片。
质量档
质量档 · 50 步
num_inference_steps50
耗时958 s · 16 min
显存峰值73 GB
相对1×
均衡档
均衡档 · 20 步
num_inference_steps20
耗时286 s · 4.8 min
显存峰值35 GB
相对3.3×
Turbo推荐
快档 · 8 步 Turbo
num_inference_steps8
耗时139.6 s · 2.3 min
显存峰值36 GB
相对6.9×
选型建议日常默认走快档(8 步 Turbo)——CFG 蒸馏权重下 6–8 步已是清晰度舒适区,质量几乎无损而快近 7 倍。需要极致画质时再传
num_inference_steps=50。样片链接:h3.yiling.ink/samples/10 能力与限制
| 项目 | 规格 |
|---|---|
| 输出时长 | 4–15 秒 |
| 宽高比 | 21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 等(宽高为 32 倍数) |
| 分辨率 | 短边默认 768(当前 1344×768);2K 需 H3-Regenerate-2K |
| 帧率 | 24 FPS |
| 音频 | 32 kHz 立体声,与画面联合生成 |
| 台词语言 | 稳定支持 11 种:中/英/日/韩/法/德/意/西/葡/俄/阿 |
| 并发 | 同时 1 路(串行),异步队列;吞吐 ≈ 20 条/小时(快档) |
| 硬件 | 2× NVIDIA A800 80GB,denoiser 张量并行,驱动 580 / CUDA 13 |
关于并发当前一个实例占用两张卡(张量并行)。若需要多路并发,方向是让模型单卡常驻后双卡各起一个独立实例 + 网关分发——可另行规划。