5.9 KiB
智能剪辑四项续修与本地验收(2026-09-18)
本轮承接 e18413a4,范围为人声分离、自动转写、完整字体目录、主站智能剪辑链路。仅本地修改和验证,未部署、未推送。并非全部网站功能或所有视觉状态完成像素级验收。
功能结果
| 项目 | 实现与验证 |
|---|---|
| 人声分离 | 离线 HTDemucs,CPU 2线程、7秒分块、每素材180秒上限。视频和独立音轨均可选择“仅保留人声”“仅保留背景音”“分离为两个音轨”。保留裁剪、变速、增益、静音和转场音量包络,关闭已分离的视频原声,防止音量叠加;处理失败保留原方案。 |
| 自动转写 | 本地 FunASR Paraformer/FSMN-VAD/CT-Transformer。字幕面板入口直接创建持久化任务,保留手动字幕、替换此前 ASR 字幕。修复缺失 pred_timestamp 导致没有逐句时间戳的问题,负起点归零,按照裁剪及变速映射到时间轴。 |
| 完整字体库 | 参考目录共2002项,5项随应用打包、1997项新增目录全部下载、解析及SHA校验通过;198个参考源字体,其他字体来自官方 Google Fonts。原始与处理后字节均固定校验和。浏览器和合成使用相同字体文件;字体内版权信息保留。支持搜索、全部/常用/推荐/Google分类、虚拟滚动。修复小高度窗口弹层被参数栏截断。 |
| 主站智能剪辑链路 | 实际 Next 生产构建、登录、隔离数据库、上传、任务队列、模型处理、FFmpeg合成、成片与SRT、画布回填播放、编辑方案保存和刷新恢复均验证。未使用独立演示页的样例任务回调。 |
模型官方来源:Demucs、FunASR。部署安装及缓存配置见 服务说明。
真实数据
中文样例8.3935秒,视频8.9秒。实际识别三句话:
- 0–1.349秒:“欢迎使用智能剪辑,”
- 1.349–4.710秒:“我们正在测试人声分离和自动字幕,”
- 4.710–8.205秒:“请保留原始视频的画面和声音。”
实际混音分离后,人声及背景声相加与原信号的最大误差 1.49e-8。这验证音量与时间同步;不等于对任意歌曲的人声提取质量作保证。
生产构建 API 链路:方案1.6秒、视频分离10.6秒、转写10.6秒、独立音轨分离9.1秒、合成1.6秒。两个单轨保留分支另测11.6/10.2秒,均只新增所选的一轨。此为本机短素材实测,不是线上性能承诺。成片854×480、H.264/AAC、8.900秒。
新增字体1997项全部处理通过,缓存793,509,828字节(约757MiB)。实际FFmpeg验证原有5种及新增6种(大宝桃桃体、ABeeZee、Abril Fatface、CJGDGMH、Molle、SCJSSHT),检查实际字形像素。主站实际选择大宝桃桃体,应用全部字幕并确认数据库保存为所选字体。两款参考字体OS/2版本字段与长度不匹配,仅修正字段版本,未改变字形轮廓。
发现并修复的主站问题
- 新画布依赖数据库
now()写入无时区时间时,与应用生成的任务时间产生8小时时差,导致任务回填被判为旧结果。新建画布的两个接口改为显式应用时间;隔离测试库为 Asia/Shanghai,新增项目时间断言通过。未迁移或修改生产历史数据。 - 视频卡片原先忽略
videoMeta.durationSeconds,显示5秒而实际8.9秒。优先读取成片元数据及浏览器解码时长,现显示9秒。 - 音频处理结果不得把编辑器节点变成视频节点;更新当前方案时保留其他备选方案,反复回填保持幂等。
- 开发热更新期间曾遇到编辑器样式失效;最终生产构建重新加载、播放和操作正常。未将开发热更新现象误判为已定位的线上缺陷。
验证与复现
- TypeScript及Next生产构建通过。
- Helper回归498通过、1跳过。
- 真实FFmpeg:6比例、3转场、居中转场、裁剪/变速/音量/静音/字幕位置与字体;PySceneDetect 3镜头、RMS 2有效区间、librosa 22拍。
- 独立合成服务:鉴权、真实成片、进程中断后恢复、幂等、冲突拒绝、完成结果重启保留。
- 主站浏览器:实际自动转写、字体搜索/选择/全部应用、两个分离子菜单、仅人声提交、刷新后回填、成片播放和导出到画布。
可复现脚本:
$SMART_EDIT_PYTHON scripts/qa/smart-edit-models.py input.wav .qa/model-check
SMART_EDIT_TEST_CATALOG_FONTS=1 node scripts/qa/video-canvas-smart-edit.cjs
SMART_EDIT_QA_DIR=.qa/isolated-main-chain node scripts/qa/smart-edit-main-chain.cjs
node services/video-render/build.cjs
node scripts/qa/video-render-service.cjs
主站脚本仅允许localhost/127.0.0.1,需独立测试库、实际登录账号 account.json(id/email/password)和含“智能剪辑”的中文 speech.mp4。不得使用生产账号或生产库。数据库、模型权重、字体缓存、测试凭据和成片不提交Git。
本地证据目录 .qa/smart-edit/remaining-0918/:model-regression/report.json、production-chain.log、production-chain/main-result.mp4、branches-report.json、catalog-render.log、browser-verification.json、main-editor-final.jpg、browser-export.mp4、build-release.log、helpers-final.log、render-service.log。
验收边界
本地主站使用隔离 PostgreSQL 数据库及本地S3兼容服务。测试进程注入仅限本地下载传输的映射,使真实下载器可访问该存储;没有放宽生产SSRF规则。尚未验证线上对象存储或部署。
目录及字体文件完整,不代表2002字体在所有DPR、中文混排、字形抗锯齿方面都完成逐像素对拍。后台休眠/断网/所有窄屏矩阵、运行中远程任务主动取消、五种模式算法与参考逐案一致性仍单列待验,不混入本轮完成项。