做了一个 ESP32-S3 语音输入小模块:按住说话,松手直接把文字输入到电脑

giter 2026-07-05 14:28 1

做了一个 ESP32-S3 语音输入小模块:按住说话,松手直接把文字输入到电脑


最近做了一个小的桌面 DIY 设备,核心用途很简单:用嘉立创的esp32s3模块,我增加了电池供电和电量监测模块,做成一个独立的语音输入按钮。平时放在电脑旁边,按住按键说话,松手后文字会自动出现在电脑当前输入框里。它不是蓝牙键盘,也不是普通录音笔,更像是一个“硬件版语音输入法”。




主要功能



  1. 语音输入


按住设备上的按键开始录音,松手结束。ESP32-S3 把音频传到电脑端的 PC Agent,电脑端完成语音识别、轻度整理、纠错,然后自动粘贴到当前光标位置。日常写帖子、和 AI 对话、写笔记时比较顺手。



  1. 屏幕状态显示


小屏幕会显示当前是否连接电脑、电池电量、录音状态、待命状态等。现在还加了 Codex 剩余额度显示,分成 5 小时窗口和 1 周窗口,显示剩余百分比、进度条和重置时间。



  1. 桌面看板


外接 Type-C 供电并静置时,它可以自动变成一个小看板。竖放显示简版电脑状态,横放可以显示完整看板、天气时间、音乐频谱,或者 Roon 正在播放的歌曲和歌词。







硬件组成


主控是 ESP32-S3,带屏幕、麦克风、扬声器、按键和电池。外壳是 3D 打印的,整体尺寸比较小,可以手持,也可以放在桌面上当一个小信息屏。


这里 ESP32-S3 主要负责三件事:采集音频、维护和电脑的连接、驱动屏幕显示。真正比较重的语音识别和文本整理放在电脑端完成,这样可以避免小板子本身算力不够的问题。


软件结构


整体分两部分:



  • ESP32-S3 固件:负责录音、屏幕、按键、电池、姿态判断、Wi-Fi 通讯。

  • PC Agent:运行在 Windows 电脑上,负责接收音频、调用语音识别、整理文本、粘贴输入、推送看板数据。


语音链路大致是:


按键录音 → ESP32-S3 采集 PCM 音频 → TCP 边录边传到 PC → 语音识别 → 文本整理和纠错 → 粘贴到当前输入框。


几个技术难点



  1. 不能等录完再传


一开始的方案是把整段录音放到 PSRAM 里,松手后再上传。这样能跑,但是长句会明显慢。后来改成 TCP v2 边录边传,ESP 录音的同时,电脑端已经开始收到音频。长句还可以分段提前识别,所以松手后的等待时间短很多。



  1. ESP32-S3 内存比想象中紧张


PSRAM 不是最大问题,真正紧张的是内部 RAM 和 DMA 内存。录音、Wi-Fi、屏幕、LVGL、TCP 发送同时跑,很容易互相影响。所以后来做了很多限制:音频优先、看板低优先级、语音输入时停止看板数据接收和复杂刷新。



  1. 屏幕看板不能影响语音输入


这个项目里最重要的原则是:语音输入永远优先。看板再好看,也不能拖慢录音、识别和上传。因此看板只在外接供电、设备静置、没有录音时运行;只要拿起设备或者按键,就退出看板,回到语音输入模式。



  1. 横竖屏和看板退出


设备会根据姿态自动切换显示模式。这个地方踩过不少坑,尤其是 LVGL 界面重建、横屏频谱退出、屏幕残影等。最后的处理方式是:看板显示失败会自动降级退出,并且进入冷却时间,避免一直卡在显示层。



  1. 语音纠错和热词


语音识别有时会把项目名、技术词识别错。现在做了一个轻量纠错机制:用户手动改过的高置信错误,会进入短词纠错表;专有名词、项目名、技术词则进入热词候选。这样越用越贴合自己的说话习惯。


当前体验


目前日常语音输入已经比较稳定。短句基本是说完很快就能出现文字;长句因为做了边录边传和分段识别,等待时间也能接受。屏幕看板属于附加功能,主要是让它插着电放桌面时不至于闲着。


这个设备对我最大的价值是:把“按键说话 → 文字进入电脑”这件事做成一个独立硬件动作。它不占用键盘,不需要点软件界面,也不用每次找麦克风按钮。对经常写长文本、写代码时和 AI 对话、或者不想一直敲键盘的人来说,挺实用。


后续想法


后面可能继续优化几个方向:



  • 进一步压缩屏幕和看板占用的内部 RAM。

  • 优化 Roon 歌词显示字体,减少缺字方框。

  • 给 PC Agent 做更完整的多设备管理。

  • 把配置流程做得更傻瓜一些,方便换电脑或换 Wi-Fi。


总的来说,这是一个“看起来像小玩具,实际很实用”的项目。外观不复杂,但真正难的是让录音、网络、屏幕、电脑端输入这几件事长期稳定地配合起来。

最新回复 (9)
  • Colox 07-05 14:30
    1

    每次看到这种帖子都觉得好牛,太强了 ^-^

  • conger 07-05 14:40
    2

    佬,太强了,很喜欢这种小玩意,期待更新

    PS:AI润色要截图发出 ^-^

  • xioepp 07-05 14:48
    3

    做成成品开卖啊,找工厂谈谈合作,期待上架

  • server0608 07-05 14:50
    4

    没有其他意思,但是如果是语音输入的话,win+h是不是更方便快捷呢

  • giter 楼主 07-05 14:53
    5

    AI 在这里做了什么?


    这个设备最有意思的地方,不只是“用 AI 把语音转成文字”,而是把 AI 放进了整个输入流程里,让识别、整理、纠错和热词都能互相配合。


    第一层是语音识别。ESP32-S3 只负责采集音频,真正的识别放到 PC 端完成。这样可以使用更强的识别能力,不必让小板子硬扛算力。对普通话长句、技术词、英文缩写、数字日期这些内容,PC 端识别的效果明显更稳。(我用的是本地 Whisper,免费。可选云端api识别,比如Soniox 模型,准确率很高,但是要收费。)


    第二层是文本整理。语音识别出来的原文往往没有自然标点,也可能带有口语停顿。PC Agent 会把识别结果做轻度整理:补标点、调整断句、去掉明显口癖,同时尽量不改写原意。这样最后输入到电脑里的不是一串生硬转写,而是更接近可以直接发送的文字。我用的是DeepSeek,用AI整理,识别出的就是我想表达的语句。


    第三层是纠错库。使用中如果我发现识别错了,用键盘手动改完并发送,系统可以记录“机器识别版本 → 最终修正版本”的差异。高置信的短词错误会进入纠错库,下次再遇到类似错误时可以直接修正。比如某些常被听错的固定词、项目名、口头习惯词,会越用越准。


    第四层是热词库。对于人名、项目名、技术词、软件名这类专有词,系统会把正确词加入热词候选或提高权重。热词不等同于纠错:纠错是“错词替换”,热词是“提前告诉识别系统这些词更重要”。两者分开处理,效果更可控。


    所以这里的 AI 不是一个孤立功能,而是一个闭环:识别负责听懂,整理负责变顺,纠错负责记住错误,热词负责提高下次识别命中率。用得越久,它越了解我的常用表达和项目词汇,这也是这个小设备最有价值的部分。

  • 潇潇 07-05 14:56
    6

    成本多少?要是太贵了还不如去咸鱼买个二手平板写个安卓软件来的实在

  • aureling 07-05 14:59
    7

    ESP32-S3是一个非常实用的‌PTT(Push-To-Talk)语音转文字输入方案‌。

  • giter 楼主 07-05 14:59
    8

    我就是做着玩,纯玩技术。自己有一个想法,然后用 Codex 帮我去实现。我和 Codex 配合着一起分析问题、解决问题,最后这种方式是可以用的。所以就是玩,和 Codex 一起玩玩技术。

  • giter 楼主 07-05 15:01
    9

    如果算成本的话,大概在130到200元(加上电池)。所以这个成本上没有优势,如果是花200块钱,不如直接用键盘上的语音输入算了。但你要想玩玩技术,立创ESP32-S3 的模块是现成的,大概 130 块钱左右(不含电池)。

* 帖子来源Linux.do
返回