4.2 KiB
4.2 KiB
阿里云音频与导演台扩展实施记录
日期:2026-09-17。此记录接续 video-canvas-task-repairs-2026-09-17.md。
已完成代码
- 语音/音乐节点从仅上传改为官方模型选择、文本、音色、语言、格式、指令和歌曲参数。控件严格跟随所选模型能力,千问3 TTS 不发送其不支持的数值音调/速度参数。
- 阿里云 HTTP 适配:qwen3-tts-flash、qwen3-tts-instruct-flash、qwen-audio-3.0-tts-flash/plus、fun-music-v1。北京限定模型不能错用国际服务地址;使用原服务商密钥,不给浏览器返回密钥。
- 音频加入持久任务队列。先记录供应商原文件,再下载校验 WAV/MP3 并归档;转存失败只恢复下载,网络受理状态不明不会自动再次生成。
- 导演台 AI 识图入口:调用当前视觉理解模型,把参考图转为人物/立方体/球体和机位组成的可编辑简化布景。结果独立保存,允许显式插入或替换原对象。不是精细纹理/网格重建,也没有凭空生成 GLB。
- 对象轨道包含位置、旋转、缩放、可见性、启用开关、线性/缓入缓出插值、逐帧时间编辑/删除、自动记录、秒/30fps 显示单位、时间轴缩放。旋转按最短弧插值;对象删除清理轨道;修改总时长同步缩放轨道。
- 相机与对象共用播放头和导出时间;跟随相机采样运动后的目标对象。纯对象动画也可预览和导出。场景骨骼动作序列、声音轨道、跨机位自动切镜尚未实现。
- 修正浏览器 crypto.randomUUID 失去调用上下文导致记录帧/插入布景报 Illegal invocation;修正视频编码器立即停止可能丢掉末帧,预热首帧并留出末帧呈现时间。
48 服务器配置
已使用 scripts/configure-aliyun-canvas-audio.cjs --apply 写入现有阿里云官方北京服务商,保留其他模型和全局默认设置;变更前模型记录备份在应用目录 .model-config-backups/(不含服务商密钥)。
- qwen3-tts-instruct-flash:启用,音频页面优先顺序 900。
- qwen3-tts-flash:启用,顺序 901。
- fun-music-v1:已建配置,禁用,标记 activationRequired,等待账号邀测权限确认。
- Qwen Audio 3.0:适配已写,当前 Key 的只读 models 目录未列出,未盲目启用。
- 千问3.8既有视觉理解配置保留。
只读调用官方模型目录返回 HTTP 200,包含千问3 TTS/指令版;未发起真实付费语音/音乐/识图生成。模型目录可见性不能代替生成效果验收。
千问 TTS 官方文档;新音频 HTTP 文档;Fun-Music 官方文档(邀测、北京地域、临时文件 24 小时)。
验证
- helpers 全套 475 项通过;追加总时长/删除对象轨道用例后导演台 24 项通过,合计覆盖 476 项。
- TypeScript
tsc --noEmit --incremental false通过。 scripts/qa/video-canvas-audio.cjs使用实际服务适配器和本地替身:请求参数、归档前检查点、存储失败后零重复 POST、链接过期、服务商错误、租约丢失均通过。scripts/qa/video-canvas-task-db.cjs实际临时 PostgreSQL 验证通过:并发幂等、独占领取、恢复与失效 worker 隔离。- 本地浏览器调用实际 React 组件和 Three.js:音频能力控件、未开通音乐拦截、对象播放头/关键帧编辑/帧单位、独立对象动画视频导出、重建结果插入/替换通过,无浏览器运行错误。模型与上传返回使用本地替身。
- 真实浏览器录制文件经 ffprobe 确认为 VP9、1280×720;设置 2 秒,文件约 1.974 秒。提取首尾帧确认对象实际移动。MediaRecorder 属于实时录制,受浏览器帧调度影响,不能宣称离线逐帧精确编码。
参考站及开源自动剪辑算法详见 video-canvas-smart-edit-research-2026-09-17.md。该部分为已完成研究和实施方案,尚未接入完整自动混剪服务。
部署状态:本次生产环境仅更新上述模型配置;应用代码在开发分支完成,未发布到生产应用。