从发布到现在,这个软件真的把我折腾得不轻。
尤其是包含本地 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的方式做产品,希望这篇文章能对你有所帮助。



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

夜雨聆风