5.4 KiB
美家卡-智剪 (Meijiaka Smart Cut) 项目开发实施方案
基于您的最新反馈与确认,本项目将以《golden-purring-crown.md》(方案A)为主要交互蓝本进行落地,明确采用 手动匹配分镜视频、完全本地化数据存储 和 沿用现有架构新建仓库 的策略。
目标与改动背景
项目背景:衍生自现有的「美家卡智影」,新项目「美家卡智剪」侧重针对用户已有的视频素材,利用 AI 进行配音、并完成拼接与后期制作。
核心工作流程(6 步):
- 脚本生成 (基于主题生成具有预估时长的分镜与旁白)
- 视频剪辑 (新) (用户手动为每一个单分镜导入对应长度的视频素材短片)
- 音色配音 (新) (用户本地维护音色特征,使用大模型 TTS 为所有分镜批量生成口播音频)
- 字幕压制 (自动打轴并挂载 ASS 字幕,复用智影功能)
- 封面制作 (根据首分镜首帧和文字生成封面,复用智影功能)
- 视频合成 (所有片段首尾拼接成短视频,并将原有环境音替换/混音为合成音频,复用智影功能)
核心设计决策 (User Confirmed)
- 交互模式:不采用长视频自动切割算法。必须采用单一分镜独立手动导入视频的交互。
- 数据存储:纯本地文件系统。所有业务数据(项目元数据、分镜配置、克隆好的本地音色记录等)全部保存在用户本地磁盘路径下,不保存在云端数据库中。
- 架构剥离:通过拷贝文件系统级别进行剥离 (
rsync ai-meijiaka -> meijiaka-zj),保留现有混合路由和本地缓存设计。
Proposed Changes
1. 架构剥离与仓库初始化
在同级目录下快速搭建衍生仓库,移除不相干的缓存依赖。
[NEW] meijiaka-zj/ (新建本地项目根目录)
- 配置应用标识词修正(
产品名: 美家卡智剪,Bundle Identifier: cn.meijiaka.ai-video-editor等)。 - 修改并初始化 git 记录。
2. 后端 API (Python FastAPI)
不再新建数据库表结构,将所有新 API 的核心转为与本地文件、大语言模型 API 之间的交互代理,由 AsyncEngine 发起。
[NEW] python-api/app/scheduler/handlers/tts_handler.py
创建用于处理批量语音生成的并发 Dispatcher。
[NEW] python-api/app/services/voice_clone_service.py & tts_service.py
包装调用 KlingAIProvider:
- 创建克隆音色的调用逻辑(由于无数据库,云端成功后的声纹特征及
voice_id将通过 API 抛回前端并由 Tauri 存入本地 JSON 集合中)。 - 提供语音合成和查询能力的端点。
[NEW] python-api/app/api/v1/voice.py
仅暴露无状态/代理转发类型的路由给前端:克隆状态查询、提交合成等。无 DB 依赖。
3. Rust 系统能力扩展 (src-tauri)
由于采用本地存储,需要在 Rust 层扩展音频文件和声纹文件的安全存储指令。
[NEW] tauri-app/src-tauri/src/storage/voice.rs
新增声音本地缓存与描述管理,目录范例:~/Documents/Meijiaka/voices/ (用于存储 voice meta.json 和相关的 reference audio)。
[NEW] tauri-app/src-tauri/src/commands/voice.rs
由 Tauri 提供存储IPC API给前端:读取本地音色列表、写入新克隆的音色等。
[MODIFY] tauri-app/src-tauri/src/ffmpeg_cmd.rs
[重要机制更新]: 实现目标音频覆盖处理,提供类似 replace_audio_in_video 的函数,依靠 -c:v copy -c:a aac -shortest -map 0:v:0 -map 1:a:0 剥离原声并在对应的短视频片段上压入新的 TTS 朗读声音。
4. 前端应用层 (tauri-app / React)
调整原应用状态数据,创建本地数据绑定。
[MODIFY] tauri-app/src/store/projectStore.ts
扩展原 SmartCutShot 阶段参数,支持记录新增加的独立视频源地址 (mediaPath) 和单独段落的合成语音地址 (audioPath)。
[NEW] tauri-app/src/store/voiceStore.ts
与 src-tauri 通过 IPC 交互:
- 从本地加载用户维护在
voices/下的所有自定义音色。 - 处理前端的缓存与显示。
[NEW] tauri-app/src/pages/VideoCreation/VideoEditing.tsx (Step 2)
重定义分镜视频导入步骤:
- 为左侧每一个生成的分镜文案展示独立的 Upload/Select Box。
- 用户可以点选或拖动,调用系统弹窗将
mp4一对一绑定给自己心仪的旁白节点。
[NEW] tauri-app/src/pages/VideoCreation/VoiceDubbing.tsx (Step 3)
批量克隆与TTS应用页面:
- 渲染本地和预定义的云端默认音库。
- 前端批量发起所有含旁白分镜的异步合成任务,获取 URL 后调用 Rust 保留至项目对应的
audio/子目录中。
Verification Plan
Manual Verification (端到端走通测试)
- 环境: 在新目录
meijiaka-zj启动前后端服务。 - Step 1: 使用纯业务旁白的模版生成分镜文案。
- Step 2: 对列表中独立出现的 3 个分镜卡片,依次上传/拖入 3 个独立的
.mp4文件以测试前端映射逻辑。 - Step 3(关键测试): 选择一个克隆音色发起全局合成。观察
tts_slots运转状况。完毕后查验对应项目的物理存储路径内正确生成了.mp3音轨。 - Step 6: 打包合成,测试
ffmpeg_cmd.rs中音频替代逻辑是否执行无误,输出画面不掉帧、声音是合成口音的短片。