SpeakMore
说话,别打字。
开源、免费的语音输入工具,支持 macOS 与 Windows。
兼容主流大模型,亦可完全在本机运行。
speakmore.zephyrxiang.com
简体中文 · English
- 按下快捷键开始口述,再次按下结束,文字写入当前光标位置。
- 自动去除语气词、重复与改口内容(原生识别、转写 + 润色方式)。
- 自动补全标点,较长内容分段、分条。
五项自由
- 🧩 模型自由:29 个模型,并支持 OpenAI 兼容服务。
- 🔀 方式自由:三种识别方式并列可选,推荐组合一键启用。
- 💻 硬件自由:Mac 与 Windows 通用,本机模型经 Metal、Vulkan 或 CPU 运行。
- 🔒 隐私自由:数据隐私方式不上传数据,无需密钥与账号。
- 💸 费用自由:软件免费;按每日 100 次计,推荐组合月成本 ¥0–35。
🚀 安装
macOS
- 系统要求:macOS 12 及以上。
- 打开 dmg,将 SpeakMore 拖入"应用程序"。
- 安装包已使用 Developer ID 签名,并通过 Apple 公证。
- 系统要求:Windows 10(1809 及以上)或 Windows 11,64 位。
- 运行安装程序;如出现"Windows 已保护你的电脑",依次点击"更多信息""仍要运行"。
- 仅为当前账户安装,无需管理员权限。
- 安装过程无需联网。
speakmore 命令行工具)
# macOS
curl -fsSL https://dl.zephyrxiang.com/speakmore/install.sh | bash
# Windows(PowerShell)
irm https://dl.zephyrxiang.com/speakmore/install.ps1 | iex
- 下载链接末尾附加
.sha256,可获取对应文件的校验值。
- 程序、本机模型、设置、历史记录与录音统一保存在一个文件夹中,默认为
~/.speakmore(Windows 为%USERPROFILE%\.speakmore)。 - 首次安装时可另选位置,例如其他磁盘:Mac App 首次打开时询问,Windows 安装程序在安装前询问,终端安装在命令行中询问。SpeakMore 保存在所选文件夹中的
.speakmore。 - 之后可在「设置 › 通用 › 存储位置」更改,或执行
speakmore move <文件夹>;全部文件整体迁移,完成后自动重新打开。 - 所选磁盘需为 APFS、Mac OS 扩展或 NTFS 格式;exFAT、FAT32 格式的 U 盘与移动硬盘不支持。
安装包与终端安装的区别
- 安装包为独立应用:macOS 权限授予 SpeakMore 本身,支持开机自启。
- 终端安装在 macOS 上由终端启动,权限授予所用终端。
- Windows 下两种方式的安装内容相同,均位于
%USERPROFILE%\.speakmore,并添加开始菜单项。 - 两种方式共用设置、历史记录与
speakmore命令,同一时间运行其一即可。
🎙️ 使用
- 将光标置于任意输入框,按下右 Option(Windows 为右 Alt)。
- 开始口述,屏幕底部的悬浮条随音量变化。
- 再次按下快捷键,文字写入光标位置;按
esc取消本次口述。
- 快捷键可在设置中更换:点击后按下新的键或两键组合,即刻生效;语音输入至多可绑定 4 个组合。
- SpeakMore 常驻菜单栏(Windows 为任务栏通知区域)。
- 主窗口提供统计、历史记录、词典、模型与设置。
- 词典:常说的专有名词、产品名与术语加入词典后,听写时按词典的写法输出。词典仅保存在本机,随请求发送给所选模型;支持词典的模型列于词典页。
首次引导
- 首次启动时由引导完成配置。
- 各步骤均可前进、后退,也可跳过,稍后在主窗口中补充。
- 数据隐私方式无需任何密钥。
![]() |
![]() |
| 1 · 选择识别方式 | 2 · 配置密钥(可跳过) |
![]() |
![]() |
| 3 · 后台下载本机模型 | 4 · 授予系统权限 |
![]() |
![]() |
| 5 · 测试麦克风 | 6 · 测试快捷键 |
![]() |
![]() |
| 7 · 口述测试 | 8 · 完成配置 |
🧩 模型自由
上述名称与标志归各自权利人所有,仅用于说明 SpeakMore 支持对接的服务。
引擎页把识别方式、环节、厂商、型号排成一棵树:
- 原生识别 7 个:音频输入,文字输出。
- 转写 10 个:本机 4 个,云端 6 个。
- 润色 12 个:通义千问、DeepSeek、Kimi、智谱、MiniMax 与自定义服务。
- 点开型号查看官方价格、实测得分与渠道,正在使用的一路以主题色标出。
- 同一模型由多个平台提供时合并为一项,在详情中切换渠道。
- 一把阿里云百炼密钥可调用 14 个模型。
- DeepSeek、Kimi、智谱、MiniMax、Gemini、OpenAI 的官方密钥均可直接使用。
- OpenAI 兼容服务填写地址与密钥即可接入。
![]() |
![]() |
| 引擎页与模型详情 | 按平台管理密钥 |
🔀 方式自由
- 三种识别方式并列可选。
- 各方式独立保存模型配置,切换时无需重新设置。
- 在引擎页第一列切换,首页标题右侧显示当前方式。
![]() |
![]() |
| 在引擎页切换识别方式 | 推荐组合一键启用 |
推荐组合:
- 将完整路线打包,一键启用。
- 支持先检测、后启用。
- 缺少的密钥与本机模型可在原处补齐。
月成本口径:每日 100 次、每月 30 天;单次按 26 秒计(97 条真实口述的平均值);按各厂商官方价格估算,美元按 6.71 折算。Intel Mac 改用 CPU 版 SenseVoice Small。
💻 硬件自由
- 同一本机模型适用于全部受支持的设备。
- 有可用显卡时优先使用显卡。
- 无显卡或显卡不可用时,自动回退至 CPU。
单条耗时为 97 条真实口述的转写耗时中位数;Windows 显卡为 RTX 4060 Ti。Vulkan 支持 NVIDIA、AMD 与 Intel 显卡。
🔒 隐私自由
- 数据隐私方式不上传任何数据:语音由本机模型转写为文字。
- 无需密钥与账号。
- 国内源一键下载:默认经魔搭(ModelScope)下载本机模型。
- 自动切换下载源:国内源不可用时改用 Hugging Face;中断后从断点续传。
- 完整性校验:下载完成后校验 SHA-256。
- 无中转服务器:录音或文字以用户自有密钥直接发送至所选厂商。
- 不采集统计数据。
- 密钥加密存储:macOS 使用钥匙串,Windows 使用 DPAPI。
- 数据留存本机:历史记录、录音与词典仅保存在本机。
💸 费用自由
- SpeakMore 本身免费。
- 模型费用按实际用量,直接结算给厂商。
- 首页按今天、本月、累计统计花费:柱状图与趋势线看走势,下方列出各模型的花费与占比。
与 Typeless 各档套餐对比(重度使用,每日 100 次):
| 产品 | 方案 | 月费 | 年费 | 字数 | 数据去向 | 账号 |
|---|---|---|---|---|---|---|
| Typeless | 免费版 | ¥0 | ¥0 | 每周限额 | Typeless 服务器1 | 需注册 |
| Pro 年付 | ¥81 | ¥966 | 不限 | Typeless 服务器1 | 需注册 | |
| Pro 月付 | ¥201 | ¥2,416 | 不限 | Typeless 服务器1 | 需注册 | |
| 企业版 | 需询价 | 需询价 | 不限 | Typeless 服务器1 | 需注册 | |
| SpeakMore | 纯本机 | ¥0 | ¥0 | 不限 | 本机 | 无需 |
| 本机转写 + DeepSeek | ¥2.63 | ¥32 | 不限 | 仅文字 → DeepSeek | 无需 | |
| 百炼全云端 | ¥20.24 | ¥243 | 不限 | 阿里云百炼 | 无需 | |
| Gemini 原生识别 | ¥35.49 | ¥426 | 不限 | 无需 |
Typeless 价格取自 typeless.com/pricing(2026-10-17),美元按 6.71 折算人民币。SpeakMore 为估算值,口径同上文推荐组合;使用 Gemini 免费额度时不产生费用。
1 同时上传当前应用、窗口标题与屏幕文字,详见逆向笔记。
📊 评测
- 提示词:基于 60 条真实录音调优,逐条与 Typeless 对同一录音的输出比对。
- 样本:97 条真实口述,共 42.5 分钟,涵盖中文、中英混合与英文。
- 评分:以原生识别的输出为参照,按统一标准评 0–5 分。
本机转写:Apple 芯片与 Windows
| 模型 | 得分 | 体积 | Mac | Windows |
| --- | --- | --- | --- | --- |
| qwen3-asr-0.6b-q8(默认) | 4.14–4.16 | 850 MB | Metal 231 毫秒 | Vulkan 240 毫秒 |
| sensevoice-small-q8 | 3.94 | 253 MB | Metal 73 毫秒 | Vulkan 107 毫秒 |
| qwen3-asr-0.6b-int8 | 4.02–4.06 | 987 MB | CPU 1081 毫秒 | CPU 3388 毫秒 |
| sensevoice-small-int8 | 3.75–3.78 | 237 MB | CPU 145 毫秒 | CPU 463 毫秒 |
端到端:Apple 芯片上的转写 + 润色
- 自松开快捷键至文字上屏:1.2–1.75 秒。
- 其中转写不足 0.7 秒,其余为润色请求耗时。
- 借助提示词缓存,DeepSeek 单次润色费用约 $0.00004。
- 详见实测记录。
- 评测框架位于
bench/,新增模型时仅运行对应的一列。
✅ 可信
- 开源:MIT 许可,语音处理相关代码全部公开。
- 无需账号:无注册与登录流程。
- 单一目录:数据、设置、密钥、模型与日志统一存放于一个文件夹,默认为
~/.speakmore(Windows 为%USERPROFILE%\.speakmore),可迁移至其他磁盘。 - 一键清除:执行
speakmore uninstall删除全部内容。 - 签名公证:Mac 版经 Developer ID 签名与 Apple 公证。
- 可校验:全部安装包提供 SHA-256 校验值。
- 逆向分析:Typeless 客户端的拆解整理为 18 篇笔记。
- 独立实现:SpeakMore 参照其交互从零实现,不含 Typeless 的任何代码与密钥。
🧑💻 开发者
- 命令行与 App 功能对等:切换方式与模型、管理与检测密钥、下载模型、查询历史与花费。
- JSON 输出:
status、history、usage支持--json。status --json中的快捷键为hotkey.dictate、hotkey.cancel(status、settings下各一份,为设置值),实际生效的组合见status.hotkeysInEffect;旧字段status.hotkey、status.hotkeyLabel、settings.hotkey已弃用,0.15 起删除。 - 插件化架构:各厂商以策略模式实现统一接口。
- 统一输入输出:录音统一为 16 kHz 单声道,转写结果统一为
{ text }。 - 跨平台开发:
scripts/dev/win-*.sh经 SSH 同步工作区至 Windows 机器,在远端运行测试、以调试端口从源码重启 App、截取桌面画面。 - 自动化测试:1100 个单元测试与 22 个安装测试。
- 门禁:Biome 代码检查,界面尺寸、字号与文案规范检查;
npm run check一次执行全部检查。
git clone https://github.com/zephyr4123/speakmore.git && cd speakmore
npm install
npm start # 等同于 speakmore 命令
npm run check # 代码检查与全部测试
flowchart LR
A["⌨️ 快捷键"] --> B["🎙️ 录音<br/>边录边分块上传"]
B --> C["🖥️ 本机听写服务"]
C -- 原生识别 --> D["🤖 音频大模型<br/>识别并整理"]
C -- 转写 + 润色 --> L["💻 本机或云端<br/>转写"]
L --> P["🤖 大模型<br/>整理"]
C -- 数据隐私 --> Q["💻 本机模型"]
D --> E["📋 写入光标位置"]
P --> E
Q --> E
📚 参考
⌨️ 命令
| 命令 | 说明 |
| --- | --- |
| speakmore | 启动;已运行时显示状态 |
| speakmore stop / restart | 停止 / 重启 |
| speakmore status [--json] | 运行状态、密钥、权限与用量 |
| speakmore update | 升级至最新版本 |
| speakmore history [-n 条数] [--json] | 历史记录,按时间倒序 |
| speakmore usage [--json] | 花费、token 与响应耗时,按模型分列 |
| speakmore dict [--json] | 查看词典 |
| speakmore dict add / remove <词>… | 添加 / 删除词 |
| speakmore dict import <文件> | 从单列 CSV 或每行一词的文本导入,已有的词跳过 |
| speakmore mode [native\|local\|private] | 查看或切换识别方式 |
| speakmore model [<厂商>[/<模型>]] | 查看或切换原生识别模型 |
| speakmore transcriber [<模型>] | 查看或切换转写模型 |
| speakmore transcriber download <模型> | 下载本机模型 |
| speakmore transcriber cancel <模型> | 取消下载 |
| speakmore transcriber delete <模型> | 删除本机模型 |
| speakmore polish [<厂商>/<模型>] | 查看或切换润色模型 |
| speakmore model check | 检测原生识别模型 |
| speakmore transcriber check | 检测转写模型 |
| speakmore polish check | 检测润色模型 |
| speakmore key [<厂商>] | 更换密钥,支持管道输入 |
| speakmore key --forget [<厂商>] | 删除已保存的密钥 |
| speakmore config / config set / config unset | 查看设置 / 修改单项 / 恢复默认值 |
| speakmore theme [名称] | 查看或切换主题 |
| speakmore settings | 打开设置 |
| speakmore logs [-n 行数] [-f] | 查看日志 |
| speakmore move [<文件夹>] | 将全部文件迁移至该文件夹中的 .speakmore(~ 为默认位置);不带参数时显示当前位置 |
| speakmore uninstall [--keep-data] | 卸载(执行前确认) |
update同时升级 SpeakMore.app,设置、密钥、历史记录、录音与词典保留。check类命令发送最小请求(本机模型由系统语音朗读样句),检测连通性与响应速度。local为转写 + 润色,private为数据隐私。- 原生识别厂商:
gemini/openai/bailian。 - 润色厂商:
deepseek/bailian/moonshot/zhipu/minimax/custom;自定义服务另需--url <地址>,可选--params '附加请求参数。' - 管道输入示例:
pbpaste | speakmore key(Windows:Get-Clipboard | speakmore key)。
⚙️ 设置项
| 名称 | 默认值 | 说明 |
| --- | --- | --- |
| hotkey.dictate | ["AltRight"] | 语音输入的快捷键 |
| hotkey.cancel | ["Escape"] | 口述中取消的快捷键 |
| mode | native | 识别方式:native / local / private |
| model | gemini/gemini-3.6-flash | 原生识别模型,厂商/模型 |
| thinking | MINIMAL | Gemini 思考档位 |
| transcriber | qwen3-asr-0.6b-q8 | 转写 + 润色的转写模型 |
| privateTranscriber | qwen3-asr-0.6b-q8 | 数据隐私方式的本机模型 |
| polish | deepseek/deepseek-flash | 润色模型,厂商/模型 |
| customUrl | 空 | OpenAI 兼容服务地址 |
| customParams | 空 | 自定义服务的额外请求参数,JSON 对象 |
| modelSource | cn | 下载源:cn / original |
| acceleration | auto | 加速:auto / cpu |
| barHint | on | 悬浮条操作提示:on / off |
| theme | ink | 主题:ink / cinnabar / indigo |
| language | system | 语言:system / en / zh-CN |
- 设置保存于
~/.speakmore/settings.json。 - 快捷键的值为组合列表,键名采用
KeyboardEvent.code(如AltRight、MetaRight、ControlRight、Fn、Space、KeyK、F13),两键以+相连。单个组合可直接写:speakmore config set hotkey.dictate ControlRight+F9;多个组合写作 JSON 数组:'["AltRight","ControlRight"]'。 - 组合至多两键;取消只接受单个非修饰键。与系统或常用快捷键冲突的组合不可绑定(如 ⌘、⌃ 加字母,Windows 键),只含左侧修饰键的组合、单独的 Shift 与 CapsLock 亦不可。
- 0.13 及以前的
hotkey设置在升级时自动换算;config set hotkey right_command等旧写法仍然有效。 - Gemini 思考档位可选:
MINIMAL/LOW/MEDIUM/HIGH。 - 自建服务的润色模型写作
custom/<模型>,地址示例http://127.0.0.1:11434/v1。 - 自定义服务需要额外参数时写入
customParams,例如{"reasoning_effort": "minimal"};检测与润色请求均附带,model、messages、stream不可覆盖。推理模型限制输出长度时留足思考的余量(如{"max_completion_tokens": 4096}),否则长段落会被截断。 - Windows PowerShell 中
--params的双引号前需加反斜杠:--params '{\"reasoning_effort\": \"minimal\"}'。 - 通过 App 或
speakmore mode、model、transcriber、polish切换时先行检测,立即生效。 config set直接写入,不做检测。- 临时覆盖:启动时设置
SPEAKMORE_HOTKEY_DICTATE、SPEAKMORE_HOTKEY_CANCEL、SPEAKMORE_MODE、SPEAKMORE_MODEL等环境变量;快捷键的写法同设置文件,旧的SPEAKMORE_HOTKEY等同于SPEAKMORE_HOTKEY_DICTATE。 - 环境变量中的密钥优先于已保存的密钥:
GEMINI_API_KEY、OPENAI_API_KEY、DEEPSEEK_API_KEY、BAILIAN_API_KEY、MOONSHOT_API_KEY(Kimi)、ZHIPU_API_KEY、MINIMAX_API_KEY、SPEAKMORE_CUSTOM_API_KEY。
💰 花费统计
- 每次模型调用均记录 token(含音频与思考)、模型、花费与耗时。
- 首页按今天、本月、累计显示花费走势与各模型占比,悬停柱子查看那一段的细数。
- 本机转写单列,不计费。
speakmore usage提供更详细的数据。- 花费为按各厂商官方价格估算的美元金额;以人民币计价的平台按 6.71 折算。
- Gemini 提示词缓存对重复部分按一成价格计费;开始口述时即预先建立缓存。
🔐 系统权限
| macOS 权限 | 用途 |
| --- | --- |
| 麦克风 | 录音 |
| 输入监控 | 监听快捷键,仅响应所设按键;录制快捷键时读取所按的键 |
| 辅助功能 | 模拟 ⌘V 写入文字;拦下 esc、组合快捷键与录制中的按键,不传给前台应用 |
- App 在首次引导中申请上述权限。
- 终端安装时,权限授予运行 SpeakMore 的终端。
- Windows 仅需麦克风权限(设置 › 隐私和安全性 › 麦克风)。
🗂️ 文件位置
| 文件 | 说明 |
| --- | --- |
| settings.json | 设置 |
| vocabulary.json | 词典 |
| <厂商>-key.bin | 加密后的密钥,每个厂商一份 |
| data/history.db | 历史记录与花费记录 |
| data/Recordings/ | 录音 |
| logs/main.log | 日志 |
| models/ | 本机模型 |
| bin/、app/、runtime/ | 终端安装的程序文件 |
- 全部文件位于存储位置(默认
~/.speakmore/,Windows 为%USERPROFILE%\.speakmore\),仅当前用户可读。 - 密钥的解密密钥保存在钥匙串中(Windows 由 DPAPI 绑定账户),文件复制至他处无法解密。
- 日志仅记录长度、耗时与用量,不记录口述内容与密钥。
- 本机模型按需下载,并校验 SHA-256。
- 目录之外:钥匙串条目、已授予的系统权限、"应用程序"中的 SpeakMore。
- Windows 另有开始菜单快捷方式、Path 条目与开机自启项。
- 存储位置不在默认位置时,另有一个记录其位置的定位文件:
~/Library/Application Support/com.zephyrxiang.speakmore/location.json(Windows 为%LOCALAPPDATA%\SpeakMore\location.json)。
🩺 故障排查
| 现象 | 处理方法 |
| --- | --- |
| 密钥显示"未验证" | 联网后执行 speakmore status |
| 检测未通过,密钥无误 | speakmore model check 查看返回内容 |
| 按快捷键无响应 | speakmore status 查看缺失项,speakmore restart 重启 |
| macOS 上部分组合快捷键暂时无效 | 有应用开着安全输入(如密码框、终端的安全键盘输入),关闭后恢复;悬浮条会提示 |
| Windows 上快捷键在个别窗口中无效 | 该窗口以管理员身份运行,系统不向普通程序转发按键;悬浮条会提示 |
| 命令提示"没有在 5 秒内回话" | 执行 speakmore stop,再执行 speakmore |
| 菜单栏中无图标 | 按住 ⌘ 将部分图标拖出菜单栏,或执行 speakmore settings |
| 提示找不到 SpeakMore 的目录 | 存储位置在移动硬盘上时,先连接该磁盘 |
- "未验证"表示启动时未能连接厂商,暂用已保存的密钥。
- 检测未通过多由模型名称或思考档位有误导致,
speakmore config unset model可恢复默认。 - 带刘海的 MacBook 会将多余的菜单栏图标隐藏于刘海之后。
🔄 升级与卸载
- 升级:App 的「设置 › 通用 › 软件更新」检查并安装新版本;终端运行
speakmore update效果相同。两处共用同一套更新流程:先在后台下载并校验,再替换终端安装与 SpeakMore.app,最后重新打开升级前运行的一方;仅替换期间短暂停止。更新只下载变化的部分,通常为几 MB。 - 0.10.1 及更早版本:无法检测到之后的版本,需重新安装一次:Mac 下载新版 dmg 覆盖安装,或重新运行终端安装命令;Windows 重新运行安装程序或安装命令。
- 升级保留:设置、密钥、历史记录、录音与词典。
- 降级至 0.11.0 及更早版本:旧版本仅识别默认位置,降级前先执行
speakmore move ~迁回默认位置。 - 卸载:
speakmore uninstall停止 SpeakMore,删除整个目录、命令、定位文件及钥匙串条目。 - Windows 卸载:另删除 Path 条目、开始菜单快捷方式与开机自启项。
- 保留数据卸载:附加
--keep-data,保留设置、密钥、历史记录、录音与词典。 - 仅安装 App 时卸载:从菜单栏退出后,将其移至废纸篓。











