🩰 DanceFlow · 舞韵星迹

AI 舞蹈评分工具 — 用计算机视觉帮助舞者精准提升

产品截图

Upload
视频上传
Analyzing
AI 识别中
Result
四维评分结果
Segments
逐段评分
Skeleton
骨架对比 + 关键帧

产品定位

一句话:AI 帮你跳得更好——上传你和教学视频,AI 逐帧对比每个关节角度,告诉你哪里不到位、如何改进。

🎯 目标用户
  • 自学舞蹈的爱好者
  • 舞蹈教室课后自练的学生
  • 想量化教学效果的舞蹈老师
💡 核心价值
  • 无需专业设备,手机录像即可
  • 即时反馈,不用等老师
  • 量化进步,看得见的提升

技术架构

端到端 Pipeline

视频上传 → 音频提取(Web Audio API) → 音频对齐(Chromagram + Cross-correlation)
→ 姿态估计(MoveNet/BlazePose, 33个关键点) → 时间轴重映射
→ 逐帧对比(加权余弦相似度 + DTW) → 四维评分 → 关键帧可视化

Tech 姿态估计
  • Google MoveNet Thunder(33个关键点)
  • 纯前端推理,TensorFlow.js
  • 无需后端服务器,隐私安全
Tech 音频对齐
  • Chromagram 12维音高特征
  • Cross-correlation 找时间偏移
  • 支持变速练习(0.5x/0.8x/1.2x)
Tech 评分算法
  • 四维评分:准确度×0.5 + 延展性×0.2 + 流畅度×0.15 + 节奏感×0.15
  • 关节权重分配(躯干 > 四肢 > 手指)
  • DTW 处理速度差异
Tech 部署
  • 纯前端 SPA,Cloudflare Pages
  • 零后端成本,全球 CDN
  • 移动端优先设计

关键指标

85% 与专业老师评分一致率 < 30s 从上传到出结果 0 后端服务器成本 33 人体关键点追踪 4 评分维度 v2 音频对齐算法迭代

产品决策

为什么纯前端?

舞蹈视频涉及用户身体影像,隐私极度敏感。纯前端推理 = 视频永远不离开用户设备。这不是技术炫技,是产品必须。

为什么做音频对齐(v2)?

v1 用户反馈:如果教学视频从副歌开始但自己从前奏录,评分直接崩溃。音频先行对齐解决了"时间轴不一致"这个真实痛点。

为什么不用慢放 > 加速?

舞蹈练习核心场景是降速学动作(0.25x/0.5x),没人需要加速看自己跳舞。砍掉加速 = 更简洁的 UI。

四维评分权重怎么定的?

采访了 5 位舞蹈老师:准确度最重要("动作做对了才能谈表现力"),节奏感次之("跟不上拍就不是舞蹈"),延展性和流畅度是进阶维度。权重反映教学共识。

核心 Learnings

Learning 1 AI 落地 ≠ 模型准确率

MoveNet 姿态估计本身精度不错,但直接比较两段视频的关键点序列效果很差——因为时间对齐、视角差异、体型差异这些"非AI问题"才是真正的瓶颈。花了 70% 精力在这些工程问题上。

Learning 2 用户要的不是分数,是"下一步做什么"

v1 只输出一个总分,用户反馈"我知道我 72 分了,然后呢?"。v2 加了关键帧对比(红色标注差异最大的关节)和具体建议("右臂延展不够,第3-5拍注意向上打开")。可行动的反馈 >> 抽象分数。

Learning 3 前端 AI 的性能陷阱

TensorFlow.js 在移动端 Safari 的 WebGL backend 有严重内存泄漏。处理 30fps×60s 的视频需要分 batch 推理 + 主动 GC,否则 tab 直接 crash。调了三周才稳定。

Learning 4 Side Project 的 PM 意义

从 0 到 1 独自走完"发现需求→定义方案→技术选型→实现→测试→迭代"全链路。当你亲手做过一次,你和工程师的对话质量完全不同——你知道哪些需求真的难、哪些"小改动"其实是大重构。

Learning 5 评分体系设计是产品问题,不是算法问题

算法能算出"你的左膝角度偏差 15°",但用户不关心度数。产品要做的翻译是:15° 偏差在这个动作中是"轻微偏差"还是"严重错误"?这需要领域知识(舞蹈教学理论)+ 用户研究,不是纯技术能解决的。

向非技术人解释 AI

Communication 让舞蹈老师理解并信任 AI 评分

结果:舞蹈老师从"AI评舞蹈?不靠谱吧"变成"能不能给我的学生课后自练时用?",并主动帮忙找了20个学生做测试。

Emily Wu · Side Project Portfolio · 2026