5 分钟
独立开发周记27: 泰语学习APP提交应用市场了
每次新产品上线就一堆bug需要处理,这次距离上次官宣内测app后,现在已经过了2-3周了,内测的活动也结束了,目前已经提交应用市场等待审核。
StudyThai
泰语转写引擎
这里做了一轮新的优化,目前分词/IPA/重叠词的转写正确率有所提升。很多人不理解泰文转写的难度,主要还是泰文没标点符号,一个单词可能是左边的一部分或者右边的一部分,或者单词的一部分,所以经常会出错,而且不像中文拼音一样有一套标准。
他没有官方的标准,所以学习者根据自身的发音出现各种不一样的标准,但是外面更多是按照自己英文的读法随意拼写,所以可能同样的元音会出现ii、ee、ie等各种奇怪的转写,但是泰文里有超过一半以上是外来词或者古梵语词或者巴利文等,所以这些词的读法是特殊的,需要记。
转写和音调个人觉得属于学习泰语初期会使用到的东西,但是到了后期就不需要了,因为泰文是表音文字,直接按照字面泰文读就行了。至于后面声调,还是跟单词走,去记规则用户用处不大,还是要记得单词。
AI阅读助手
之前我们有个功能是可以根据我们学习的单词,然后根据提示词或者场景创建文章,并有5道题目。但是文章有时候读起来费力,所以就搭配了一个AI助手在旁边,可以随时把文章内的一些单词做语法解释,翻译等一些功能
TTS语音
目前免费用户换成Azure Neural,对就是微软的。结果我这个体量一看上个月账单居然花了200多,但是他不是有免费的额度吗?
然后研究了半天那个巨难用的azure后台管理,结合ai说明才找到账单来源,原来是语音服务和azure两个服务是不同的服务(但是后面的接口都一样),我生产用的apikey是是azure里的,没有免费计划,语音服务的key有免费计划,这事情让我十分无语,后面再看看账单是否有正确用户。
说真的,那个azure的管理后台完全就是开发做的,完全没考虑用户交互的问题,我花了1个小时才找到账单来自哪个服务,而且我现在都找不到调用量在哪可以看。
然后我把课程相关的短句、例句、单词等都做了预生成,放到CDN上,然后进入课程单元会预下载音频。结果有用户跑来说音频还是很慢,后来看他截图发现他并没使用课程,而是背单词的功能,背单词的功能主要是单词不可预测,因为来源于用户订阅的词库,所以我就没做预生成,加上换了微软的后,音质虽然提升了,但是生成速度比原来慢1-2秒,用户感知还是很明显的。
这块目前还没考虑好咋优化,目前只是做了一层缓存,如果有用户生成过,后续用户学习这个单词就不需要额外生成音频,会复用之前用户的音频。
另外就是有时候用户会报音频错误,因为生成不是100%符合发音,这里又要提到泰语的特殊性,如果单个单词没上下文或者单词过短,音频生成接口可能无法理解导致,一种方案是找到支持发音辅助的tts,这里就依赖我们ipa的正确性,是一个死结。另外一个就是可能要多生成几个才能有正确的哪一个。或者生成句子再截取音频,反正这块目前优化起来没一个简单的方案,都不是好方案。
另外一个就是重构了之前生成的逻辑,用ssml的模式,默认只生成一套语音,然后通过speed参数去控制播放速度从而实现慢速播放,目前已经在AI老师里加入该功能,其他地方还没加入是我觉得例句很短,没必要听慢速。
发音评测功能
之前的发音直接调用gemini的多模态,第一个是慢,第二个是不稳定。所以这次换成azure的评测接口,可以做到一个句子里不同单词哪些说对哪些说错了,效果看起来还不错,但是缺点也很明显,就是贵。所以接下来可能考虑是否能换成一些本地语音小模型,通过把语音转成文本,然后对比文本来进行评分,缺点是可能评测没之前那么好,但是优点很明显就是不要钱,这样的话口语练习的功能也能单独做一个入口做专项练习
反馈系统
之前的反馈都是存数据库,一直没做管理端,所以没太管,现在直接对接了GitHub Issues ,然后让claude去拉取后解决,会更加方便。然后单词和课程里也加入相应的提交交互,这点参考了多邻国里的交互方式。
应用市场提交
因为提交苹果需要有这2个,所以就只能加上了,没啥好说明的。另外做了一个skil,可以根据项目把需要提交应用市场的文案以及aso keyword等都写出来,还能生成功能介绍截图等,对接上asc cli,基本上解决大部分提交问题,不过有些地方还是需要去网页上操作一下。
然后就是把市场端的版本对接IAP,google play和appstore的对接,所以现在app分成直装版和市场版,目前还没打算上国区,因为前期要处理的事情太多了。
createio
最近有时间就打算把这个站点稍微调整一下交互,把一些老旧模型下架,调整了一下提示此输入的方式。并且把订阅下架,只保留积分包的形式,并且调整一下积分的额度,然后多对接了一个接口供应商。
我觉得这些接口供应商应该推出一个服务可用性的接口,太不稳定了。
openowl
这次打算搞一个小工具,一个开发的ide,说是ide可能有点过了,更像一个terminal的拓展。目前我开发大部分转移到ghostty这个terminal上了,warp主要的问题还是太吃内存,而且经常会误调用他的AI功能太浪费时间。
然后之前一直使用的conductor不知道为啥脑抽了,更新了一个版本开始搞todo了,本来我就是用来做worktree管理的,结果现在把这个功能搞的不知道咋用。另外就是cursor现在对于我来说就是一个git和文件查看的功能,git能可视化提交代码,然后能自动生成commit message。
看到这你知道要做个什么东西了,就是一个文件管理+git+terminal,很多人可能会说你要的这些cursor也能用啊。但是实际上用终端的基本上不会去用cursor的terminal,比如分屏功能,他不支持快捷键分屏,然后文件浏览器又会占用视图,要自己手动再切换到其他模式,git不方便管理worktree等等。
所以我就自己做了一个,第一版的方案选择是electron+ghostty-web来实现,但是问题也很大,需要写大量的桥和监听 ,光是ghostty-web的bug就打了至少5个patch,后来觉得这样不是办法,直接用libghostty+swiftui来写一个新的,目前碰到的问题是terminal输入有点小问题,其他的需求基本上实现的差不多了。
openclaw
相比之前只是技术圈比较火的小龙虾,这会全民狂欢了,连我哥都跑来问我这个。但是说一个扎心的事情就是,这玩意稳定性太差了,我的小龙虾都宕机了2周了,他每天一个版本,然后最重要的核心gateway经常升级后就挂了无法启动。所以大部分人安装了之后,剩下的时候都在调整那个啥都干不了的小龙虾。
第二个是后面的模型,大部分连20刀一个的gpt都不愿意订阅,你希望是订阅199一个月的国产大模型?这也是一个问题,如果你不花钱,那么他就真啥都干不了。就算你订阅了,他也没你想的理想,首先他没项目概念,所以你去他工作区看只有一堆散落的脚本文件,导致后续你调整成本越来越高,我之前接入的是gpt,结果1天就把我一周额度用完了。如果你接apikey忘记设上限,那就等着吃大账单吧。
装了之后日常就是你还活着吗,为什么xxx的任务没执行,然后跟你说你自己去目标机器上重启等等。但是这玩意的好处在于相比之前的任务,你可以继续询问补充,接下来会抽点时间重新配置好跑一些东西。