Files
meijiaka-zy/docs/meijiaka-zhijian-final-plan.md
T

5.4 KiB
Raw Blame History

美家卡-智剪 (Meijiaka Smart Cut) 项目开发实施方案

基于您的最新反馈与确认,本项目将以《golden-purring-crown.md》(方案A)为主要交互蓝本进行落地,明确采用 手动匹配分镜视频完全本地化数据存储沿用现有架构新建仓库 的策略。

目标与改动背景

项目背景:衍生自现有的「美家卡智影」,新项目「美家卡智剪」侧重针对用户已有的视频素材,利用 AI 进行配音、并完成拼接与后期制作。

核心工作流程(6 步):

  1. 脚本生成 (基于主题生成具有预估时长的分镜与旁白)
  2. 视频剪辑 (新) (用户手动为每一个单分镜导入对应长度的视频素材短片)
  3. 音色配音 (新) (用户本地维护音色特征,使用大模型 TTS 为所有分镜批量生成口播音频)
  4. 字幕压制 (自动打轴并挂载 ASS 字幕,复用智影功能)
  5. 封面制作 (根据首分镜首帧和文字生成封面,复用智影功能)
  6. 视频合成 (所有片段首尾拼接成短视频,并将原有环境音替换/混音为合成音频,复用智影功能)

核心设计决策 (User Confirmed)

  1. 交互模式:不采用长视频自动切割算法。必须采用单一分镜独立手动导入视频的交互
  2. 数据存储纯本地文件系统。所有业务数据(项目元数据、分镜配置、克隆好的本地音色记录等)全部保存在用户本地磁盘路径下,不保存在云端数据库中
  3. 架构剥离:通过拷贝文件系统级别进行剥离 (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 中音频替代逻辑是否执行无误,输出画面不掉帧、声音是合成口音的短片。