本文范围:只讲清系统输入法里的语音输入怎样变成可编辑文字,从 0 到 1 做出第一个可用版本的路径
先说结论
我在豆包输入法或微信输入法里说话,不是在和大模型聊天。系统只需要完成一件事:
把我实际说的话,尽量准确、快速、可修改地放进当前输入框。
它会边收音边识别,先显示可能变化的临时文字;我说完后,再确定最终文字、补标点并写入输入框。最后仍由我修改和发送。
所以,语音输入法的交付物是文字,不是回答。真正重要的不是模型多大,而是我最终要改多少字、总共花多少时间。
打电话给豆包实时聊天的链路,单独见 为什么我能像打电话一样和豆包实时聊天?。
就跟着一条微信往下拆
我刚从超市出来,右手提着两袋菜,左手拿着手机。我能用左手拇指打开微信、进入家人的聊天,再点一下输入法里的语音键;但要靠一只手连续打完一整句话,就很麻烦。
所以我直接说:
我已经买到鸡蛋、牛奶和苹果了,大概二十分钟到家,你先把米饭煮上。成功不是“识别出了大部分字”,而是我只需简单检查就能发送,总时间明显少于单手打字。
这个场景还有一个前提:启动语音必须足够省事。如果我要离开微信、打开另一个 App,再把结果复制回来,识别再准也没有意义。
豆包输入法和微信输入法 都支持 “按住 Fn 键直接说” 降低启动成本。电脑快捷键不能直接照搬到手机,但产品原则相同:
从当前输入框到开始说话,最好只有一个清楚、随时可取消的动作。
一句话怎样进入微信输入框
输入法一边听、一边显示可能变化的文字;等我说完再确定最终结果并交给输入框。系统不替我回答,也不应在我没确认时替我发送。
这条链路有四种责任:收音负责取得清楚声音,识别负责判断我说了哪些字,规整负责让文字更易读,输入法负责写到正确光标位置。
ASR(Automatic Speech Recognition,自动语音识别):把人说的话变成文字。
语音识别 API 返回正确文字,只说明中间一段成功,不代表输入法产品已经完成。
真正决定体验的四件事
临时文字要快,最终文字要稳
系统为了尽快反馈,会先给出临时结果。后面的声音到来后,它可能修正前面的字、断句和标点。
实现时不能把每次临时结果都追加进输入框,否则同一句会重复出现。应该不断替换当前临时片段,收到最终结果后再正式提交。
识别和整理不能混在一起
- 识别回答:“我刚才说了什么?”
- 整理回答:“这句话怎样写得更简练?”
自动标点、数字格式和明确的重复片段可以轻量处理;重新表达则可能改变语气和原意。
飞书 Wiki 的一篇实战记录提到:用户说的是一个问题,模型“整理”后却直接给出了答案。它只是社区失败案例,但风险很典型。
例如我说:
你看一下家里还有没有米?结果不能被改成:
家里还有米。第一个版本应该保留原始识别文字,把“整理一下”设计成我主动触发、能够撤销的第二个动作。
专有词、在线和离线各有边界
人名、地点和品牌容易因为发音相近而识别错。系统可以使用本句上下文和少量个人热词改善,但热词太多也会造成过度纠正。
热词:提前告诉识别系统哪些专有词最近更可能出现。
在线识别可以使用更大的云端模型,但依赖网络,还要明确音频和文字怎样上传、保存与删除。离线识别在无网时可用,隐私边界更清楚,却受到手机性能、耗电和模型大小限制。
豆包输入法公开说明支持无网弱网使用,但没有公开每种场景怎样在本地和云端之间路由。能确认产品行为,不代表能推断内部实现。
最后还要写进正确输入框
输入法必须正确处理光标、选区、临时片段和目标 App 的输入连接。识别对了但写错位置,用户看到的仍然是失败。
Android 官方提供
InputMethodService,可以管理输入法界面和当前输入框连接。 iOS 可以创建自定义键盘,但 Apple 官方文档明确说明:键盘扩展不能直接访问麦克风和扬声器,即使打开“允许完全访问”也不行。因此,iOS 语音输入还需要配套 App、系统入口或其它中转设计。
为什么它通常不是 Agent
语音输入法可以使用大模型,但它做的仍是边界清楚的声音转文字:
- 不需要
自主决定下一步。 - 不应该
替我调用工具。 - 不应该
替我发送消息。
只有识别之后,系统又根据我的目标选择工具、执行任务并观察结果,才进入 Agent 范围。
如果我从 0 到 1 构建
先证明语音输入加修改确实比单手打字省时间,再承担系统键盘的权限、兼容和审核成本。
第一版只做一个普通页面:
- 一个按住说话按钮。
- 一块临时文字区域。
- 一块最终可编辑区域。
- 一个恢复原始识别文字的入口。
- 一条记录最终改了哪些字的日志。
先用成熟在线 ASR 做整句识别,再加入流式结果。选择服务时,用同一批真实录音比较能否流式返回、热词有没有改善、每分钟成本是否可接受,最终以官方接口和自己的测试为准。
测试内容直接来自日常输入:家人消息、到家时间、人名、地点、中英混说和路边噪声。每次保存原始音频、原始识别和最终修改,才知道系统到底改善了什么。
价值成立后,再加入可撤销的轻量规整和个人词,最后进入系统输入法。移动端优先验证 Android;iOS 再解决键盘扩展不能直接录音的限制。
怎样判断第一个版本成立
我会重点看:
- 开口后多久看到临时文字,说完后多久得到最终文字。
- 最终替换、删除或增加了多少字。
- 常用人名、地点和品牌能否稳定识别。
- 文字整理有没有改变原意。
- 弱网失败后,已确认内容会不会全部丢失。
- 语音输入加修改是否稳定快于单手打字。
- 下一次只能单手操作时,我是否还会主动使用。
最重要的产品指标不是脱离场景的准确率,而是:
我能不能少打字、少修改,并且放心把最后的发送权留在自己手里。
DANGER
个人体验:真正的能力差别在于,中英文混杂时,也能正常输出 英文 ,微信输入法 明显不如 豆包输入法
考考你
语音输入法的核心交付物是什么?
是一段尽量忠实、快速、可修改的文字,不是聊天回答,也不是自动执行结果。
为什么文字会反复变化?
系统先返回临时结果;后面的声音和上下文到来后,还会修正前面的字、断句和标点。
识别和整理为什么要分开?
识别回答“我说了什么”,整理回答“怎样写得更清楚”。整理可能改变语气和原意,应该由我主动触发并且可以撤销。
为什么识别正确,输入法仍可能失败?
结果还要正确处理临时片段、光标、选区和目标 App 的输入连接。识别对了但写错位置,仍然是失败。
从 0 到 1 为什么先做普通页面?
普通页面能最快验证识别、延迟和修改成本,不会一开始就被系统权限和兼容问题淹没。
为什么系统输入法优先做 Android?
Android 提供标准的 InputMethodService;iOS 自定义键盘扩展不能直接访问麦克风和扬声器,需要额外中转。
语音输入法用了大模型,为什么通常仍不是 Agent?
它完成的是声音转文字,不自主选择工具,也不替我发送消息,最终修改和发送权仍在我。
参考
- 以前的公开文章:通过语音和大模型对话
- 豆包输入法:App Store 产品说明,版本 1.4.13,产品说明与版本信息核对于 2026-07-29。
- 微信输入法:Google Play 产品说明,更新于 2026-06-03,产品说明核对于 2026-07-29。
- 火山引擎:大模型语音识别,核对于 2026-07-29。
- 火山引擎:热词使用,核对于 2026-07-29。
- Apple:Creating a custom keyboard 与 Configuring open access for a custom keyboard,核对于 2026-07-29。
- Android Developers:Create an input method 与 InputMethodService,核对于 2026-07-29。