336. ProductX:豆包和微信语音输入法怎样把我说的话变成可编辑文字?

2026.07.28

·fdeproductx

本文范围:只讲清系统输入法里的语音输入怎样变成可编辑文字,从 0 到 1 做出第一个可用版本的路径

先说结论

我在豆包输入法或微信输入法里说话,不是在和大模型聊天。系统只需要完成一件事:

把我实际说的话,尽量准确、快速、可修改地放进当前输入框。

它会边收音边识别,先显示可能变化的临时文字;我说完后,再确定最终文字、补标点并写入输入框。最后仍由我修改和发送。

所以,语音输入法的交付物是文字,不是回答。真正重要的不是模型多大,而是我最终要改多少字、总共花多少时间

打电话给豆包实时聊天的链路,单独见 为什么我能像打电话一样和豆包实时聊天?

就跟着一条微信往下拆

我刚从超市出来,右手提着两袋菜,左手拿着手机。我能用左手拇指打开微信、进入家人的聊天,再点一下输入法里的语音键;但要靠一只手连续打完一整句话,就很麻烦。

所以我直接说:

bash
我已经买到鸡蛋、牛奶和苹果了,大概二十分钟到家,你先把米饭煮上。

成功不是“识别出了大部分字”,而是我只需简单检查就能发送,总时间明显少于单手打字。

这个场景还有一个前提:启动语音必须足够省事。如果我要离开微信、打开另一个 App,再把结果复制回来,识别再准也没有意义。

豆包输入法和微信输入法 都支持 “按住 Fn 键直接说” 降低启动成本。电脑快捷键不能直接照搬到手机,但产品原则相同:

从当前输入框到开始说话,最好只有一个清楚、随时可取消的动作。

一句话怎样进入微信输入框

336. ProductX:豆包和微信语音输入法怎样把我说的话变成可编辑文字? 图表 1

输入法一边听、一边显示可能变化的文字;等我说完再确定最终结果并交给输入框。系统不替我回答,也不应在我没确认时替我发送。

这条链路有四种责任:收音负责取得清楚声音,识别负责判断我说了哪些字,规整负责让文字更易读,输入法负责写到正确光标位置。

ASR(Automatic Speech Recognition,自动语音识别):把人说的话变成文字。

语音识别 API 返回正确文字,只说明中间一段成功,不代表输入法产品已经完成

真正决定体验的四件事

临时文字要快,最终文字要稳

系统为了尽快反馈,会先给出临时结果。后面的声音到来后,它可能修正前面的字、断句和标点。

实现时不能把每次临时结果都追加进输入框,否则同一句会重复出现。应该不断替换当前临时片段,收到最终结果后再正式提交。

识别和整理不能混在一起

  • 识别回答:“我刚才说了什么?”
  • 整理回答:“这句话怎样写得更简练?”

自动标点、数字格式和明确的重复片段可以轻量处理;重新表达则可能改变语气和原意。

飞书 Wiki 的一篇实战记录提到:用户说的是一个问题,模型“整理”后却直接给出了答案。它只是社区失败案例,但风险很典型。

例如我说:

bash
你看一下家里还有没有米?

结果不能被改成:

bash
家里还有米。

第一个版本应该保留原始识别文字,把“整理一下”设计成我主动触发、能够撤销的第二个动作。

专有词、在线和离线各有边界

人名、地点和品牌容易因为发音相近而识别错。系统可以使用本句上下文和少量个人热词改善,但热词太多也会造成过度纠正。

热词:提前告诉识别系统哪些专有词最近更可能出现。

在线识别可以使用更大的云端模型,但依赖网络,还要明确音频和文字怎样上传、保存与删除。离线识别在无网时可用,隐私边界更清楚,却受到手机性能、耗电和模型大小限制。

豆包输入法公开说明支持无网弱网使用,但没有公开每种场景怎样在本地和云端之间路由。能确认产品行为,不代表能推断内部实现。

最后还要写进正确输入框

输入法必须正确处理光标、选区、临时片段和目标 App 的输入连接。识别对了但写错位置,用户看到的仍然是失败。

Android 官方提供 InputMethodService,可以管理输入法界面和当前输入框连接。 iOS 可以创建自定义键盘,但 Apple 官方文档明确说明:键盘扩展不能直接访问麦克风和扬声器,即使打开“允许完全访问”也不行。因此,iOS 语音输入还需要配套 App、系统入口或其它中转设计。

为什么它通常不是 Agent

语音输入法可以使用大模型,但它做的仍是边界清楚的声音转文字:

  • 不需要自主决定下一步。
  • 不应该替我调用工具。
  • 不应该替我发送消息。

只有识别之后,系统又根据我的目标选择工具、执行任务并观察结果,才进入 Agent 范围。

如果我从 0 到 1 构建

336. ProductX:豆包和微信语音输入法怎样把我说的话变成可编辑文字? 图表 2

先证明语音输入加修改确实比单手打字省时间,再承担系统键盘的权限、兼容和审核成本。

第一版只做一个普通页面:

  • 一个按住说话按钮。
  • 一块临时文字区域。
  • 一块最终可编辑区域。
  • 一个恢复原始识别文字的入口。
  • 一条记录最终改了哪些字的日志。

先用成熟在线 ASR 做整句识别,再加入流式结果。选择服务时,用同一批真实录音比较能否流式返回、热词有没有改善、每分钟成本是否可接受,最终以官方接口和自己的测试为准。

测试内容直接来自日常输入:家人消息、到家时间、人名、地点、中英混说和路边噪声。每次保存原始音频、原始识别和最终修改,才知道系统到底改善了什么。

价值成立后,再加入可撤销的轻量规整和个人词,最后进入系统输入法。移动端优先验证 Android;iOS 再解决键盘扩展不能直接录音的限制。

怎样判断第一个版本成立

我会重点看:

  • 开口后多久看到临时文字,说完后多久得到最终文字。
  • 最终替换、删除或增加了多少字。
  • 常用人名、地点和品牌能否稳定识别。
  • 文字整理有没有改变原意。
  • 弱网失败后,已确认内容会不会全部丢失。
  • 语音输入加修改是否稳定快于单手打字。
  • 下一次只能单手操作时,我是否还会主动使用。

最重要的产品指标不是脱离场景的准确率,而是:

我能不能少打字、少修改,并且放心把最后的发送权留在自己手里。

DANGER

个人体验:真正的能力差别在于,中英文混杂时,也能正常输出 英文 ,微信输入法 明显不如 豆包输入法

考考你

语音输入法的核心交付物是什么?

是一段尽量忠实、快速、可修改的文字,不是聊天回答,也不是自动执行结果。

为什么文字会反复变化?

系统先返回临时结果;后面的声音和上下文到来后,还会修正前面的字、断句和标点。

识别和整理为什么要分开?

识别回答“我说了什么”,整理回答“怎样写得更清楚”。整理可能改变语气和原意,应该由我主动触发并且可以撤销。

为什么识别正确,输入法仍可能失败?

结果还要正确处理临时片段、光标、选区和目标 App 的输入连接。识别对了但写错位置,仍然是失败。

从 0 到 1 为什么先做普通页面?

普通页面能最快验证识别、延迟和修改成本,不会一开始就被系统权限和兼容问题淹没。

为什么系统输入法优先做 Android?

Android 提供标准的 InputMethodService;iOS 自定义键盘扩展不能直接访问麦克风和扬声器,需要额外中转。

语音输入法用了大模型,为什么通常仍不是 Agent?

它完成的是声音转文字,不自主选择工具,也不替我发送消息,最终修改和发送权仍在我。

参考