我花了一个月时间做了一款开源语音输入法 Typeflux,希望让每个人都能用上 Typeless 级别的体验

4 月 27 日
 mylxsw

事情要从一篇产品体验说起。

年初第一次用到 Typeless,被它的效果震惊了。它能把你口语化、零散的表达转换成结构清晰的专业内容,用起来像是给大脑装了个翻译器。但它太贵了——按年订阅每月 12 美金,按月订阅要 30 美金。

当时我就想:能不能做一个自己的版本?

然后花了一个下午让 Codex 给我搭了个基本框架,居然跑起来了。但因为有其它项目在忙,就搁置了。

直到 3 月底,X 上突然涌现了大量关于语音输入法的讨论,闪电说、西瓜说、智谱语音输入法……那个时间节点让我重新把这个项目捡了起来。

其中智谱语音输入法(AutoGLM)的"人设"功能给了我很大启发——能为不同场景配置不同的指令集和写作风格,这个设计被我借鉴到了 Typeflux 的 Persona 系统里。在这里也记一笔致敬,他们是先把这个想法做成成熟产品的人。

最初我以为花一两天就能跑通。结果发现,做一个"能用的原型"和做一个"可以给别人用的产品"之间,差的是一个月的废寝忘食。

到今天,我终于把它发布出来了。


Typeflux 是什么?

一款开源的 macOS 菜单栏语音输入工具。按住快捷键说话,松开就把文字输入到当前任何 App 的光标位置。

但我对它的定位不仅仅是语音输入法。

我希望它成为一款桌面端的语音 Agent——不仅能帮你输入内容,还能改写、润色、基于桌面内容问答,通过语音控制电脑完成工作。Agent 功能目前在 Beta ,还在持续迭代中,但这是我最终想去的方向。


主要功能:


关于 Typeflux Cloud:

同时上线了 Typeflux Cloud ,提供云端语音和大模型服务。早期测试阶段,目前完全免费

后续如果推出会员服务,也会定价非常亲民。不想折腾的朋友直接注册账号,开箱即用。

核心功能会一直开源,始终支持你自己配置任意语音模型和大语言模型,这是项目的根本基石,不会改变。


我现在是全职独立开发者(开发的一些好玩儿的东西我会在 这里 发布,欢迎关注),这个项目也是我目前最重要的方向。欢迎大家试用、提问题、给建议。一起把它做好。

4485 次点击
所在节点    分享创造
48 条回复
AEDaydreamer
4 月 27 日
@mylxsw 目前发现识别完成后貌似不能退出 macos 的 microphone 模式, 会导致其他软件的声音怪怪的.
mylxsw
4 月 27 日
@AEDaydreamer 哈喽,方便帮提个 issue 不?详细说说怎么复现,或者直接加我微信 mylxsw 我们聊聊

https://github.com/mylxsw/typeflux/issues/new
mylxsw
4 月 27 日
@jeremyding 本地 SenseVoice, Whisper ,远程 API 用 阿里和豆包的实时语音转写
mylxsw
4 月 27 日
@hoor 有问题欢迎反馈
teaguexiao
4 月 27 日
本地跑 SenseVoice Small 延迟很低,中文识别率也够用,M 系列芯片基本无压力。想要更准的话豆包实时 ASR 是个好选择,价格比 Whisper API 便宜不少。
trio
4 月 27 日
已赞,已添加 Issue-希望增加词典管理的功能。

🐶 昨天在做 Typeless 增强管理工具,功能就是词典管理以及历史记录的查询增强。在这里顺便安利一下~ https://github.com/penwyp/TypeLens
bigdogbigpig
4 月 27 日
https://github.com/yetone/voice-input-src

claude \
--dangerously-skip-permissions \
--output-format=stream-json \
--verbose \
-p "请实现一个 macOS menu-bar 语音输入法应用( Swift ,macOS 14+),具体要求:

1. 按住 Fn 键录音,松开后将转录文字注入当前聚焦的输入框。优先使用流式转录( Apple Speech Recognition framework )。Fn 键通过 CGEvent tap 全局监听,需抑制 Fn 事件传递以防止触发 emoji 选择器。
2. 默认语言必须为简体中文( zh-CN ),确保开箱即用就能识别中文输入。同时在菜单栏提供语言切换选项(英语、简体中文、繁体中文、日语、韩语)。语言选择存储在 UserDefaults 中。
3. 录音时在屏幕底部居中显示一个特别优雅精致的无边框胶囊状悬浮窗,不要有红绿灯和 titlebar 。使用 NSPanel ( nonactivatingPanel )+ NSVisualEffectView (.hudWindow 材质),高度足够( 56px ,圆角半径 28px ),包含:
- 左侧 5 根竖条波形动画( 44×32px ),必须由实时音频 RMS 电平驱动(不要用写死的假动画),说话声音大波形就大、安静时波形就小。各竖条权重为 [0.5, 0.8, 1.0, 0.75, 0.55] 形成自然的中间高两侧低效果,平滑包络( attack 40%、release 15%),每根竖条添加 ±4% 随机抖动增加有机感。波形要足够大,清晰可见。
- 右侧文字标签(弹性宽度 160-560px )实时显示转录文本,胶囊随文字变多而弹性变宽
- 入场弹簧动画( 0.35s )、文字宽度平滑过渡( 0.25s )、退场缩放动画( 0.22s )
4. 文字注入使用剪贴板 + 模拟 Cmd+V 粘贴方式,注入前需检测当前输入法:如果是 CJK 输入法,先临时切换到 ASCII 输入源( ABC/US 键盘)再粘贴,粘贴完成后恢复原输入法,防止中文输入法拦截 Cmd+V 。注入完成后恢复原剪贴板内容。
5. 接入 LLM 来提升语音识别的准确率,尤其是中英文混杂的情况下。通过 OpenAI 兼容 API (可配置 API Base URL 、API Key 、Model )对转录文本进行 refine 。LLM 的 system prompt 要求非常保守地纠错:只修复明显的语音识别错误(如中文谐音错误、英文技术术语被错误转为中文如「配森」→「 Python 」、「杰森」→「 JSON 」),绝对不要改写、润色或删除任何看起来正确的内容,如果输入看起来正确则必须原样返回。
6. 在菜单栏提供 LLM Refinement 子菜单,包含启用/禁用开关和 Settings 入口。Settings 窗口包含 API Base URL 、API Key 、Model 三个输入框,API Key 输入框要能完全清空,以及 Test 和 Save 按钮。松开 Fn 键后如果 LLM 已启用且已配置,悬浮窗显示 Refining... 状态,等 LLM 返回后再注入最终文本。
7. 应用以 LSUIElement 模式运行(仅菜单栏图标,无 Dock 图标)。使用 Swift Package Manager 构建,提供 Makefile ( build/run/install/clean ),构建产物为签名的 .app bundle 。"
mylxsw
4 月 27 日
@trio 谢谢支持
mylxsw
4 月 27 日
justdoitzZ
4 月 27 日
可惜没有 Windows 版本,支持
gechang
4 月 27 日
我用质谱语音输入也是,有时候识别不准,不知道是不是音响麦克风的问题
bytewalk
4 月 27 日
我之前试用 typeless ,好像标点输入比较麻烦,甚至有的没有,你这款怎么样?
CSGO
4 月 27 日
这个输入法有没可能,出打字版本?就是用输入文字代替语音,个人还是打字场景多。
mylxsw
4 月 27 日
@CSGO 这可能是语音输入法普及之后的下一代产品了🤔
mylxsw
4 月 27 日
@poorcai 是个痛点,我下个版本优化下这个方向
zhch602
4 月 27 日
有点晚了,一个月前这还是个风口
lanceli
4 月 27 日
star 支持下 最近魔改了下豆包 模拟成 typeless
hackpro
4 月 27 日
老哥有没有碰到过 Whisper Large 模型出现幻觉的情况
特别是中间有停顿的时候
ppen522
4 月 27 日
支持 op ,等五一在家试用一下。
FrankAdler
4 月 27 日
autoglm 是免费的,你这个有 autoglm 几成功力

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1208702

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX