
我做了一个“划词就能听”的桌面小工具有时候看长文章眼睛真的会累。我最开始只是想要一个很简单的东西在浏览器、Word、PDF 里选中一段文字旁边冒出一个按钮点一下它就开始读。不用复制不用切窗口不用把文字粘到另一个软件里。就这么一个小需求最后长成了这个项目MiMo TTS Desktop Reader。它能做什么简单说它就是一个 Windows 桌面朗读助手。你可以在任何软件里划选文字然后点“朗读选中”点“从此往下读”让它从当前位置一直读到文末选择音色、方言、情绪和语速暂停、继续、停止右键桌面悬浮球让它立刻闭嘴它更像一个“小耳朵按钮”平时不打扰你需要的时候就在鼠标旁边出现。为什么不是普通 TTS 输入框普通 TTS demo 一般是这样的打开网页或程序复制文字切到 TTS 工具粘贴点击生成这当然能用但很割裂。我想要的是另一种感觉我在哪里读就在哪里听。所以这个工具的重点不是“做一个更大的窗口”而是尽量少出现。你划词它出现你点一下它朗读你不用了它自己消失。背后其实就几块项目拆得比较直白hook_service.py看你有没有拖拽选中文字float_icon.py显示那个小小的朗读按钮main.py负责调度谁该干活、谁该停下tts_engine.py去请求 MiMo TTSaudio_player.py把生成好的音频排队播放clipboard_reader.py安全地读取选区不弄乱剪贴板这套拆法的好处是新人看起来不会太绕。你想改按钮就看 UI想换 TTS 服务就看tts_engine.py想研究暂停和队列就看main.py和audio_player.py。长文为什么要切片如果把一整篇长文章一次性丢给 TTS体验通常不太好。你可能要等很久才听到第一句话。万一中途失败还得整篇重来。所以这里用了一个很朴素的办法按标点切成小段一段一段生成。第一段好了就先播后面的继续在后台排队。这样听起来就像“马上开口”而不是盯着进度条发呆。剪贴板这个坑真的要管做全局划词工具很容易踩到一个坑怎么拿到用户选中的文字最兼容的办法是模拟CtrlC再从剪贴板读文本。但这会带来一个坏体验你刚复制的东西被工具偷偷覆盖了。等你再CtrlV发现粘出来的是刚才朗读的文字。这个就很烦。所以我做了一个“借一下用完还回去”的流程大概是这样先把用户当前剪贴板保存起来临时触发一次复制拿到选中的文字立刻把原来的剪贴板恢复回去而且普通划词时不会复制。只有你真的点“朗读”时才会短暂读取选区。这就是为了不打扰你的正常CtrlC / CtrlV。API key 不要写进代码这个也很重要。一开始为了跑通 demo把 API key 写进代码里确实最快。但一旦要发 GitHub就很危险。所以现在推荐这样用setx MIMO_API_KEY你的 API key程序会优先从环境变量里读 key。如果你只是自己玩也可以复制config.example.json成config.json把 key 写进去。但要分享项目时千万别把自己的config.json一起发出去。新人可以怎么跑起来克隆项目后cd mimo-tts-desktop-reader setx MIMO_API_KEY你的 API key.\run.ps1想打包成 exe.\build.ps1打包结果在dist/MiMoReader.exe后面还能怎么玩这个项目很适合继续加小功能。比如加一个音量滑块加全局快捷键加朗读历史给悬浮球做拖拽吸边换成别的 TTS 服务做一个更正式的安装包我觉得它适合新人练手的地方在于它不是纯算法也不是纯 UI而是一个真的能每天用的小工具。你改一个小功能就会碰到桌面应用里很真实的东西事件、线程、配置、状态、用户体验。最后这个项目的核心其实很简单让 TTS 不再是一个“复制粘贴后才能用”的工具而是变成你阅读时随手可以叫出来的小助手。选中文字点一下开始听。就这样。Github 开源下载地址https://github.com/STEPHENXING/mimo-tts-desktop-reader.git