智能口播剪辑

对口播毛片做一键智能剪辑,输出达到人工粗剪水准的结果:

  • 去错读重读:同一段内容多次录读时,只保留最后一次读顺的版本;错读、口误、半句弃读全部剔除(支持句内级别的精细切分);
  • 气口清理:句内过长的停顿与吸气声自动收紧;
  • 节奏整形:按文稿标点控制停顿时长(逗号 / 句号 / 问号 / 段落各自可调),切点自动吸附到音频能量最低处,避免硬切爆音。

支持两种模式:提供文稿(script)时以文稿为基准对齐,剪辑质量最佳;不提供时由智能分析自动重建终稿。

产物分三档(outputs 自由组合):剪辑时间线 + 剪辑报告(必出)、剪辑工程文件(剪映 / CapCut / Premiere / FCPX / OTIO,可在剪辑软件中继续精修)、渲染成片(mp4)。

创建任务

基本信息

项目
请求方法POST
请求路径/task/video_oral_cut
Content-Typeapplication/json
鉴权方式Authorization 请求头(直接传 API Key)
计费输入视频时长(分钟)计费

请求参数(Body)

参数名类型必填默认值说明
file_idstring口播毛片视频的文件 ID(先经 文件上传 获取)
scriptstring文稿原文(含标点与换行,去空白后 10 ~ 50000 字)。强烈建议提供:有稿模式按文稿逐字对齐,质量最佳;缺省时走智能重建终稿
lastringzh-CN语种。当前主推中文,其余语种尽力而为
outputsarray["timeline"]产物选择,取值 timeline / project / video 任意组合。timeline(时间线+报告)恒为必出
project_formatsarray全部 8 种outputsproject 时生效,取值同 工程文件生成output_formats
renderobject{}outputsvideo 时生效,字段见下表
rhythm_presetstring节奏预设:steady(稳健)/ concise(精练)/ compact(紧凑),见下方预设表。缺省 = 内置默认节奏。预设铺底后,下方各节奏散参数仍可逐项覆盖微调
adaptive_rhythmbooleantrue自适应节奏:自动学习说话人自身的停顿习惯(顿号停多久、句号停多久),以本人节奏为基准整形停顿并清理句中犹豫停顿——成片更像本人说话。false 退回固定参数表模式
punctuation_breaksobject见下表标点 → 停顿秒数映射,传入项覆盖默认值/预设值(每项 0 ~ 5 秒)
intra_gap_maxnumber0.35句内停顿超过此秒数视为气口,触发收紧(0 ~ 5)
intra_gap_targetnumber0.10气口收紧到的目标秒数,必须小于 intra_gap_max
pad_innumber0.05每个保留片段头部的呼吸余量(秒,0 ~ 5)
pad_outnumber0.08每个保留片段尾部的呼吸余量(秒,0 ~ 5)
visual_assistbooleanfalse视觉辅助找补:用画面说话检测交叉验证语音识别,防止偶发漏识别的段落被误剪,并尝试找回漏识别的文字。会增加处理耗时(与主识别并行执行),不额外计费
source_pathstring⚠️ 条件必填毛片在你剪辑环境中的本地完整路径(如 C:\clips\口播毛片.mp4),原样写入工程文件素材引用,草稿/工程导入后直接识别素材。outputsproject 时必填;长度 ≤ 1024,服务端不校验存在性、不做路径转换
struct_metaobject{}工程文件生成:含 capcut_draft_path(你本机的草稿落盘目录)。缺省时剪映 / CapCut 的草稿元信息(*_meta)无法产出

render 对象

字段类型默认值说明
codecstringh264视频编码器,当前仅支持 h264
crfinteger18画质参数,14(高质量)~ 28(小体积)
audio_crossfade_msinteger8切点音频淡化毫秒数(0 ~ 50),消除接缝爆音;0 为硬切

rhythm_preset 节奏预设表(各档完整参数包)

参数steady 稳健concise 精练compact 紧凑缺省(不传)
适用场景讲述、教学、操作演示自媒体中视频、长视频短视频、广告通用
风格系数(自适应模式:对本人节奏的缩放)×1.25×1.0×0.5×1.0
/ / 0.18 / 0.25 / 0.360.12 / 0.18 / 0.260.06 / 0.08 / 0.120.15 / 0.20 / 0.30
/ 0.45 / 0.550.32 / 0.400.15 / 0.180.35 / 0.45
/ 0.55 / 0.600.40 / 0.450.18 / 0.200.45 / 0.50
…… / paragraph0.75 / 1.200.55 / 0.900.25 / 0.400.60 / 1.00
intra_gap_max / intra_gap_target0.45 / 0.150.35 / 0.100.25 / 0.050.35 / 0.10
pad_in / pad_out0.05 / 0.100.05 / 0.080.03 / 0.050.05 / 0.08

punctuation_breaks 默认值(未选预设时的基线,即上表「缺省」列)

标点默认停顿(秒)标点默认停顿(秒)
0.200.45
0.150.45
0.300.50
0.350.45
……0.60paragraph(文稿换行)1.00

💡 节奏调试技巧:先选最接近内容类型的预设,再用散参数逐项微调(如 rhythm_preset: "compact" + {"。": 0.3} 在紧凑基础上单独放宽句号)。report.rhythm_preset 会回显实际采用的预设,便于对照。同一份毛片可反复创建任务对比节奏。

请求示例

curl -X POST https://api.ai-mcn.tv:10000/task/video_oral_cut \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file_id": "78246108192718854",
    "script": "最近你一定刷到过这样的内容:CCD相机、颗粒感滤镜……(文稿全文)",
    "outputs": ["timeline", "project", "video"],
    "project_formats": ["jianying", "xml"],
    "source_path": "C:\\clips\\口播毛片.mp4",
    "struct_meta": {"capcut_draft_path": "C:\\Users\\Me\\AppData\\Local\\JianyingPro\\User Data\\Projects\\com.lveditor.draft\\20260611"},
    "render": {"crf": 18, "audio_crossfade_ms": 8},
    "punctuation_breaks": {"。": 0.4, "paragraph": 0.8}
  }'

成功响应示例

{
  "code": 200,
  "msg": "success",
  "data": {
    "task_id": "537489015178300",
    "task_type": "video_oral_cut",
    "status": "queued"
  }
}

查询任务结果

基本信息

项目
请求方法GET
请求路径/task/video_oral_cut/{task_id}
鉴权方式Authorization 请求头(直接传 API Key)

响应参数(output_result)

参数名类型说明
timelineobject剪辑时间线(通用时间线结构,详见下文)
reportobject剪辑报告(剪了什么、为什么剪,详见下文)
filesarray可选产物文件列表(outputsproject / video 时出现)
errorsobject可选产物的局部失败原因(部分成功时非空,键如 project / video

timeline 结构

工程文件生成 / 时间线渲染 共用同一数据模型:单条视频轨 + 单条音频轨(同源同切点),track_timeline 中每个片段为一段保留的口播。material_map 同时包含:

字段说明
path{素材ID: 本地完整路径}(= 入参 source_path 原样值),剪辑软件直接识别;未传 source_path 时退化为文件名占位
file_id{素材ID: 平台文件ID},可直接喂给 时间线渲染 接口
duration / video_rate / video_size源视频元数据

report 结构

字段类型说明
final_scriptstring实际采用的终稿(有稿 = 入参文稿;无稿 = 智能重建结果)
script_sourcestringuser(用户提供)/ rebuilt(智能重建)
droppedarray剔除片段列表,元素 {start, end, asr_text, reason}reason 取值:retake(被后次重读覆盖)/ misread(口误、弃读或终稿外内容)
uncovered_scriptarray终稿中未在毛片里找到对应实拍的文本段(疑似漏读),剪辑以实拍为准
review_pointsarray建议人工复核的位置,元素 {time, note}(如保留片段识别置信度偏低)
insufficient_breaksarray源素材留白不足、停顿未达设定值的位置,元素 {time, want, got}
rhythm_presetstring | null实际采用的节奏预设名;未用预设为 null
adaptive_rhythmboolean自适应节奏实际生效与否(素材过短、停顿样本不足时自动回退固定表并为 false
pause_profileobject(仅自适应生效时)说话人停顿画像 {类: {median, p75, n}},调参参照
analysis_degradedboolean智能分析临时不可用、已降级纯机械规则时为 true(任务仍正常完成)
suspect_omissionsarray(仅 visual_assist=true)疑似漏识别区间:{start, end, overlap, recovered}overlap 为画面说话重叠率,recovered 表示是否已找回文字
stt_recoveredarray(仅 visual_assist=true)找补回的文字:{start, end, text},已自动合并进剪辑结果
visual_assist_degradedboolean(仅 visual_assist=true)画面检测临时不可用、已按未开启处理时为 true(任务仍正常完成)
coveragenumber终稿覆盖率 0 ~ 1;低于 0.6 时额外返回 low_coverage: true,提示文稿与实拍可能严重不符
duration_beforenumber剪辑前时长(秒)
duration_afternumber剪辑后时长(秒)

files[] 元素

字段类型说明
typestringproject(工程文件)/ video(渲染成片)
formatstring工程:xml / fcpxml / otio / gtrk / jianying_draft / jianying_meta / capcut_draft / capcut_meta;成片:mp4
file_idstring产物文件 ID
download_urlstring下载路径
filenamestring建议文件名(草稿文件需按此命名放入草稿文件夹)
durationnumber(仅 type=video)成片时长(秒)

成功响应示例

{
  "code": 200,
  "msg": "success",
  "data": {
    "task_id": "537489015178300",
    "status": "completed",
    "progress": 100,
    "output_result": {
      "timeline": {
        "video_size": [1280, 720],
        "video_rate": 30,
        "video_track": [{"track_timeline": [
          {"clip_id": "78246108192718854", "clip_st": 18.50, "track_st": 0.0, "duration": 9.55},
          {"clip_id": "78246108192718854", "clip_st": 28.48, "track_st": 9.55, "duration": 0.64}
        ]}],
        "audio_track": [{"track_timeline": [
          {"clip_id": "78246108192718854", "clip_st": 18.50, "track_st": 0.0, "duration": 9.55},
          {"clip_id": "78246108192718854", "clip_st": 28.48, "track_st": 9.55, "duration": 0.64}
        ]}],
        "material_map": {
          "path": {"78246108192718854": "C:\\clips\\口播毛片.mp4"},
          "file_id": {"78246108192718854": "78246108192718854"},
          "duration": {"78246108192718854": 114.7},
          "video_rate": {"78246108192718854": 30},
          "video_size": {"78246108192718854": [1280, 720]}
        }
      },
      "report": {
        "final_script": "最近你一定刷到过这样的内容:CCD相机……",
        "script_source": "user",
        "dropped": [
          {"start": 7.73, "end": 17.33, "asr_text": "最近你一定刷到过……(第一遍)", "reason": "retake"},
          {"start": 107.89, "end": 110.29, "asr_text": "而这种感觉正在以一种因你方", "reason": "retake"}
        ],
        "uncovered_script": ["十三年"],
        "review_points": [],
        "insufficient_breaks": [],
        "analysis_degraded": false,
        "coverage": 0.982,
        "duration_before": 114.7,
        "duration_after": 68.59
      },
      "files": [
        {"type": "project", "format": "jianying_draft", "file_id": "537489015178301", "download_url": "/download/b1/537489015178301.json", "filename": "draft_content.json"},
        {"type": "video", "format": "mp4", "file_id": "537489015178302", "download_url": "/download/b2/537489015178302.mp4", "filename": "oral_cut.mp4", "duration": 68.59}
      ],
      "errors": {}
    },
    "create_time": "2026-06-11T08:00:00Z",
    "update_time": "2026-06-11T08:03:10Z"
  }
}

错误码

错误码HTTP 状态码说明解决方案
6013400file_id 缺失补充必填参数
6004404文件不存在检查 file_id 是否正确
6014400文件类型与任务不匹配(需视频文件)上传视频格式文件
6016400业务参数非法(outputs / project_formats 越界、script 长度超限、节奏参数越界等,响应中附具体原因)按响应提示修正参数
6502401鉴权失败检查 Authorization 请求头
6201402配额不足购买配额包或充值
6202402余额不足前往仪表盘充值

使用限制

  • 单文件单机位:当前版本处理单条口播毛片;多机位混剪暂不支持。
  • 有稿模式质量最佳:主推中文口播。无稿模式由智能分析重建终稿(尽力而为),重建结果会在 report.final_script 中返回,便于核对。
  • 按输入时长计费:以毛片时长(分钟)计费;选择 project / video 产物不额外加价。
  • 核心产物保障timeline + report 产不出时任务才会失败(自动退款);工程文件与成片为衍生产物,单项失败不影响任务完成,失败原因记录在 errors 中。
  • 工程文件素材引用:草稿/工程中的素材路径取自入参 source_path(原样写入),请确保该路径在你的剪辑环境中真实有效(即上传毛片前它在本机的位置);产出剪映 / CapCut 可直接打开的完整草稿还需提供 struct_meta.capcut_draft_path
  • 剪辑以实拍为准:文稿仅作对齐参照;实拍漏读的内容不会无中生有,漏读段落在 report.uncovered_script 中提示。
  • 视觉辅助找补visual_assist):用画面说话检测保护疑似漏识别的段落不被误剪并尝试找回文字;找不回时仅保护不剪并在 review_points 提示人工复核,绝不凭空生成内容。需要画面中说话人面部基本可见;处理耗时增加(与主识别并行,约为两者较大值),不额外计费。