查看原文
其他

独家 | Vision Pro 首款中文输入法,是如何诞生的?

tommy XR航海家
2024-08-23

引言:Vision Pro 首发后不久,一款中文输入法 Dino 上线应用商店,主打实时语音输入体验,一捏一合自动上屏,成为了中国用户必装应用。我们联系了业余完成这款应用的工程师 Ciyou,请他聊了聊产品背后的故事,希望你也能从这篇访谈中感受到创造力和执行力之美。

船长语录

  • 「5000 块法则」:买硬件前给自己定一个做软件的目标,是保持执行力的好方法
  • 「2-2-2 的开发模式」:2 个小时产出 demo,2 天时间收集反馈,2 周时间完善发布
  • 工程师思路,想他人所不能想;真用户思维,做他人所忽略做
  • 弃坑最大的原因往往不是技术困难,而是因为没有收入的正反馈就不做了;不建议一开始就想最终的状态,只去做能见到效果的 MVP


一起聊 Vision Pro 首款中文输入法 加主理人(微信:xrvoyager)进讨论群
—————— · ——————
本文阅读时间约为 27 分钟

1 「5000 块法则」造就的输入法

XR 航海家(X):Dino 这款输入法的缘起是什么?Ciyou(C):我春节的时候在考虑要不要买 Vision Pro,因为不知道有没有足够强的购买理由,就一直在看评测。当时所有的博主都会提到一句话,就是唯一的遗憾是没办法输入中文,很多常用的软件用起来很不方便。然后我想输入不是应该好办吗?做个语音输入吧。然后看到老孙(微博数码博主)一直在发相关的视频,我说你帮我搜一下有没有输入相关的软件,他搜了之后发现确实没有。当时他们都是怎么输入,拿微信给自己的文件传输助手发语音,把语音转的文字复制出来,然后再粘贴到应用里。我说那好吧,过年期间在家比较闲,我来做一个。X:也就是说你在有开发灵感的时候还没有买 Vision Pro,完全是基于模拟器在开发。C:是的,因为我一直给自己定了一个 5000 元的规矩,我买 5000 元以上的数码产品,自己必须在上面开发一个实用的东西。我之前几个小产品也都是这么来的,包括买了 iPad 之后就开发了外接屏幕显示应用 MoniCon,然后和 Apple Watch 互通的 Timer Up所以就想做一个相对简单实用而且有需求的,输入法看起来确实是刚需,就开始研究。我发现系统层面完全不支持中文,也没有中文的语音识别能力,就找了一个开源的中文模型,把它重新编译到 visionOS 上。然后第二天起来花了一上午、大概两个小时的时间,写了一个很简单的版本。当时就一块绿色的面板,也没有别的动效。老孙拿到 demo 发微博说牛逼,这个太好用了,在微博上收集了一点产品反馈,我改了改,很快就把第一个版本就做出来了。X:这个产品为什么起名叫 Dino?C:起名字的时候想要一个不俗套的,不叫输入法,但是又很容易念,音节要少一点。为什么呢?大家开软件每次要回桌面其实很麻烦,所以既然是输入法,最好大家可以用 Siri 把它调出来,那它当然是越短越好读,也不容易被 Siri 听错。所以想了半天叫 Dino 吧,前面有一个重音很好识别,念起来也很容易。X:之后的优化过程是怎么样的?C:做完就立刻下单 Vision Pro,提前完成了买了硬件产品要做软件的目标哈哈哈。设备拿到之后就上实机去调,包括后面有些朋友觉得语音不方便,在家里一直说话,周围听着感觉像傻子一样,然后又去做键盘输入了。也是系统还没中文键盘,然后去找一些第三方的工具,要做很多修改,打字输入的版本现在已经上架了。这故事其实蛮简单的,里面比较好玩的点在于速度,从有想法到做出第一个版本,除了前一天晚上在探索这件事能不能成,确定了之后差不多就花两个小时开发 demo从第一个 demo 到第一个测试版本大概就是两天,我和老孙说找你周围的人试试呗,又收集了一些问题。从第一个测试版到正式发布,在差不多两周之内,很多人就开始去买。X:销售的情况在你的预期内吗?C:其实没有抱太大的期望,毕竟 Vision Pro 中文用户的基数就很小,推出的时候每周能有 100 多份下载,我自己感觉挺开心的,说明渗透率非常到位。至于全球排名,其他人怎么吹的都有,我不确定真实性哈哈哈。X:你觉得这个产品开发里面最难的部分是什么?C:很多 iOS 的应用也集成了语音输入功能,这些元素都是系统 API。但是由于 visionOS 还没支持多语言,苹果目前阶段把这些能力都剪裁掉了,开发者没办法用到。那我需要重新搭建一个好的实时语音识别。中间技术选型,没有任何库是给 visionOS 有编译的,你要做交叉编译,过程中不同平台的实现细节有差异,你就要对开源工具做很多修改,才能让它跑起来。除了上面说的这些,我们在体验上也花了很多心思。如果你去找网上一些免费的语音转文本的工具,它也能在 Vision Pro 上用,但很难用,没有为这个场景做优化。比如像 OpenAI 的 whisper 之类的工具,把它封装一下也能做中文的识别,都是说我录制结束,然后开始转圈圈,转完圈之后识别出来,这个等待的过程就没有人会有耐心的,还不如用微信。再一个就是交互优化,语音输入在大家传统的理解里,它就一个方方正正的面板,说完了之后它开始转录,不会去讲究实时性,转完之后可能还要长再复制。我们对交互很敏感,虽然系统不给我做到零延迟的可能,但是我要体感上反应不会慢太多如果说我要摁一下输入,摁一下停止,摁一下复制,再摁一下粘贴,就有四个步骤,我怎么能够缩短它的步骤?我摁住,说话,松手,其实这就只有一步。然后复制呢?我其实没必要去手动复制,松手应该自动去粘贴。那就是按住说话,松手粘贴,两步就搞定了。这样的话,和我正常用键盘的语音输入也没差太多了。这个粘贴的步骤,很多人做产品不会打磨那么细。
然后其他可能就是 UI 设计,我们用到了推特上 @Lakr 大佬开源的一个动画库,做了一个色彩流动的动态效果,不是简单的纯色,更有灵动的感觉。X:UI 的快速成型,是因为你之前对苹果的这套规范很熟悉?C:是的,包括我们之前做过很多 app,都是 UI 上很细致的。之前积累非常非常多,很多都不上架但是写着玩。包括苹果的 SwiftUI 开始,第一个版本我就在用,它不好用那就等它优化,现在积累了很多中间件,攒一个 UI 出来,基本就是几十秒就可以搞定。一些细节动画会慢慢优化,很快就可以做出来。


2 工程师视角+真用户思维

X:正好聊聊你们之前的一些产品。你们在 iPad 上做了一款外接屏幕显示应用,叫做 MoniCon,当时是什么灵感?

C:去年的 WWDC,苹果给 iPadOS 开放了一个叫 USB Video Class 的能力,就代表它可以接一张采集卡上去,作为一个视频输入。后面很多拿 iPad 接 Switch 打游戏的展示,都是因为这个能力开放才实现的。

所以这个也是讲究快,在 WWDC 开发者版本到正式版三个月之间,做出一个成熟的软件。只是 API 封装一下只能勉强用,很多细节没有处理到,可能会卡,UI 又很丑陋,也不稳定,那到时候再优化就来不及。当时还是业余时间在做,公司正好在搬迁,大家都挺忙的,然后住得又很远,所以凑时间做很不容易。我的伙伴 Kevin 经常周末到我这里来,一写一下午。

X:你是怎么优化的呢?我注意到你们的 UI 也非常美观,你是怎么做到的?C:在做这个之前,我的所有 UI 设计都是平面、扁平化的,这次是第一次尝试拟物风。其实没有人教,而且毕竟自己是工程师,没有像专业的设计师这样学过。我的方法就是照着已经有的产品研究。你照一个拟物按钮或者一个真实按钮,你就盯着看,然后看着看着就发现它的规律,这有一条渐变,那有一个阴影,这两个应该是不同的,那边有个反向的渐变……最终你画出一个成型的。有了这个之后,我会快速把这一套模式复制到新的按钮上。我们 MoniCon 这里面做到了像老机械的那种质感。之后我们就在想它和别人的产品有什么差异呢?我们发现很多摄影爱好者,他们喜欢拿 iPad 这么高素质的屏幕当监视器来看图,所以我们加了一个相机的皮肤,有很多直方图、网格线之类的。X:还有什么功能是你们特别注意到的?C:再包括 MetalFX 里面有个框架包含超分辨率的支持,但是他在发布会上没有细讲,一笔带过了。我发现这个用来做超分辨率很好用,就是把视频采集的图像超到 4K,虽然不是真 4K,但是会好一点。MetalFX 里面还有其他好用的应用,当时接 Switch 上去玩王国之泪,一进山洞里画面灰蒙蒙一片,然后我把那个除雾滤镜一拉,直接就清晰透亮了,就做了这个功能。后来 9 月份的硬件发布会,苹果才大张旗鼓宣传,有些用户就问我们能不能用最新的 MetalFX?我说我们早就在用啦。X:这款产品的数据表现如何?C:我们这个能成,我感觉也跟它是第一个上架的有关系。在正式版推送前几天,你搜 HDMI 只能搜到我们一个,所以很快有一些基础用户;大家再去口口相传,就很容易扩散开。最后的用户量应该有 5-6 万,因为它只能在 iPad 的应用市场上搜到,在 iPhone 应用市场上搜不到,所以说少了一些流量。我们上了几天之后,有一个国外的工作室,他们之前出了一个 Halide 的专业相机,上过很多次苹果的首页,他们很多是搞影像的工程师,他们也搞了一个很类似的东西叫 Orion,他们也提供色彩滤镜和 4K 超分,但这个功能就要收费。他们也是搞拟物风,所以我们就完全撞车,但是从流畅度、稳定性方面都是我们要高,他们后面也没再维护了。他们最后的用户量应该至少是我们 10 倍,因为起点比我们高,我们国内外也没做任何运营。但这个给我们自信说我们可以做别的东西,包括今天的 Dino。X:我们发现你们总是有开发一些在技术上比较领先的产品,这是怎么做到的?C:我们作为工程师基础的开发者,自己做东西有一点不一样,就是会对技术细节非常敏感。所以很多产品经理,可能他要看到市面上有工程师实现了粗糙的东西,才会想怎么包装成一个完善的、美观的产品。我们是直接看到有这个能力了,立刻就可以想到怎么做成一个产品。我们看 WWDC 像认真看春晚一样,看上架的每一节课,他们一笔带过的东西其他团队可能根本没注意,我们就可以领先别人半年的时间做好。


3 Stay hungry, stay foolish

X:感觉你的思维和行动特别精准,这是在大学培养的能力吗?C:我大学的时候,苹果 WWDC 每年除了面向公众开发者,还有专门面向学生的比赛,不限命题的 App 开发大赛,你可以写一个很简单的提交上去。我在实习期间正好看见,我说要不去试试吧?但是也很忙,一直拖到最后一个周末,然后又碰上重感冒,所以就花了一天时间写了一个遗传算法可视化的演示 demo。第一章是随机生成一堆圆形生命体,地上会散落一些食物,它们的体内有一个 DNA,这个编码一开始随机生成的,编码驱动他们去移动,他们跑着跑着有的会有一些偶然间撞到的食物,有的什么食物也没有吃到,然后没吃到食物的就淘汰了,那些撞到食物的编码重新排列组合,就相当于模拟遗传的过程。这样一轮轮之后,会发现它们不再乱跑了,体内筛选下来的基因就会寻物了,这就是遗传算法第二章是加入一个弱肉,如果体积小,你就会被一些大的吃掉。慢慢大家会演化出一套就是生态,有的是可以进化的、移动非常快、体积非常小;有一些体积很大、移动慢,但什么都能吃。这一章就给大家讲地球的弱肉强食、物竞天择这一套。再下一章节是一个沙盘,可以调整比如说食物的丰富程度、生物的质量;在食物更丰富的世界里,大家普遍都是慢吞吞移动;但食物少了之后,有的会跑得很快。整个下来,你就可以对遗传算法和进化论有非常具象的认知。我觉得苹果应该非常喜欢教育方向的产品,然后我们就拿了那个奖,那年选 350 个人,然后中国地区给了 20 多个人一般来说你拿奖之后,当年的 WWDC 你会被邀请到现场。但是那一年是 2020 年初,非常可惜没去成(笑)。X:听起来很有意思,不过感觉操作也非常极限了,到最后一天还能端出来这么高完成度的产品。C:我们不太是专门为了比赛写一个东西,因为我们大学期间有各种稀奇古怪的想法,可能都会做一点雏形留下来,封存了。有时候突然会冒出一些灵感正好补上原来的东西,你其实认真想过怎么实现,所以完善起来相当快最后那个决赛也是,因为当时在实习,很老实地在想要不要请假。听说进了决赛都有至少 1 万块钱的奖金,我们就请了一周假,关在上海合租的公寓,花了五天时间把一个课程表相关的应用从头重新写一遍,最后得了二等奖,奖品是三台 iPad Pro。X:所以你一直保持着开发产品给自己用的习惯,包括这个课程表也是自己会去用。C:是的。之后苹果有一个 workshop 的环节给大家展示,然后正好在这个活动上认识苹果那边的一位设计相关的老师,就加上了联系方式。后来 Vision Pro 的实验室也是他邀请我们过去的。X:你对做产品的兴趣是天生的吗,除了写码在别的领域有这样玩吗?C:我是比较喜欢捣鼓东西,初高中的时候我在家里搞了一个化学实验室,然后叫一些同学来家里一起玩。我们把能合法买到的所有化学元素,自己做了亚克力的介绍,搞了一个元素展,还助推了我们山西其他五所重点学校的化学社团一起做巡展。我有一个很好的朋友,当时我们刚上高中,其实他也没有找到自己人生的方向,我们几个喜欢化学的同学就一起拉他做各种化学实验,他发现自己是真的热爱化学,后来他在家里搞了实验室,参加竞赛,后面去研究计算化学,现在已经发过好几篇 Nature 了。我身边有蛮多人因为喜欢搞实验,最后都去学理工搞学术了,不一定只搞化学。X: 其实化学实验还是很危险的,特别是「手残」的朋友请不要模仿!C:我当时在家做了一个 CPPO 荧光反应实验,这个反应的副产物会生成一些剧毒物质,需要很小心地处理,我全副武装做的这个实验,但是最后生成出来的荧光产物非常漂亮。这张十年前的照片一直留作纪念,我觉得这是人生当中只此一次的经历,现在想让我复刻都不一定行(笑)。X:你刚刚提到不只是搞化学,那物理上有什么有意思的吗?C:我们还手搓过硬件 CPU,一个图灵完备的 8 位 CPU,我们只用来驱动一个小的数码管,它是有数字逻辑的,可以做更多事情。后面基于这个思路,我们复刻了一个 Apple II 的电路板,就是乔布斯他们搞的第二款个人电脑产品,也是可以接键盘输入的。做了一个简单的终端,写的第一个小程序也是致敬乔布斯,按下回车他会打一个「stay hungry, stay foolish」


4 做一个「发光」的极客

X:这样算一算,你们总共码过的产品数量有多少?C:没有发布的全部算上,有 10 个左右。写东西的过程本身是很有成就感的事,发布不发布不太重要前阵子我买了一个新款的理光 GR3,但是我觉得理光自己那个同步 App 特别不好用,所以我自己写了一个工具。两个设备主要是基于网络协议去连接,所以我去抓包看数据,然后复刻了它的方法。我也要感谢我的伙伴 Kevin,他在逆向上面有很多心得,我们一直在互相学习进步。X:实在是太厉害了。不过大多数人没有你从小当极客的基础的,他们想要像你一样做开发的话,你有没有一些大家都可以借鉴参考的建议?C:我觉得需要有很强的执行力。做 side project 是很容易弃坑的,但是往往不是因为开发难度,而是因为看不到收入就不想做了。我们不建议想最终的状态,有一些我认识的朋友,开发的时候在想用户数据怎么保护、用户系统怎么做之类的,想得太复杂最后就做不下来。先做 MVP,做一个 demo 验证模式,有了这个东西真好用、能看到效果,再往上面添砖加瓦,就没那么容易弃坑。我们非常信奉 2-2-2 的开发模式,就是 2 个小时出一个很好玩的 demo,然后花 2 天的时间去和周围的朋友分享,收集一些建议,如果它能够商业化可能着重去看看这个方面,如果不能商业化就做着玩也不亏。不超过 2 周的时间把产品完善结束。如果有更长期的价值,我们就再去维护;如果没有,我们就去找下一个 2-2-2 的循环。我怎么让自己确保动力的?就是自己有强迫症,大家都知道我买了新设备一定会基于它开发一个东西,大家聊天的时候就会说哇你新买了一个东西,你如果后面没做,就会被调侃乱花钱。X:在 Dino 之后,你对自己的新应用有什么展望?C:我觉得自己一直有一个理想,是通过自己的努力改变更多的人。除了刚才提到的学化学的同学,我还有一个印象深刻的同学。上学的时候我们一起搞信息学竞赛,有一个在我看来很有天分的同学,一度因为怕影响文化课学习想放弃参赛。我觉得以他的能力退出太可惜了,就硬拉着他说比下去。后来他真的留下来参加比赛,「一发不可收拾」,最终进了省队拿了银牌,保送到浙大,后面在这个领域一直很牛。我觉得每个人都有自己独特的潜力,但受限于环境可能没有及时意识到,当我发现我的一些行动让对的人走到了适合他的道路上的时候,我会非常高兴。也正因为我过去的经历,所以我对激发别人的灵感和创造力很感兴趣,就像苹果比赛的贺词里说的那样我还会继续在 visionOS 上做开发,下一个项目有可能会利用好 AR 的相关能力,让玩家以一个完全不同的视角看到自己生活中的万物,重新理解世界。
—————— · ——————

继续滑动看下一个
XR航海家
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存