用AI给每个动作生成演示视频,俯卧撑、深蹲、平板支撑都像模像样。轮到巴西柔术最基础的虾行(hip escape),模型直接崩了——它压根没见过这个动作。
这是一位在日本做SRE的独立开发者,给自己练柔术的教练一句话逼出来的项目。教练说,每天做HIIT是攒比赛体能最快的路子。他于是做了BJJ FLOW:一个柔术单人训练App,带柔术专项训练菜单、垫边计时器、每个动作的演示视频,还有完全离线的语音指导。
计划本来很简单:演示视频全用AI生成。结果一半成功,一半彻底失败。
先写假设,再写功能
他的本职是SRE,最怕的失败模式是独立开发者的经典死法:埋头做自己想做的,做完发现没人用。
所以动功能之前,他先在自建的工具里写下11条假设:按腰带颜色和训练频率看留存、用户为什么会从通用计时器换过来、对练时能不能感觉到体能变化、愿不愿意为一次性Pro付费、习惯养成率。
埋点也排在界面之前。workout_start、workout_complete、mat_feedback、paywall_view这些事件,加上腰带颜色、伤病关注部位这类用户属性,先埋好再谈功能。这样后面每个决定都能拿数字对,而不是凭感觉。
概念先落成文字,再交给AI重做界面
第一版原型有4个标签页,长得像通用健身App。但这个App是用在垫子边上、练到一半的时候,装饰和深层导航都是负担。
他先把概念写成文档:主题叫“垫边伙伴”,背景用暖炭黑#10120F,颜色各有分工——青柠色#C5F467给主操作,薄荷色#8ADCB8表示训练中,琥珀色#F59E0B表示休息中;字体是一个超大等宽计时器,隔着垫子也看得清。明确排除霓虹、火焰、游戏化特效。
概念和界面规格写清楚之后,他把文档丢给AI设计工具,一次就把18个屏幕的Flutter界面重做完了,连App图标都是柔术腰带拼成的字母“F”。他的结论不是“AI擅长设计”,而是AI输出的质量,取决于你先把概念用文字说得多精确。
视频问题上半场:Veo只擅长它见过的动作
每个训练动作都要一段演示视频,还得是同一个虚拟运动员、同一件防磨服。第一版流水线是:先用图像模型生成运动员的起始姿势静帧,喂给Veo 3.1,指定首尾帧一致,拿到8秒循环,再用ffmpeg转成960×540的H.264打包进App。
每个动作配一份JSON规格,描述头、躯干、手臂、腿和接触点随时间的变化,由生成脚本统一处理。
标准动作效果确实自然:俯卧撑、深蹲、平板支撑、登山跑。连三角绞的顶髋和技术起立,在详细关键帧指令下都出得来。
一到地面动作就塌了。虾行、反向虾行、坐起穿越、90/90髋部拉伸,这些动作在视频训练数据里几乎不存在。提示词写得再细——“用下侧肩和上侧脚支撑身体,髋部向后向外推”,再加“不要站起来、不要做桥”的反向提示——出来的要么是一个人侧躺着蜷起来,要么干脆站起来。
模型没见过的动作,靠提示词是绕不过去的。
视频问题下半场:自己上,把动作迁移过去
他把流水线倒过来:AI不认识这个动作,那就自己演一遍,让AI复制动作。
换成Wan 2.2的动作迁移之后,它从源视频里读出骨架和运动,再重绘到那个参考运动员身上。代价是拍摄成了整个项目最费力的环节。女儿拿手机在家里和道场拍他:虾行、坐起穿越、受身、拉伸,十几条源视频。要让模型正确读动作,机位必须完全侧向,全身入画,一次干净的动作,不能有多余晃动。他演得晃,虚拟运动员就跟着晃。重拍很多次,流了很多汗。
原始迁移结果也不能直接上线,中间垫了一整套后处理:
- 用OpenCV做稳定,把画面锁到第一帧,手持抖动会让迁移后的运动员跟着摇
- 用MediaPipe提取人物遮罩,把背景涂灰,免得家具杂物被误读成肢体或道具
- 受身这类快动作会跑出模型的处理能力,先用ffmpeg插帧,降到0.5倍速做迁移,再恢复2倍速
- 迁移输出大约每0.8秒会卡住一帧,脚本按帧间差异检测重复帧,用线性插值补上
- 比较首尾帧亮度差做交叉淡化,让循环播放不跳帧
他也把局限说得很直白:动作迁移还不完美。早期用户反馈有些动作视频看着不太对,他说他们说得对。这条流水线能把冷门动作做到大致像样,最后那点准确度的差距还在补,是他清单上的头号事项。
语音:预生成,全离线
练到一半没法盯着屏幕,所以App得会说话:动作名、倒计时、“还剩10秒”。
系统自带的语音合成每台设备音色不同,还跟着系统语言设置走。他改成用Gemini TTS预生成全部语音,音色选Charon,指令是“一个冷静、低音的体育教练:清晰、自然、简短、不喊叫”,用批处理脚本一次生成。文件从WAV转成32kbps的AAC,控制App体积。
结果是:App里没有API密钥,每台设备音质一致,没信号的地下道场也能用。
回头看这个项目,他总结的几条都挺朴素:假设和埋点排在功能前面,能让开发不跑偏;让AI生成之前先把概念写下来,那些文字形式的设计规则才是AI界面不散架的原因;知道每个模型的边界,绕过去,而不是跟它吵。文生视频负责训练数据里有的动作,动作迁移负责没有的。
他自己说得更直接:这个最“AI”的项目,真正的突破口是他趴在垫子上做虾行,女儿举着手机拍。
热门跟贴