从逆向到成品,我耗时三天在Windows上复刻了完整的豆包输入法(未公开豆包逆向API)

iamyx33 2026-07-15 00:57 1

先上演示视频(建议调低音量)~


一、梦开始的地方


去年我在社交媒体上偶然接触了豆包输入法,便立刻被它的语音转文字的高准确性所惊讶。相较于传统的讯飞等输入法,它不仅能够识别轻声说话,而且能自动纠正专有名词等学科内容,还包括:



  • 停顿时修正前面的文字

  • 专有名词自动纠错

  • 融入了 AI 模型的拼音联想

  • 等等


于是,它成了我电子书上唯一的输入法(学校禁止带手机,电子书是我暂时合规的电子设备)。在我的学习过程中,它为 AI 输入提供了重要支持。


(学校食堂+研究题目)


在我的学习工作流中,有一项便是通过课堂的文字转写,调用 GPT 5.5 Pro 生成整堂课的完整整理补充与回顾。


但豆包输入法天生不是为长时间记录设计的。要录整堂课,我以前用腾讯会议做语音转文字每天得重复同一套流程:创建会议、检查麦克风、隐藏主界面、下课后下载转写。而且识别准确度远不如豆包输入法。



“你能不能,好好听一次我说的话。”


——木苏里《某某》



我试过接入豆包语音 API。效果当然好,体验也一致,但每天连续几小时的课堂转写,长期费用不是小数。于是我想:



手机上的输入法已经把这件事做得很好了。我能不能理解它完整的工作方式,然后把同样的产品思路搬进自己的学习工具?





二、逆向!


细节决定成败


在开始这个项目之前,我使用这个输入法大概有半年之久,也在逐渐思考:



  • 连续说话和中间停顿时,结果的更新方式有什么不同?

  • 松手后为什么还会显示"识别优化中"?

  • 临时结果、稳定结果和最终结果之间,哪些文字会被覆盖?

  • 加入个人词之后,多久能影响识别?

  • 断网、弱网、切换应用时,状态怎么变化?



“最大的盲点,其实就是站在中心的自己。”


——八月长安《你好,旧时光》



用 AI 辅助逆向不能只下达一个模棱两可的指令,对产品的细致观察,方能保证功能实现的完整性。


站在前人的肩膀上


论坛里已经有佬友做过早期版本的复现,但对比官方客户端,语音转文字的质量明显下降了。不过通过这些宝贵的分析经验,我了解到了输入法的身份认证流程和设备注册方式。


静态分析


通过分析发现:新版的上层代码和原生 SDK 是分离的,包括:



完整的生命周期



连接、发送、接收、麦克风和 UI 全部并发。正确而完整的时序,是保障识别准确度与完整性的基石。



上下文才是准确率的关键


第一次成功出字的时候我很兴奋,但很快发现长句、断句和专有名词跟官方差得远。


后来发现,准确的识别需要以下信息共同作用:


会话内上下文(本次识别时读取):



  • 当前应用和输入框类型;

  • 光标附近允许发送的文本。


会话外个性化资源(类似持久记忆):



  • 最近输入或语音历史;

  • 联系人、常用词等;

  • 标点规范等用户设置的策略;

  • 已经积累的纠正记录。


多次纠正


UI 和实测给了我明确的线索:



  • 说话过程中文字不断被覆盖;

  • 短暂停顿后,前一句又更优化;

  • 松手后出现"识别优化中";

  • 最终文本有时和松手前最后看到的版本不同。



因此,在一次语音输入中,识别结果至少经过了三轮的优化:


云拼音


低延迟的拼音候选,竟然也是云端计算的。本质上是经过原生拼音引擎、网关封装、自定义帧协议,跑在基于 QUIC 的长连接上。


逆向思路大致是:



动态验证



“所有的东西都可以摆在明面上去推理,去验证。”


——稚楚《营业悖论》



反编译告诉我"可能是什么",真机运行才能确认"确实是什么"。



“你真的觉得我赌的是会不会踩空?我赌的是你会不会让我退第三步。”


——大风不是木偶《楚天以南》



动态验证的本质就是这种博弈。向服务器发送一个精心构造的请求,赌的就是它的校验逻辑会不会在拒绝我的同时,暴露出更深层的协议细节。




三、33 输入法:从协议复现到完整产品



“有谁重活一遍,人生路会是全然相同的呢?”


——肉包不吃肉《二哈和他的白猫师尊》



到这里,最初课堂记录的需求已经满足了。但看着 Windows 端"即将上线"的提示挂了很久,我想:为什么不自己做一个?


这里感谢 Codex 赠送的额度重置:)


面对新的环境,所有输入的底层逻辑都需要重新设计。包括焦点附近文本的读取方式,如何在不同应用之间保证适配性,文字的插入应该使用什么 UI 自动化,如何将各类输入来源按照用户体验融合在一起…


目前覆盖的能力


语音、物理键盘和触摸键盘共用同一个联想内核、同一份候选和同一套上下文,它们通过有机组合,减少资源占用。



架构分工



“门槛全部拆除,只留下一马平川的地面。”


——苍梧宾白《黄金台》



本项目的诞生,基于以下开源仓库 ^-^



  • OpenLess:界面基础+输入模块

  • RIME / librime:拼音引擎,键盘UI,断网输入等


程序的线程模型:



一些截图:








四,我的 AI 学习工作流


其中有一个项目是:


课堂连续录音或转写
→ 得到老师的口语文字稿
→ 按课程与日期归档
→ 交给大模型整理
→ 生成结构化讲解、知识点、疑问和复习材料

对生物,化学等高知识密度课堂来说,这一套总结方案更为实用。之前腾讯会议的版本对化学方程式的转写效果不佳,换上新版方案之后,转写准确率有了极大的提升。


AI 逆向还带给我了很多,比如自动获取错题打印机的错题,一键发送给 AI 进行询问。比如自动打开回家的门锁免看广告..受限于篇幅,这里就先暂不展开了




五、对 AI 开发的拙见


从两年前逐句问"下一步该怎么办",到今天agent全天不间断运行,我越来越觉得,"立项开发"正在变成每个人都能掌握的能力。以前需要多人协作的探索,现在一个人梳理清楚需求,就可能借助 AI 做出原型乃至成品。


但 AI 的能力仍然受人的认知约束。



“人们只相信自己愿意相信的。”


——归鸿落雪《闲与仙人扫落花》



想要驱动 AI,首先得有一个任务。这个任务大多从生活中产生,也需要我们的丰富生活经验去精细化。没有考虑真实用户体验的任务,很难打动人心,而只有目标而未能细化的提示词,也可能会被幻觉所牵制。不论模型的强大与否,我们或辉煌宏大的的目标,或细致入微的洞察,始终是指引人工智能发展的一屋明灯。




结语



“没有谁的生活会一直完美,但无论什么时候,都要看着前方,满怀希望就会所向披靡。”


——巫哲《撒野》



高三的这一年弥足珍贵,学习也将占据我的几乎全部时间。为了防止失效以及规避风险,完整的豆包引擎将不会公开发布,但提供输入法框架供大家参考(写的很烂望佬友包涵 ^-^)

33-input-method-public-source-20260715.zip (3.9 MB)

感谢佬友们两年来的相伴,见证了我对 AI 从陌生到熟悉,从娱乐到融入日常学习生活的成长。


愿来年,山花烂漫时,回首已成诗。

最新回复 (19)
  • well 07-15 01:01
    1

    居然还是高中生佬友,

    日后必成大器^-^


    祝佬友学业有成啊,高三了还是要以学业为重,加油吧!

  • 金亦求金 07-15 01:06
    2

    太牛逼了,我高三时不知道还是啥菜鸡呢

  • ytong221104 07-15 01:06
    3

    后生可畏呀,nb 的佬,越来越产出更多优质干货 ^-^

  • e0ir3bgo 07-15 01:08
    4

    高,高中生你好,很高兴以这样的形式认识你 ^-^

  • fablia 07-15 01:14
    5

    用gpt逆向不会报cyber嘛

    话说除了识别中文还能识别别的语言吗

  • iamyx33 楼主 07-15 01:15
    6

    逆向大部分用的是 Deepseek 和 Claude ^-^

    GPT 是用来写 Windows 端的

    支持中英文混合识别^-^

  • csgobad 07-15 03:47
    7

    没用过豆包,但有在用微信语音输入来vibe coding这比微信语音输入好吗?

  • 一般路过不热心群众 07-15 04:47
    8



    太好了终于不用再用粗糙潦草输入法了 ^-^

  • fffxue 07-15 05:04
    9

    你做了啥,这文字是不是ai写的,要记得修改润色。

  • duolabmeng6 07-15 05:20
    10

    这也太厉害了吧,我也要研究一下。

  • lueluelue 07-15 06:11
    11

    太强了太强了,豆包输入法现在已经船大难掉头了,反馈个问题好久才能修,还不如自己做一个

  • 2396 07-15 07:26
    12

    感谢佬友分享!



    我试过接入豆包语音 API。效果当然好,体验也一致,但每天连续几小时的课堂转写,长期费用不是小数。



    对于这一点深有同感啊!对于我喜欢的 B 站、抖音视频。我也会把它们进行语音转写保存。但是接入 API 长期下来是昂贵的费用。


    想问一下佬友能分享一下实现这个语音转写的过程与结果吗?

  • CNDY 07-15 07:32
    13

    我去我正在做类似的项目就刷到了



    感谢佬分享


    看了下 demo 延迟比调用火山流式api大


    以及没有手机版/wx输入法那种实时转录+云端纠正,导致用户输入的时候不自信


    如果这个能解决就更好了 佬能分享下这个地方的引擎吗

  • 宇宙宙长 07-15 07:33
    14

    佬,你也是准高三呀,是山东的嘛(我是山东哒!!!)

  • ccyd 07-15 07:52
    16

    太有实力了佬友,中间插入的句子看起来像双链笔记的联想功能,感谢分享^-^

  • Bin 07-15 07:58
    17

    牛逼,这个真有版权问题吗?没有的话,我来做一个UI,做一个设计版。

  • 南箕子 07-15 08:08
    18

    这是写了一套长时间语音录入的框架,然后调用的api是从豆包输入法反代出来的吗

  • iamyx33 楼主 07-15 08:13
    19

    佬友好,目前我只公开了整个输入法的框架,豆包引擎是暂未公开的。所以还需要自己逆向才能拥有提到的能力哒~

    二次纠正、三次纠正,都是豆包引擎的能力,依照文中的思路逆向就可以实现^-^

  • xinlang 07-15 08:14
    20

    佬站真是人才辈出啊, 重新让我认识了高中生

* 帖子来源Linux.do
返回