diff --git a/wwwroot/api_doc.md b/wwwroot/api_doc.md index 6a72e44..e2cbcc4 100644 --- a/wwwroot/api_doc.md +++ b/wwwroot/api_doc.md @@ -1781,3 +1781,262 @@ curl -X POST 'https://token.opencomputing.cn/reallife_asset/api/rl_virtual_asset | `创建失败` | 组合创建失败 | 检查参数和供应商配置 | | `上传失败` | 素材上传失败 | 检查 URL 是否可访问 | | `查询失败` | 查询操作失败 | 检查 ID 是否属于当前机构 | + +# 视频制作 API + +Base url: `https://token.opencomputing.cn/llmage/v1` + +视频制作服务组由开元云(北京)科技有限公司提供,覆盖KTV产线全流程:校准、合成、评估、分离、识别等28个API端点。基础模型使用向量模型和GPU集群进行计算处理。 + +## 模型列表 + +| model | 类型 | 功能 | 计费方式 | +|-------|------|------|----------| +| `ktv-media-server` | KTV产线 | 流水线提交 | 2.00元/次 + 0.03元/秒 | +| `ktv-video-eval` | 视频评估 | 质量评估打分 | 0.05元/秒 | +| `ktv-realesrgan` | 超分辨率 | 图像/视频超分 | 0.50元/张 | +| `ktv-asr` | 语音识别 | 语音转文字 | 0.01元/秒 | +| `ktv-face` | 人脸识别 | 检测/识别/比对 | 0.10元/次 | +| `ktv-graph` | 图谱处理 | 知识图谱查询/写入 | 0.05~0.10元/次 | +| `ktv-ner` | 实体识别 | 命名实体提取 | 0.50元/千字 | +| `ktv-songrate` | 歌曲评分 | AI歌曲质量评估 | 0.005元/秒 | +| `ktv-synth` | 音乐合成 | AI歌声合成 | 0.20元/秒 | +| `ktv-demucs` | 音频分离 | 人声/伴奏分离 | 0.02元/秒 | +| `ktv-rvc` | 声音转换 | 声音克隆/变声 | 0.15元/秒 | + +## 通用调用方式 + +所有视频制作模型通过 `/v1/chat/completions` 调用,模型名为上表中的 `model` 值。 + +### 请求格式 + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `model` | string | 是 | 模型名,如 `"ktv-media-server"` | +| `catelogid` | string | 否 | 类目ID,默认根据模型自动选择 | +| 业务参数 | - | 视端点 | 各端点特定参数,见下方 | + +### KTV产线操作 (media-server) + +**提交流水线任务** — model: `ktv-media-server` + +| 参数 | 类型 | 说明 | +|------|------|------| +| `task_type` | string | 任务类型 | +| `params` | object | 任务参数 | +| `video_url` | string | 视频URL | +| `audio_url` | string | 音频URL | +| `song_name` | string | 歌曲名 | +| `lyrics` | string | 歌词文本 | +| `gpu_id` | int | GPU编号 | +| `duration` | int | 锁定时间(秒) | + +```bash +# 提交KTV视频生成 +curl -X POST 'https://token.opencomputing.cn/llmage/v1/chat/completions' \ + -H 'Authorization: Bearer ***' \ + -H 'Content-Type: application/json' \ + -d '{"model":"ktv-media-server","task_type":"ktv","params":{"song_name":"测试","lyrics":"歌词内容"}}' +``` + +**响应:** + +```json +{ + "id": "luid_xxx", + "object": "chat.completion", + "model": "ktv-media-server", + "choices": [{ + "message": { + "status": "ok", + "video_url": "https://...", + "usage": {"output_seconds": 180} + } + }] +} +``` + +### 视频评估 (video-eval) + +**评估视频质量** — model: `ktv-video-eval` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `video_url` | string | 是 | 待评估视频URL | + +```bash +curl -X POST 'https://token.opencomputing.cn/llmage/v1/chat/completions' \ + -H 'Authorization: Bearer ***' \ + -H 'Content-Type: application/json' \ + -d '{"model":"ktv-video-eval","video_url":"https://example.com/video.mp4"}' +``` + +**响应:** `{"status":"ok","score":85,"details":{...},"usage":{"video_seconds":60}}` + +### 超分辨率 (realesrgan) + +**图像/视频超分** — model: `ktv-realesrgan` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `image_url` | string | 是 | 待处理图像URL | +| `scale` | int | 否 | 放大倍数(默认2) | + +```bash +curl -X POST 'https://token.opencomputing.cn/llmage/v1/chat/completions' \ + -H 'Authorization: Bearer ***' \ + -d '{"model":"ktv-realesrgan","image_url":"https://example.com/img.jpg","scale":2}' +``` + +**响应:** `{"status":"ok","output_url":"https://...","usage":{"image_count":1}}` + +### 语音识别 (asr) + +**语音转文字** — model: `ktv-asr` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `audio_url` | string | 是 | 音频文件URL | +| `language` | string | 否 | 语言代码(默认zh) | + +```bash +curl -X POST 'https://token.opencomputing.cn/llmage/v1/chat/completions' \ + -H 'Authorization: Bearer ***' \ + -d '{"model":"ktv-asr","audio_url":"https://example.com/audio.mp3"}' +``` + +**响应:** `{"status":"ok","text":"识别结果文本","segments":[...],"usage":{"audio_seconds":120}}` + +### 人脸识别 (face) + +**人脸检测/识别/比对** — model: `ktv-face` + +| 参数 | 类型 | 说明 | +|------|------|------| +| `image_url` | string | 检测图像URL | +| `face_id` | string | 人脸ID(识别时) | +| `image_url1` | string | 图像1(比对时) | +| `image_url2` | string | 图像2(比对时) | + +```bash +# 人脸检测 +curl -X POST 'https://token.opencomputing.cn/llmage/v1/chat/completions' \ + -H 'Authorization: Bearer ***' \ + -d '{"model":"ktv-face","image_url":"https://example.com/face.jpg"}' +``` + +**响应:** `{"status":"ok","faces":[...],"usage":{"detect_count":1}}` + +### 图谱处理 (graph) + +**知识图谱查询与写入** — model: `ktv-graph` + +| 参数 | 类型 | 说明 | +|------|------|------| +| `node_id` | string | 节点ID | +| `attrs` | object | 节点属性 | +| `from` | string | 起始节点(加边) | +| `to` | string | 目标节点(加边) | +| `label` | string | 边标签 | + +```bash +# 查询邻居 +curl 'https://token.opencomputing.cn/llmage/v1/chat/completions' \ + -H 'Authorization: Bearer ***' \ + -d '{"model":"ktv-graph","node_id":"node_001"}' +``` + +**响应:** `{"status":"ok","nodes":[...],"usage":{"query_count":1}}` + +### 实体识别 (ner) + +**命名实体提取** — model: `ktv-ner` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `text` | string | 是 | 待分析文本 | + +```bash +curl -X POST 'https://token.opencomputing.cn/llmage/v1/chat/completions' \ + -H 'Authorization: Bearer ***' \ + -d '{"model":"ktv-ner","text":"张三在北京工作"}' +``` + +**响应:** `{"status":"ok","entities":[...],"usage":{"char_count":7}}` + +### 歌曲评分 (songrate) + +**AI歌曲质量评估** — model: `ktv-songrate` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `audio_url` | string | 是 | 音频文件URL | +| `scene` | string | 否 | 场景类型(pop/folk等) | + +```bash +curl -X POST 'https://token.opencomputing.cn/llmage/v1/chat/completions' \ + -H 'Authorization: Bearer ***' \ + -d '{"model":"ktv-songrate","audio_url":"https://example.com/song.mp3"}' +``` + +**响应:** `{"status":"ok","score":85,"details":{...},"usage":{"audio_seconds":240}}` + +### 音乐合成 (ktv-synth) + +**AI歌声合成** — model: `ktv-synth` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `lyrics` | string | 是 | 歌词文本 | +| `style` | string | 否 | 演唱风格 | +| `reference_audio` | string | 否 | 参考音频URL | + +```bash +curl -X POST 'https://token.opencomputing.cn/llmage/v1/chat/completions' \ + -H 'Authorization: Bearer ***' \ + -d '{"model":"ktv-synth","lyrics":"歌词内容","style":"pop"}' +``` + +**响应:** `{"status":"ok","task_id":"xxx","usage":{"output_seconds":120}}` + +### 音频分离 (demucs) + +**人声/伴奏分离** — model: `ktv-demucs` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `audio_url` | string | 是 | 音频文件URL | + +```bash +curl -X POST 'https://token.opencomputing.cn/llmage/v1/chat/completions' \ + -H 'Authorization: Bearer ***' \ + -d '{"model":"ktv-demucs","audio_url":"https://example.com/music.mp3"}' +``` + +**响应:** `{"status":"ok","vocals_url":"...","accompaniment_url":"...","usage":{"audio_seconds":200}}` + +### 声音转换 (rvc) + +**声音克隆/变声** — model: `ktv-rvc` + +| 参数 | 类型 | 必填 | 说明 | +|------|------|------|------| +| `audio_url` | string | 是 | 输入音频URL | +| `voice_model` | string | 是 | 目标声音模型名 | + +```bash +curl -X POST 'https://token.opencomputing.cn/llmage/v1/chat/completions' \ + -H 'Authorization: Bearer ***' \ + -d '{"model":"ktv-rvc","audio_url":"https://example.com/input.wav","voice_model":"singer_a"}' +``` + +**响应:** `{"status":"ok","output_url":"https://...","usage":{"audio_seconds":60}}` + +## 错误说明 + +| 错误信息 | 原因 | 解决方案 | +|----------|------|----------| +| `missing prompt parameter` | 缺少必填参数 | 检查请求 body | +| `余额不足` | 账户余额低于模型最低余额要求 | 充值 | +| `模型未配置定价` | 模型缺少 ppid 配置 | 联系管理员 | +| `gpu not available` | GPU资源不足 | 稍后重试