乐于分享
好东西不私藏

Vibe Coding 做软件,我踩过的真实坑

Vibe Coding 做软件,我踩过的真实坑
去年我用AI辅助开发了一个AI配音AI数字人软件,也就是EVox映声。

从发布到现在,这个软件真的把我折腾得不轻。

尤其是包含本地 AI 模型的软件,坑比普通软件多得多。不是功能做出来就完了,还要面对用户电脑配置、显存大小、模型加载、界面复杂度、操作误解,以及各种你自己电脑上根本复现不了的问题。

今天就复盘一下,我在做 EVox 映声过程中犯过的几个错。也许对正在用 AI 做软件的人会有帮助。
错误一:我以为功能越多,软件就越强

一开始,软件的配音区是 4 列结构,其中“独立文本”和“独立句子”在功能上其实有明显重叠。

独立文本是我早期开发的功能,独立句子是后面迭代出来的功能。按理说,后者已经可以覆盖前者的大部分使用场景。

但当时我有一个很典型的错误想法:开发都开发了,删掉太可惜。

于是两个功能都留着。

结果软件看起来更强了,但用户用起来更复杂了。后来我才意识到,软件开发里最难的不是加功能,而是删功能。

功能多,不一定代表专业。很多时候,功能越多,用户越不知道该点哪里。

错误二:不是每个用户的电脑显卡都很强

后来我迭代到了 3.11 版。这个版本从用户体验上来说是一次很大的升级,我重构了软件,去掉了独立文本板块,界面变得更简洁了。

但新的问题又来了。

因为软件里包含多个 AI 模型,启动后会默认加载配音模型。对我自己的电脑来说,这没什么问题。但对小显存用户来说,软件一打开,显存可能就被配音模型占满了。

可有些用户只是想用 AI 对口型,并不想用配音。这个时候,配音模型提前加载就变成了一种负担。

为了解决这个问题,我在设置里加了一个选项:启动时不加载配音模型。

但这又带来了新的问题。

如果这个选项默认勾选,用户打开软件后不能配音,他可能会认为这是 bug。如果这个选项默认不勾选,小显存用户又不知道自己应该去设置里改这个选项。

我自己的电脑测试没问题,不代表用户的电脑也没问题。尤其是本地 AI 软件,显卡、显存、驱动、系统环境,都会带来各种意想不到的问题。

还有一个很小但很典型的例子:最初软件默认打开尺寸是 1920×1080。我以为现在大部分电脑都是这个分辨率了。

结果发现,很多用户用的是笔记本。软件在他们电脑上甚至显示不全。

后来我把软件最小尺寸一路压缩,现在可以做到更小的 mini 尺寸。这个问题才算解决。

错误三:我把复杂性丢给了用户

再后来,我又想了一个办法:启动软件时,让用户自己选择到底要启动哪个板块。

可以只启动配音板块,也可以只启动对口型板块。如果显存足够大,也可以两个板块都加载。

这个方案从开发者角度看,好像很合理。但从用户角度看,就不一定了。

用户只是想打开软件做一件事,结果一启动就要读一堆文字,判断自己该选哪个模式、加载哪个模型、适合什么显存。

这对很多用户来说不是自由,而是负担。用户不是来考试的,用户是来完成任务的。

我后来才意识到,一个产品如果需要用户在启动时做很多选择,往往说明产品结构本身还不够清晰。

错误四:我试图用补丁解决架构问题

我又想到一个办法:默认加载配音模型和对口型模型,然后增加一个显存清理按钮。

这样用户如果显存不够,就手动清理一下。

这个按钮确实有用,但它不是根本方案。

因为新的问题又来了:如果用户用完配音模块后清理了显存,再回到配音模块时,模型已经被清掉了。这个时候再点击配音,可能就没有反应。

从用户视角看,这又像是一个 bug。

更麻烦的是,两个模型同时加载、同时管理、相互耦合,会让软件变得非常脆弱。有些问题我自己的几台电脑都测试不出来,但用户电脑上就是会出问题。

你很难判断,到底是用户操作问题,还是软件不适配他的电脑。它能缓解问题,但不能改变软件架构本身复杂、耦合、脆弱的事实。

不过,显存清理功能也不是完全没有价值。它后来带来了一个新的好处:可以显示用户当前的显存、内存占用情况。

当用户出问题时,截图给我,我至少能更快判断问题出在哪里。

错误五:我以为用户会认真看说明

还有一个非常真实的问题:很少有人会认真看你写的软件说明。

比如我反复提醒,参考音最好不要超过 30 秒。但很多用户根本不会看这些说明,直接上传几分钟的参考音。结果就是配音始终无法生成。

而用户截图给我的时候,我一开始很难排查原因。因为从截图上看,按钮、文本、路径好像都没问题。

后来我改了逻辑:

如果参考音超过 25 秒但小于 30 秒,软件会提醒用户,最佳参考音时长是 10 到 20 秒。如果参考音超过 30 秒,软件直接拒绝插入。

这件事让我明白,不要指望用户通过阅读说明来避免错误。真正好的产品,应该尽量通过功能本身限制错误发生。能用机制解决的问题,就不要只靠说明书解决。

最后的解决方案:拆开

绕了一大圈后,我最终发现,最好的方案其实很简单:完全解耦。把原来一个大而全的软件,拆成两个相互独立的软件。

一个是 AI 配音软件。一个是 AI 对口型软件。

两个软件共用一套账号系统和运行环境,但功能上相互独立。用户要用配音,就打开配音软件。用户要用对口型,就打开对口型软件。

如果用户显存够大,也可以同时打开两个软件。这样做之后,好处非常明显:

界面更清爽了。用户更容易理解了。不同 AI 模型之间不容易打架了。如果出了问题,也更容易排查。后续增加新功能,也不需要强行塞进同一个界面里。

现在回头看,这个问题好像很容易解决。但真正开发的时候,我确实绕了很远的路。

某种程度上,软件开发最难的不是如何实现功能,而是你在真正开发之前,根本不知道软件最后应该长什么样。

只有用户不断遇到问题,你不断解决问题,软件的最终形态才会慢慢浮现出来。

软件不是功能越多越好,而是用户越容易完成任务越好。

Adobe 也没有把 Photoshop、AE 强行融合成一个软件。圈子不同,不必强融。

AI 配音就是 AI 配音。AI 对口型就是 AI 对口型。

它们可以共享账号、共享环境、共享生态,但没必要强行挤在同一个界面里。

这就是我做 EVox 映声这一年,踩过坑之后得到的一个重要教训。如果你也在用vibecoding的方式做产品,希望这篇文章能对你有所帮助。

AI配音软件
AI对口型软件

EVox最新6.6版下载,6G显存可用(实测1050Ti即可使用),速度极快。语音克隆支持几乎所有国家语言、支持情绪标签、支持多音字。 百度网盘链接: https://pan.baidu.com/s/1sAttY6m8EizMBgny06TeUg?pwd=6666 提取码: 6666 夸克网盘链接:https://pan.quark.cn/s/79930a485c7e   提取码:Ezsx

他不是程序员,却用3个月做出了1700人在用的APP
AI不是用来学的,是用来用的

相关学习资料