项目名称: 智能影记 - Memoria
团队名称: Mnemosyne
时间: 2026.04.13 - 2026.04.19 (实训第五周)
当前阶段: Phase 3 (端云架构合体与视听管线初探)


一、 本周工作概述:给系统装上“眼睛”与“耳朵”

在上周的迭代中,Memoria 团队跑通了基于大语言模型(LLM)的图文叙事编导流。但要真正实现“零门槛智能生活导演系统”的愿景,我们还缺乏两项核心基建:

  1. 更聪明的眼睛:摆脱依赖文本标签的传统搜索,让系统真正“看懂”图片的语义。
  2. 更敏锐的耳朵:视频合成不能只是图片与音乐的简单叠加,必须让画面随着音乐的“心跳”进行律动。

本周,团队兵分两路,分别在端侧向量引擎并网云端音频节拍检测上取得了突破性进展,为后续的视听合成管线(Video Pipeline)打下了坚实基础。

二、 端侧多模态并网:MobileCLIP 本地引擎上线

本周我们正式将底层 C++ 编写的 AI 推理后端接入了 Flutter 业务线。

2.1 FFI 桥接与 Isar 向量存储落地
前端通过 ffi 成功调用了底层 NCNN / ONNX Runtime 引擎。在数据流转层面,我们在 PhotoEntity 中新增了 List<double>? imageEmbedding 字段。这意味着当原始图片经过底层的 MobileCLIP 编码后,输出的 512 维稠密特征向量将被直接存入本地 Isar 数据库,实现了“图片不出端”的极致隐私保护,同时为下一阶段的“自然语言搜图(V2版)”备足了弹药。

2.2 核心工程优化:优雅解决 OOM(内存溢出)难题
在移动端跑 AI,最怕的就是模型吃掉所有内存导致 App 崩溃。团队使用了“基于引用计数的模型轮转与闲置释放机制”:

  // 截取自 mobileclip_embedding_service.dart
  void _scheduleIdleDispose(Duration delay) {
    _cancelIdleDisposeTimer();
    _idleDisposeTimer = Timer(delay, () async {
      if (_workflowLeaseCount > 0) return;
      try {
        await _mobileclip2OnnxService.dispose();
      } catch (_) {}
      try {
        await _ncnnService.dispose();
      } catch (_) {}
    });
  }

通过 _workflowLeaseCount 管理当前任务流。当打标任务完成后,系统会启动一个默认 3 分钟的倒计时。如果在时间内没有新的推理任务,系统会自动调用 dispose() 卸载模型、释放显存/内存。这一机制极大地提升了低端 SoC 机型上的运行稳定性。

三、 视听管线前置:基于 Librosa 的高精度节拍解析

为了让最终导出的视频具有“呼吸感”和“律动感”,视频的转场、硬切必须与音乐的节拍完美对齐。由于手机端缺乏高效成熟的音频解析库,我们将该重度计算任务放在了云端。

3.1 云端 FastAPI + Librosa 分析引擎
我们部署了基于 Python 的异步微服务。不仅提取 BPM,更关键的是计算了音频的局部能量(RMS)

# 截取自 app.py (FastAPI 后端)
# 1. 提取 BPM 和 节拍帧
tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr)
beat_times = librosa.frames_to_time(beat_frames, sr=sr)
beat_ms = (beat_times * 1000).astype(int)

# 2. 计算能量 (RMS) - 用于后续画面的震动或闪烁特效!
rms = librosa.feature.rms(y=y)[0]
rms_frames = librosa.frames_to_time(np.arange(len(rms)), sr=sr)

# 3. 数据融合,精准匹配每毫秒的能量值
results = [{"ms": int(ms), "energy": round(energy, 4)} ...]

返回给客户端的 JSON 数据不仅告诉我们“何时该转场(ms)”,还通过 energy 字段告诉我们“这个转场该用多大烈度(平滑淡入还是剧烈闪白)”。

3.2 企业级安全网:Cognito JWT 鉴权与 Dio 拦截
客户端通过 Dio 库将音频源文件通过 multipart/form-data 上传。在安全方面,我们引入了 AWS Cognito 进行身份验证,通过自定义请求头 X-Memoria-Token 携带 JWT Access Token,云端利用 JWKS(JSON Web Key Set)进行非对称验签,彻底杜绝了非法接口调用。

四、 本周总结与下周展望

本周是啃硬骨头的一周。我们跨越了 Dart、C++、Python 三种语言环境,彻底打通了从端侧视觉特征提取到云端听觉节拍解析的双向链路。

下周(Phase 4 视听合成核心期)工作预告:
万事俱备,只欠东风。下周起,系统将进入“硬核渲染”阶段。我们将尝试引入并封装 FFmpeg,把底层的节拍时间戳、视觉大模型生成的 Prompt 剧本以及本地相册图片,真正软编码合成为一支带有动态专场特效的 MP4 视频!

Memoria 的最终形态即将显现,期待下周的成果!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐