Skip to content

SayType, over time

Every release.
Every detail.

A complete record of what changed in SayType, one version at a time.

2026

1.19 series

v1.19.0Latest

What's new

  • Model downloads (Qwen 0.6B and 1.7B) now try Hugging Face first, since it's much faster than ModelScope outside mainland China. On machines set to a mainland China time zone (checked locally, nothing sent anywhere), ModelScope is tried first instead, since Hugging Face isn't reachable there.

Improvements

  • Downloads now recover automatically from a stuck or very slow source: if a source stays silent for 20 seconds, or averages under 200 KB/s over 15 seconds while another source is still available, the download switches sources and resumes instead of hanging or crawling forever.
  • The recording prompt no longer clips the mic icon or waveform when a hint is long (e.g. the locked-recording instruction). The waveform shrinks first, then the hint text wraps onto up to two lines, breaking only at natural word/punctuation boundaries so shortcut labels like "Ctrl + Shift" stay together.

Fixes

  • None user-facing beyond the above; the remaining changes in this release are diagnostic logging improvements (for troubleshooting dropped/lost recordings on wireless keyboards) that don't change app behavior, plus internal documentation updates.
中文原文

新增功能

  • 模型下载(千问 0.6B 与 1.7B)现在优先尝试 Hugging Face,在中国大陆以外该源比 ModelScope 快很多。系统时区设置为中国大陆(仅在本机判断,不会发送到任何地方)时,则优先尝试 ModelScope,因为当地无法访问 Hugging Face。

改进

  • 下载过程现在能自动从卡住或过慢的源中恢复:如果某个源 20 秒内无响应,或在还有其他可用源的情况下 15 秒内平均速度低于 200 KB/s,会自动切换到下一个源并继续下载,而不是无限卡住或龟速进行。
  • 录音提示框在提示语较长时(例如免按住录音的操作说明)不再裁切麦克风图标或波形。波形会先收窄,随后提示文字最多换行为两行,并且只在词语/标点处换行,确保"Ctrl + Shift"这样的快捷键标签不会被拆开。

修复

  • 除上述内容外没有其他面向用户的修复;本次发布中其余改动是诊断日志方面的改进(用于排查无线键盘导致录音异常中断的问题),不影响应用行为,另有内部文档更新。
Original release on GitHub

1.18 series

v1.18.1

Fixes

  • Windows: fixed the recording prompt appearing off-screen (invisible) when moving between monitors with different DPI scaling — e.g. dragging from a 150%-scaled display to a 100% 1080p display could push the prompt below the visible screen. The prompt now positions itself correctly on the monitor under your cursor regardless of scaling differences between screens. (macOS and Linux behavior is unchanged.)
中文原文

修复

  • Windows: 修复了在不同 DPI 缩放比例的多台显示器之间移动时,录音提示框可能显示在屏幕外(不可见)的问题——例如从 150% 缩放的显示器切换到 100% 缩放的 1080p 显示器时,提示框可能被移到屏幕可见区域之下。现在提示框会根据光标所在显示器的缩放比例正确定位,无论各屏幕缩放比例是否不同。(macOS 和 Linux 上的行为未受影响。)
Original release on GitHub
v1.18.0

What's new

  • Tap-to-recover, double-tap-to-lock hotkey: A quick, short press of Ctrl+Shift (under 500 ms, with no second press) is now a "tap." If a failed-dictation card is showing, tapping re-inserts that card's text at your cursor instead of discarding it — no need to reopen History and copy/paste. Without a card showing, a tap behaves as before (a mis-trigger cancel). A second quick press within 350 ms instead locks the recording hands-free: it keeps recording without holding the keys down, until you press again, hit Escape, or 12 minutes pass. A tap followed by holding the keys is treated as a normal dictation, and long-hold recordings show a short tip about the double-tap feature (shown at most three times).
  • Note for Windows users: switching keyboard layouts with Ctrl+Shift twice in quick succession can accidentally trigger a lock.
  • Filler-word removal: Final transcriptions can now automatically drop hesitation fillers (嗯, 呃, and standalone 额) along with the surrounding pause punctuation, e.g. "觉得,呃,我们" becomes "觉得,我们". Fillers that are quoted, listed alongside other interjections, named, used as parts of words, or reported as someone's spoken answer are left untouched. A new "Remove filler words" setting controls this and is on by default; results that were only filler become empty and are treated as no speech.

Fixes

  • Filler removal no longer strips 嗯/呃 when they appear inside quotation marks (“”, ‘’, 「」, 『』, or straight double quotes), since quoted speech should stay verbatim (e.g. 他说:"嗯,好吧。" keeps its 嗯). Unmatched quote marks (like an apostrophe, or a dropped closing quote) are not treated as quoting.
中文原文

新功能

  • 轻点恢复、双击锁定的快捷键:短按 Ctrl+Shift(不到 500 毫秒,且之后 350 毫秒内没有第二次按下)现在算作一次"轻点"。如果当前正显示插入失败的卡片,轻点会把卡片里的文字重新插入到光标处,无需再打开历史记录手动复制粘贴。如果没有失败卡片,轻点行为和以前一样(视为误触发并取消)。而在 350 毫秒内的第二次短按,则会把录音锁定为免按住模式:无需一直按着按键即可持续录音,直到再次按下、按 Escape,或达到 12 分钟上限为止。轻点后接着按住按键,则视为一次正常的按住录音;长按录音时会显示一条关于双击功能的简短提示(最多显示三次)。
  • Windows 用户注意:如果你用 Ctrl+Shift 切换键盘布局,快速切换两次可能会被误判为锁定录音。
  • 过滤语气词:最终转写结果现在可以自动去除嗯、呃(以及单独出现的额)等停顿语气词,连同其前后的停顿标点一起清理,例如"觉得,呃,我们"会变成"觉得,我们"。若语气词处于引用内容中、与其他语气词并列、被当作词语提及、构成其他词的一部分,或是转述他人的应答,则会保留不删。新增的"过滤语气词"设置默认开启;如果整段结果只有语气词,处理后会变为空文本,按无语音处理。

修复

  • 修复了语气词过滤会误删引号内嗯/呃的问题(引号包括中文的""、''、「」、『』以及英文直引号)——引号内的话应保持原样(例如"他说:'嗯,好吧。'"中的"嗯"会被保留)。未成对出现的引号(如用作撇号的',或识别时丢失的右引号)不会被当作引用处理。
Original release on GitHub

1.17 series

v1.17.2

Fixes

  • Fixed emoji and other special characters occasionally arriving as garbled text when typed into the focused app — long insertions are now split only between whole characters, so multi-part characters (like emoji) never get cut in half.
  • Fixed inserted text sometimes triggering unintended shortcuts when a modifier key (Shift, Control, Option, Command, Caps Lock, Fn) was held down while dictation was inserting text.

Improvements

  • Faster text insertion: the pause between chunks of typed text was reduced from 5ms to 3ms, making long dictations appear noticeably quicker.
中文原文

修复

  • 修复了向当前应用输入文本时,表情符号等特殊字符偶尔被截断为乱码的问题——长文本现在只会在完整字符之间分割,多字节字符(如表情符号)不会再被从中间切断。
  • 修复了在插入文本过程中,如果用户按住了修饰键(Shift、Control、Option、Command、Caps Lock、Fn),插入的文本可能被误判为快捷键操作的问题。

改进

  • 文本插入速度提升:文本分块之间的暂停时间从 5 毫秒缩短至 3 毫秒,长段听写内容的输入体验更加流畅。
Original release on GitHub
v1.17.1

Improvements

  • Redesigned the engine picker on the Home screen: instead of three tall buttons plus a separate row for Qwen's size, it's now a single compact row of pills. The Qwen pill shows its size directly (with a quick switch if both 0.6B and 1.7B are downloaded), and a "More" menu lets you jump straight to Groq or Nemotron.
  • Local engines are now marked with a computer icon and cloud engines with a cloud icon, so it's clear at a glance whether your speech leaves your machine.
  • Engine buttons now only show a status label when something needs your attention (e.g. not downloaded yet), instead of always showing a status.
中文原文

改进

  • 重新设计了主页的引擎选择区:原来是三个占满整行的大按钮,外加单独一行的千问大小切换;现在合并成紧凑的一行「药丸」按钮。千问按钮内直接显示当前大小(若 0.6B 和 1.7B 都已下载,可直接切换),并新增「更多」菜单,可直接切换到 Groq 或 Nemotron。
  • 本地引擎现在用电脑图标标记,云端引擎用云朵图标标记,一眼即可看出语音是否会上传。
  • 引擎按钮现在只在需要关注时(例如尚未下载)才显示状态提示,不再总是显示状态文字。
Original release on GitHub
v1.17.0

What's new

  • Settings can now suggest switching Qwen to the 1.7B model based on your own machine's measured dictation speed, instead of guessing from the chip name. After enough dictations on 0.6B, if 1.7B would still respond quickly, SayType suggests it in the Qwen details; if 1.7B turns out to be slow on your machine, it suggests switching back to 0.6B.
  • Home and Settings now treat Qwen as a single engine with two sizes (0.6B / 1.7B). Switching away to another provider and back to Qwen restores whichever size you used last, and once both sizes are downloaded, Home shows a quick 0.6B/1.7B toggle.
  • "Download 1.7B" keeps dictation working on 0.6B while it downloads, then switches to 1.7B automatically once it's ready — unless you changed engines while it was downloading, in which case it stays put.

Improvements

  • Onboarding no longer offers the 1.7B model up front; first run now only asks local vs. cloud, keeping setup simpler.
  • Groq and Nemotron are now tucked under "More" in onboarding, Home, and Settings, while whichever engine you're currently using always stays visible.
  • Qwen 1.7B is now described as a "larger" model option rather than "experimental."
中文原文

新功能

  • 设置页现在可以根据本机实测的听写速度,建议是否切换到千问 1.7B,而不是靠芯片型号猜测。0.6B 用够一定次数后,如果换成 1.7B 依然能很快出结果,SayType 会在千问详情里提示切换;如果用上 1.7B 后实测偏慢,也会提示换回 0.6B。
  • 首页和设置页现在把千问当作一个引擎、0.6B 与 1.7B 是它的两种大小。切到其他服务商再切回千问时,会恢复你上次使用的那个大小;两种大小都下载好后,首页会多出一个 0.6B / 1.7B 快捷切换。
  • 点击"下载 1.7B"后会继续用 0.6B 听写,下载完成自动切换到 1.7B——除非下载期间你已经手动换了别的引擎,那样就不会自动切换。

改进

  • 引导流程不再一开始就提供 1.7B 选项,首次使用现在只需选择"本地还是云端",设置更简单。
  • Groq 和 Nemotron 现在在引导、首页和设置页都统一收进"更多"选项里,而当前正在使用的引擎始终保持可见。
  • 千问 1.7B 现在的说明改为"更大"的模型选项,而不再是"实验性"。
Original release on GitHub

1.16 series

v1.16.1

What's new

  • The Dictionary page now uses chip-style tags instead of a textarea: type a word and press Enter (or comma, or paste a comma-separated list) to add it, and click the × on any chip to remove it. Changes save automatically — no Save button needed.

Improvements

  • Rewrote a lot of the Chinese (and some English) UI copy to read naturally instead of like translated implementation detail — clearer wording around API keys, transcription, and engine names.
  • The local model delete confirmation now shows the model's actual download size instead of an inaccurate fixed "~1 GB".
  • The Nemotron latency setting is now labeled "faster text" / "more accurate" instead of showing internal timing numbers that didn't match what users actually experience.
  • The Accessibility permission explanation no longer claims SayType "never uploads anything" (untrue when using cloud engines) — it now just explains what the permission is used for.
  • Various error/status messages were corrected to better match actual behavior (e.g., re-transcribe failures, GPU fallback persisting until restart, integrated-GPU slowdown notes).

Fixes

  • None beyond the copy corrections above.
中文原文

新功能

  • 词典页面改为“标签”式编辑,不再是大文本框:输入一个词按回车(或逗号,或直接粘贴一串用逗号分隔的词)即可添加,点击标签上的 × 可删除。改动会自动保存,不再需要点击“保存”按钮。

改进

  • 重写了大量中文(以及部分英文)界面文案,减少“翻译腔”和技术实现细节的暴露,API Key、转写、引擎名称等表述更自然清晰。
  • 删除本地模型时的确认提示,现在显示模型的实际下载大小,而不是不准确的固定“约 1 GB”。
  • Nemotron 的延迟设置改为“更快出字” / “更准确”这类描述,不再展示与用户实际体验不完全对应的内部耗时数字。
  • 辅助功能权限说明不再声称 SayType “不会上传任何数据”(使用云端引擎时这一说法并不准确),现在只说明该权限的实际用途。
  • 修正了若干与实际行为不完全一致的提示文案(例如重新转写失败提示、GPU 回退会持续到重启、集成显卡变慢的说明等)。

修复

  • 除上述文案修正外,本次无其他修复。
Original release on GitHub
v1.16.0

What's new

  • Nothing new was added this release; the main change is a removal (see below).

Improvements

  • Removed the translate mode (hold Shift+Alt to get English text) — it was rarely used and added its own provider picker and upload-consent prompt. Shift+Alt is now just a regular recording shortcut. If you relied on this, please open an issue.
  • A local engine (Qwen/Nemotron) now simply hides the API key field when it's not needed, instead of parking it inside a separate translation panel.

Fixes

  • An update-check failure used to dump a long raw error message into the Settings status pill, squeezing the "Software updates" text into a single word per line. It now shows a short "Couldn't check for updates. Try again later." message, with the full detail available in the tooltip and the log.
  • Fixed a release-pipeline timing issue where Mac users could briefly see an update error in the minutes right after a new version was tagged, because the release could go public before the macOS build had finished uploading. Releases are now only published once every platform's build is ready.
中文原文

新增功能

  • 本次没有新增功能,主要变化是移除了一项功能(见下文)。

改进

  • 移除了翻译模式(按住 Shift+Alt 说话得到英文)——这个功能使用率很低,却带来了独立的服务商选择和上传同意提示。Shift+Alt 现在只是一个普通的录音快捷键。如果你依赖这个功能,请提交 issue 告诉我们。
  • 使用本地引擎(千问/Nemotron)时,不再需要的 API key 输入框会直接隐藏,而不是被挪到单独的翻译面板里。

修复

  • 修复了检查更新失败时,设置页状态提示会显示一长串原始错误信息,把「软件更新」的说明文字挤成一列一个字的问题。现在只显示简短的「检查更新失败,请稍后再试。」,完整信息可在悬浮提示和日志中查看。
  • 修复了发布流程的时序问题:过去在推送新版本 tag 后的几分钟内,如果 macOS 版本还没构建完成,Mac 用户检查更新时可能会看到更新错误。现在要等所有平台都构建完成后才会正式发布。
Original release on GitHub

1.15 series

v1.15.10

Fixes

  • Fixed the model picker in Settings sometimes showing or saving the wrong model when you switched engines or picked a model while a previous choice was still being saved. In particular:
  • Reopening the currently active engine's drawer while a save was still in progress could show a stale model, so clicking the model you actually wanted looked like a no-op and got ignored.
  • A model chosen right as you switched to a new engine could be silently dropped once the switch completed.
  • Opening a different engine's drawer while a pick was still saving could cause that pick to be lost.

These could result in the wrong transcription model ending up selected and saved without any indication something went wrong. Model selection now correctly reflects (and honors) the most recent pick in all of these cases.

中文原文

修复

  • 修复了设置页中模型选择器的若干问题:在切换引擎或某个模型选择仍在保存过程中时,界面可能显示错误的模型,或最终保存了错误的模型。具体包括:
  • 在某次保存尚未完成时重新打开当前使用中引擎的抽屉,可能显示过期的模型,导致你点击真正想要的模型时被误判为"未变化"而被忽略。
  • 在切换引擎的瞬间选择的模型,可能在切换完成后被悄悄丢弃。
  • 在某次选择仍在保存时打开另一个引擎的抽屉,可能导致之前的选择丢失。

以上问题都可能导致最终保存并生效的转写模型与你实际选择的不一致,且没有任何提示。现在,模型选择在上述所有情况下都能正确显示并生效为最新的选择。

Original release on GitHub
v1.15.9

Fixes

  • Fixed a bug in Settings where quickly switching cloud models (e.g., picking Large V3 then Turbo again before the save finished) could leave the wrong model highlighted, or cause an older pick to be re-saved later. The last model you pick now always wins, even if a save was already in progress; if a save fails, the highlight correctly falls back to the model still in use.

Improvements

  • History now keeps the last 200 dictations instead of 100, so recent activity spans about a weekend of use instead of about 42 hours.
  • Rewrote the Qwen3-ASR 1.7B model description in Settings so it tells you what matters as a user (download size, memory use, and speed) instead of reading like a benchmark log.
中文原文

修复

  • 修复了设置页面中一个问题:快速切换云端模型(例如先选 Large V3 再选回 Turbo,且保存尚未完成)时,可能导致高亮显示的模型不正确,或稍后自动保存了旧的选择。现在无论保存是否仍在进行中,最后一次选择都会生效;如果保存失败,高亮会正确回退到当前实际使用的模型。

改进

  • 历史记录容量从 100 条提升到 200 条,最近记录现在大约能覆盖一个周末的使用量,而不只是约 42 小时。
  • 重写了设置中 Qwen3-ASR 1.7B 模型的说明文字,改为用户更关心的信息(下载大小、内存占用、转写速度),而不是像一份测试记录。
Original release on GitHub
v1.15.8

What's new

  • Engine selection in Settings now works like a Wi-Fi list: clicking a ready engine (key entered, or model downloaded) switches to it and opens its details in one click. Clicking an engine that still needs a key or a download just opens it, with a hint like "Not in use yet. Add an API key, then click OpenAI again to switch."
  • The expand arrow on each engine row is now a separate button, so you can look at (or edit) another engine's settings without switching to it.
  • Picking a model inside the currently active cloud engine's drawer now applies immediately — no more separate "Use <model>" button.
  • If activating an engine fails, the error now stays attached to that engine instead of jumping to whichever drawer you open next.

Improvements

  • The engine that's actually in use is no longer dimmed, even if it's an experimental one.
  • The Qwen3-ASR 1.7B row is now a single line; its cost details moved into its drawer.
  • When Qwen is active, the language setting shows a simple one-line summary instead of a disabled dropdown with a boxed note.
  • The "in use" indicator is now a clearer circle-with-checkmark, and the outdated "click a title for details" instruction was removed from the page.
  • Notices like "Using this cloud model uploads dictation audio to its provider" are now shown as plain text instead of looking like an input box.
  • Tightened spacing throughout the Settings page so drawers and cards take up less vertical room.

Fixes

  • Fixed the expand chevron on engine rows being invisible — it was rendered outside the visible row area and never showed up.
  • Fixed drawer contents (API key, model choices, notices) not lining up with the engine's name above them.
  • Fixed a bug where switching between cloud engine drawers could scramble the order of the API key field, model picker, and notice.
中文原文

新增

  • 设置页中的引擎选择现在像 Wi-Fi 列表一样操作:点击已就绪的引擎(已填密钥或已下载模型)会直接切换并展开详情;点击尚未就绪的引擎只会展开详情并给出提示,例如"暂未启用,请先添加 API 密钥,再次点击 OpenAI 即可切换"。
  • 每行的展开箭头现在是独立按钮,可以单独查看/编辑某个引擎而不会切换到它。
  • 在当前已激活的云端引擎详情面板中选择模型会立即生效,不再需要单独的"使用 <模型>"按钮。
  • 激活引擎失败时,错误信息会留在出错的那个引擎上,不会在打开下一个详情面板时跟着跑过去。

改进

  • 正在使用中的引擎不再变暗显示,即使它是实验性引擎。
  • Qwen3-ASR 1.7B 的行简化为一行,费用明细移到了详情面板中。
  • 使用 Qwen 时,语言设置显示为简单的一行说明,而不是禁用的下拉框加提示框。
  • "使用中"标记改为更清晰的圆形对勾图标,并移除了页面顶部过时的"点击标题查看详情"说明。
  • "使用该云端模型会上传听写音频至其服务商"等提示文字现在以纯文本样式显示,而不是像输入框一样带边框。
  • 收紧了设置页面的整体间距,详情面板和卡片占用的垂直空间更小。

修复

  • 修复了引擎行的展开箭头不可见的问题——此前它被渲染在可视区域之外。
  • 修复了展开面板中的内容(API 密钥、模型选项、提示文字)与上方引擎名称未对齐的问题。
  • 修复了在不同云端引擎详情面板间切换时,API 密钥输入框、模型选择器与提示文字顺序可能错乱的问题。
Original release on GitHub
v1.15.7

Fixes

  • Fixed a visual bug in the dark theme where the transcription engine list in Settings looked washed out with a milky grey fog, especially around the expanded engine details and selected/experimental rows. Row dividers and backgrounds now render correctly on both dark and light themes.
中文原文

修复

  • 修复了深色主题下"设置"中转录引擎列表出现灰蒙蒙雾状效果的视觉问题,尤其是在展开的引擎详情以及已选中/实验性选项行周围。现在深色和浅色主题下的行分隔线与背景都能正确显示。
Original release on GitHub
v1.15.6

What's new

  • Redesigned dark theme. The old dark theme was a mid-tone blue-purple gradient that didn't actually read as "dark" — panels barely stood out and white text had weak contrast. It's now a proper near-black surface built from the same warm ink and eucalyptus-green accent as the light theme, with depth conveyed through lightness (recessed sidebar/inputs, raised cards). Native dropdowns and scrollbars now follow the dark theme too, and the recording prompt glows in the app's accent color instead of indigo.
  • "What's new" link on the update card. Once a new version is downloaded, the Home update card now includes a link that opens that version's release notes on GitHub, instead of just saying it's ready to restart.
  • Easier fix when Accessibility permission won't show up. If SayType never appears in System Settings' Accessibility list, Settings now offers the same "Reveal SayType in Finder" button and drag-in hint that Home already had, so you can drag the app in manually. Opening the Accessibility pane from Settings also shows the drag helper immediately.

Fixes

  • Corrected the "Start minimized" description: it applies to every launch (not just system startup), and a manual launch from the Dock also stays hidden for the first few seconds — the setting text was misleading about when it applies.
中文原文

新功能

  • 重新设计了深色主题。 旧的深色主题其实是一个中间调的蓝紫色渐变,算不上真正的"深色"——面板和背景几乎融为一体,白色文字对比度也偏弱。现在深色主题采用了和浅色主题一致的暖色调墨色与桉叶绿强调色,构建出真正的近黑色界面,并通过明暗层次表现层级关系(侧边栏、输入框内凹,卡片上浮)。原生下拉菜单和滚动条现在也会跟随深色主题变化,录音提示框的光晕改用应用的强调色,不再是靛蓝色。
  • 更新卡片新增"看看改了什么"链接。 新版本下载完成后,主页的更新卡片现在会附带一个链接,点击可打开该版本在 GitHub 上的更新说明,而不只是提示"已就绪,可以重启了"。
  • 辅助功能权限缺失时更易修复。 如果 SayType 一直没有出现在系统设置的"辅助功能"列表中,设置页现在提供了和主页一样的"在访达中显示 SayType"按钮及拖拽提示,方便你手动把应用拖入列表。从设置页打开辅助功能面板时,拖拽提示气泡也会同时弹出。

修复

  • 修正了"启动时最小化"的说明文字:该设置对每次启动都生效(不仅是随系统启动),并且从程序坞手动启动应用后,窗口在最初几秒内也会保持隐藏——原来的文案对适用场景描述不准确。
Original release on GitHub
v1.15.5

Fixes

  • Windows: microphone status is now detected correctly. SayType tracks whether the last recording attempt actually succeeded and reports a clear status — ready, denied, no device found, or error — instead of assuming the microphone is always available. Denying access, opening the Windows microphone privacy settings, and retrying now works as expected, and Home/onboarding/Settings all reflect the current state.
  • Windows: "Copy to clipboard" now works reliably. Manual copy uses a native Unicode clipboard write, and if the copy fails you'll see a visible error instead of silent failure.
  • macOS microphone/accessibility permission behavior is unchanged.
中文原文

修复

  • Windows:麦克风状态检测已修复。 SayType 现在会跟踪最近一次录音是否真正成功,并给出明确状态(可用、被拒绝、未检测到设备或出错),而不是默认麦克风始终可用。用户拒绝授权后,可以打开 Windows 麦克风隐私设置并重试,主界面、引导流程和设置页面都会同步更新状态。
  • Windows:“复制到剪贴板”现在可以稳定工作。 手动复制改为使用原生 Unicode 剪贴板写入,如果复制失败会给出可见的错误提示,而不是静默失败。
  • macOS 的麦克风/辅助功能权限行为保持不变。
Original release on GitHub
v1.15.4

What's new

  • Added a "Merge spelled-out letters" option in Settings (on by default). When enabled, independent uppercase English letters separated by ordinary spaces — like "A P I" — are automatically joined into "API" in the final transcript. This applies once a dictation is fully assembled, so History and insertion use the same formatted result; live previews and in-progress chunks are left untouched. Punctuation, tabs, and line breaks still act as normal separators and won't be merged.
中文原文

新功能

  • 在设置中新增“自动合并拼读字母”选项(默认开启)。开启后,逐个拼读并用普通空格分隔的独立大写英文字母(例如“A P I”)会在最终转写结果中自动合并为“API”。该处理仅在完整听写结果生成后进行,历史记录与插入使用同一份格式化结果;实时预览和尚未完成的分段不受影响。标点符号、制表符和换行符仍会被当作正常分隔符,不会被合并。
Original release on GitHub
v1.15.3

What's new

  • Redesigned first-run setup: a clear step-by-step guide (Welcome → Privacy → Engine → Microphone → Accessibility on macOS → Practice) that you can leave and resume from the same step later via Settings.
  • New installs now default to the local Qwen3-ASR 0.6B engine on all platforms; machines detected as low-end (under 8 GiB RAM or fewer than 4 CPU cores) default to OpenAI instead. Existing installs keep whatever engine you already had configured.
  • You can now pick a local model as your engine even before its download finishes — the app tracks readiness separately from your selection, and the download continues in the background while you finish permissions. It won't start downloading anything, or switch your active engine, on its own.
  • On supported Apple Silicon (M4/M5 and newer with 16 GiB+ RAM), onboarding shows a side-by-side comparison (speed, memory, download size) for the larger 1.7B Qwen model as an option; 0.6B remains the recommended default everywhere.

Improvements

  • Dictation now sticks to the transcription engine (local/Groq/OpenAI) that was active when you started recording — for the whole session, including automatic retries — even if you change the engine in Settings mid-recording. This avoids silently sending later chunks of the same recording to a different provider than the first ones.
  • The practice step in onboarding now shows a more compact status readout.

Fixes

  • Changing the dictation language in Settings now applies to Nemotron live dictation immediately. Previously it only took effect after restarting the app.
中文原文

新增功能

  • 重新设计的首次启动引导:清晰的分步流程(欢迎 → 隐私 → 引擎 → 麦克风 → 辅助功能【仅 macOS】→ 练习),可以随时退出,之后在设置中从同一步骤继续。
  • 新安装默认使用本地千问 Qwen3-ASR 0.6B 引擎(所有平台);检测到低配机器(内存低于 8 GiB 或逻辑核心少于 4 个)时默认使用 OpenAI。已有安装的引擎配置保持不变。
  • 现在可以在本地模型下载完成前就先选定它作为引擎——应用会将「已选择」与「是否就绪」分开跟踪,下载会在你完成权限设置期间于后台继续进行。系统不会因为某个引擎是默认项就自动开始下载或切换当前引擎。
  • 在受支持的 Apple 芯片(M4/M5 及更新机型,且内存 ≥16 GiB)上,引导流程会并列展示更大的千问 1.7B 模型的速度、内存占用和下载大小对比作为可选项;0.6B 仍是各平台的推荐默认值。

改进

  • 听写现在会固定使用你开始录音那一刻所选的转写引擎(本地/Groq/OpenAI),整段录音(包括自动重试)都遵循这一引擎,即使录音过程中你在设置里更改了引擎。这样可以避免同一段录音的后续分块被悄悄发往不同的服务商。
  • 引导流程中的练习步骤状态显示更加紧凑。

修复

  • 在设置中更改听写语言后,现在会立即应用到 Nemotron 实时听写,此前需要重启应用才能生效。
Original release on GitHub
v1.15.2

Fixes

  • Windows/Linux: microphone is no longer held open between dictations. Previously the app kept a single microphone stream open for the whole session, which left the OS "microphone in use" indicator on constantly and could keep Bluetooth headsets stuck in hands-free (call-quality) mode. Each dictation now opens and closes its own microphone stream. (macOS is unaffected — it already used a different, native capture path.)
  • Onboarding: fixed the final practice step not accepting keystrokes. The last onboarding page asks you to try dictating a sentence, but the text field wasn't focused, so typed/dictated text could be silently ignored. The field now receives focus automatically when that step becomes ready.
  • Settings: language selection now works for the Nemotron engine. It was previously locked to automatic language detection like Qwen; you can now choose a specific language for Nemotron, and your saved language choice is preserved when switching or inspecting engines.
中文原文

修复

  • 修复 Windows/Linux 在两次听写之间持续占用麦克风的问题。 此前应用会在整个进程运行期间保持同一个麦克风流打开,导致系统的"麦克风使用中"指示灯常亮,并可能使蓝牙耳机一直停留在免提通话模式。现在每次听写都会单独打开和关闭麦克风流(macOS 不受影响,其原生录音路径本就不同)。
  • 修复引导流程最后一步无法输入的问题。 引导流程的最后一页会让用户试听写一句话,但输入框此前并未获得焦点,导致输入内容可能被忽略。现在该步骤就绪时会自动聚焦到输入框。
  • 设置中 Nemotron 引擎现已支持语言选择。 此前该引擎和 Qwen 一样只能自动检测语言,现在可以手动指定语言;切换或检查引擎时,已保存的语言选择也会被保留。
Original release on GitHub
v1.15.1

Improvements

  • Simplified the engine-switching feedback in Settings: removed the Undo button and redundant success message, and hidden the activation button for the model already in use. Selection indicators, cloud-upload notices, and failure messages remain visible where relevant.
中文原文

改进

  • 简化了设置中切换语音引擎/模型时的反馈:移除“撤销”按钮和重复的成功提示,隐藏已启用模型的启用按钮;保留选中标记、云端上传说明及切换失败提示。
Original release on GitHub
v1.15.0

What's new

  • Add optional Qwen3-ASR 1.7B Q8 local transcription. Qwen 0.6B remains the recommended default; 1.7B is experimental, with clear download and memory-cost information.
  • Keep both Qwen model sizes independently downloadable and removable. Switching sizes retires the previous inference worker.
  • Separate engine selection from configuration in Settings: use the check button to activate an engine, and its title to expand or collapse details. Browsing models, editing API keys, and downloading assets do not silently change the active engine.
  • Show the active model, support undo and preserve the previous selection if activation fails.
  • Improve Home engine availability/progress indicators and keep Settings saves coordinated with Home quick switching.
  • Make engine checkmarks smaller while preserving their click area.

Windows GPU acceleration continues to use the optional Vulkan package. No CUDA package is added. The larger model's performance depends on hardware and available acceleration; Windows/Linux real-device performance is not newly certified by this release.

中文原文
  • 新增可选的 Qwen3-ASR 1.7B Q8 本地转录。0.6B 保持推荐默认;1.7B 保留实验性标记,并明确说明下载量与内存成本。
  • 两种 Qwen 模型独立下载、删除;切换模型会退出旧推理进程。
  • 设置页区分选择与配置:点击勾选按钮启用引擎,点击标题展开或收起详情。浏览模型、配置密钥和下载模型不会自动切换当前引擎。
  • 明确显示当前模型,支持撤销;启用失败保留原来的选择。
  • 改善首页引擎可用状态和下载进度展示,协调首页切换与设置自动保存,避免旧保存覆盖新选择。
  • 缩小引擎勾选框和勾号,保留原点击区域。

Windows 继续提供可选的 Vulkan GPU 加速包,未增加 CUDA。大模型速度取决于硬件与加速是否可用;本次发布未新增 Windows/Linux 真机性能认证。

Original release on GitHub

1.14 series

v1.14.1

Improvements

  • Added end-to-end sample coverage checks for chunked local dictation. Before inserting the final text, SayType verifies that captured audio was fully accepted, queued, submitted, and completed. A detected coverage mismatch now enters the existing audio/text recovery flow instead of automatically inserting a partial result.
  • Added privacy-preserving tail diagnostics: per-chunk sample ranges, request byte counts, result character counts, and separate release/drain timing. These new diagnostics do not log audio or transcript content.
  • Legitimate empty transcription results remain valid and do not trigger retries or errors.

This release adds safeguards and diagnostic evidence for investigating intermittent tail loss; the original intermittent trigger has not yet been reproduced or conclusively identified.

中文原文
  • 为本地分段听写增加端到端采样完整性校验。插入最终文字前,核对采集、接收、入队、提交及完成的采样数量;发现覆盖缺口时,进入已有音频/文字恢复流程,避免自动插入残缺结果。
  • 增加保护隐私的尾段诊断:记录分段采样范围、请求字节数、结果字符数,并分别记录松手与采集排空时序。这些新增诊断不记录音频或转录正文。
  • 合法的空转录结果仍按正常结果处理,不因此重试或报错。

本版本增加防护和排查证据;原始间歇性丢尾的触发条件尚未复现或最终确定。

Original release on GitHub
v1.14.0

What's new

Redesigned Settings

  • Two focused tabs: Dictation Settings and App Settings.
  • Engine-specific accordion drawers keep API keys, model choices, and local-engine controls beside the engine they belong to.
  • Settings save automatically, with visible save and permission-check feedback.
  • Segmented language/model controls, visual theme previews, and rounded startup switches.
  • Cloud model cards show prices and tradeoffs; a single available model is presented as information rather than a selector.
  • Qwen and Nemotron report their own download/readiness state independently.
  • Optional cloud translation is separated from local dictation, with upload consent and an explicit cloud provider.
  • Clearer spacing, an improved version/update control, and OpenAI listed before Groq.

Reliability fixes

  • Cancelling a translation also clears its pending consent prompt.
  • Missing local models no longer block unrelated settings changes.
  • An explicitly selected translation provider never silently falls back to another provider when its API key is missing.
中文原文

设置页全面改版

  • 精简为「听写设置」「应用设置」两个标签。
  • 引擎配置采用手风琴布局:API key、模型及本地引擎选项直接显示在对应引擎下方。
  • 自动保存,并提供保存结果与权限重新检查反馈。
  • 语言与模型采用分段按钮,外观提供预览色块,启动开关更清晰。
  • 云端模型显示价格、特性与推荐;只有一个模型时直接展示信息,不再提供无意义的选择按钮。
  • Qwen 与 Nemotron 独立显示各自的下载和就绪状态。
  • 可选云端翻译与本地听写分开配置,明确上传授权和服务商选择。
  • 优化面板间距及版本/更新入口,OpenAI 排在 Groq 前。

可靠性修复

  • 取消翻译会同时清理等待中的授权弹层。
  • 本地模型未下载不再阻止其他设置保存。
  • 指定的翻译服务商缺少 API key 时明确报错,不会静默改用另一家。

macOS: Universal (Apple Silicon + Intel). Windows and Linux packages are provided; they have not been validated on physical devices in this release. Linux recording remains experimental.

Original release on GitHub

1.13 series

v1.13.4

Fixes

  • Failed recordings remain available for retry, including when a retry returns no text. History shows the latest failure reason.
  • Automatic retries reuse pending History entries. If a manual retry finishes first, a later automatic result is saved separately so the text returned for insertion remains available in History.
  • Fixed missing History entries for failed cloud/translation requests with incomplete capture. Recovery ownership now follows the recording-start provider snapshot, preventing gaps when Settings change during recording.
  • Added localized retry errors without internal file paths, and made History search match the displayed error text.
中文原文
  • 失败录音会保留以便重试;重试未返回文字时也不会删除录音,历史记录会更新失败原因。
  • 自动重试复用待处理记录;如果手动重试先完成,迟到的自动成功结果会另存一行,确保用于插入的文字仍可在历史记录中找到。
  • 修复采集不完整时云端/翻译请求失败漏记历史的问题。恢复归属使用录音开始时的 provider 快照,避免录音中切换设置导致恢复遗漏。
  • 重试错误提供中英文提示,不再显示内部文件路径;历史搜索也能匹配界面上的本地化错误文案。
Original release on GitHub
v1.13.3

Fixes

  • Failed transcriptions no longer disappear without a trace. When transcription fails (missing API key, network error, timeout, etc.), the recording itself is now kept alongside the error message, so you can retry it later instead of just seeing a lost error entry in History.
  • Retrying a failed recording ("re-transcribe") no longer re-runs it on whatever provider failed before — it uses whatever engine you have configured now, so fixing your API key, network, or switching providers actually fixes the retry.
  • A single recording that gets auto-retried (e.g. after a timed-out upload) now produces one History entry instead of two, and a retry that later succeeds correctly replaces the failed entry rather than leaving an orphaned failure row next to the successful text.
  • Retrying a failed entry now shows an up-to-date reason if it fails again, instead of leaving a stale error message that no longer matches what actually happened.
  • Clearer error messages for edge cases: a recording whose audio has since been deleted, a recording whose format the local engine can't read (with guidance to switch to a cloud engine in Settings), and other unreadable-recording cases.

Improvements

  • Failed recordings are automatically cleaned up along with the rest of History (subject to the same 100-entry cap), so they don't accumulate indefinitely on disk.
中文原文

修复

  • 转录失败时不再"消失得无影无踪"。当转录失败时(如 API 密钥缺失、网络错误、超时等),系统现在会保留原始录音并同时记录错误信息,方便你之后重试,而不是只留下一条无法找回录音的失败记录。
  • 重试失败的录音("重新转录")不再使用当初失败的那个引擎重跑,而是使用你当前配置的引擎——这样修复 API 密钥、网络问题,或切换服务商后,重试才能真正生效。
  • 同一段录音被自动重试(例如上传超时后)时,现在只会生成一条历史记录,而不是两条;重试成功后会正确地替换掉失败记录,而不会在成功文本旁边留下一条孤立的失败记录。
  • 重新转录某条失败记录再次失败时,会显示最新的失败原因,而不是保留一条与实际情况不符的旧错误信息。
  • 针对边界情况提供了更清晰的错误提示:录音文件已被删除、本地引擎无法识别的录音格式(并提示前往设置切换为云端引擎)等情况。

改进

  • 失败的录音记录现在会随其余历史记录一起自动清理(受相同的 100 条上限约束),不会无限占用磁盘空间。
Original release on GitHub
v1.13.2

Recording reliability

  • Bound native microphone startup and shutdown waits so a stalled stop cannot indefinitely block subsequent dictations. The frontend allows 8 seconds around the backend's 5-second shutdown deadline.
  • Prevent a failed startup from displaying Listening. Restore WebKit fallback when native capture fails and device release is confirmed; report busy devices and startup timeouts more precisely.
  • Continue collecting Qwen chunked and Nemotron streaming results when recovery-WAV finalization fails.
  • Mark interrupted or incomplete recordings explicitly, preserve available text in History, and offer Copy instead of silently inserting a truncated result.
  • Add stable native error codes, final capture-integrity diagnostics, and cross-language timeout/error contract tests.

Validation and known limits

  • Automated checks: 196 Node tests passed; 164 Rust tests passed, 3 ignored.
  • Physical microphone-disconnection scenarios have not yet been verified on real hardware. Windows and Linux installers are CI-built, not real-device validated.
  • Interrupted cloud/translation audio remains memory-only; successfully recovered text is saved to History.
中文原文

录音可靠性

  • 为原生麦克风启动、停止设置等待期限,避免停止卡住后持续阻塞听写。前端停止期限为 8 秒,后端为 5 秒。
  • 启动失败时不再错误显示 Listening;确认设备已释放后恢复 WebKit 回退,并区分设备占用和启动超时提示。
  • 恢复 WAV 收尾失败时,仍继续收集 Qwen 分段和 Nemotron 流式转录结果。
  • 中断或不完整录音会明确标记,已有文本保留到历史并提供复制,不再静默自动插入截断结果。
  • 补充稳定原生错误码、最终完整性诊断和跨语言契约测试。

验证与已知限制

  • 自动测试:Node 196 项通过;Rust 164 项通过、3 项忽略。
  • 尚未完成真实麦克风中途断连验证。Windows/Linux 安装包由 CI 构建,未经真机验证。
  • 云端/翻译模式中断录音的音频仅保留在内存;成功恢复的文本会保存到历史。
Original release on GitHub
v1.13.1

Improvements

  • OpenAI transcription now uses a single, simplified model: GPT Transcribe ($0.0045/min), replacing the previous three options (GPT-4o Transcribe, GPT-4o Mini Transcribe, Whisper-1) in the model picker. It's cheaper than the two higher-priced models and produces cleaner Chinese punctuation (proper full-width ,。 and correct sentence segmentation) than GPT-4o Mini Transcribe.
  • The default OpenAI model is now GPT Transcribe everywhere the app picks a default (new installs, onboarding, and the empty-model fallback).
  • Whisper-1 is still used automatically for translate mode, since OpenAI's translation endpoint requires it — no action needed there.
  • Old history entries created with a retired model (GPT-4o Transcribe, GPT-4o Mini Transcribe, Whisper-1) still display their original model name correctly.
  • Updated in-app text to reflect that automatic Chinese punctuation seeding applies to Whisper models and is skipped for all GPT-family models (previously only mentioned GPT-4o).
中文原文

改进

  • OpenAI 转录现在只保留一个精简后的模型:GPT Transcribe(每分钟 $0.0045),替代此前的三个选项(GPT-4o Transcribe、GPT-4o Mini Transcribe、Whisper-1)。它比另外两个更贵的模型便宜,且中文标点效果优于 GPT-4o Mini Transcribe(输出正确的全角逗号句号,并能正确分句)。
  • 应用中所有默认选用 OpenAI 模型的地方(新安装、引导流程、模型为空时的兜底)现在都默认使用 GPT Transcribe。
  • 翻译模式仍会自动使用 Whisper-1,因为 OpenAI 的翻译接口只支持该模型——无需任何操作。
  • 使用已下线模型(GPT-4o Transcribe、GPT-4o Mini Transcribe、Whisper-1)生成的历史记录,仍会正确显示当初使用的模型名称。
  • 更新了应用内文案,说明中文标点自动填充功能适用于 Whisper 模型,且对所有 GPT 系列模型均不生效(此前文案只提到了 GPT-4o)。
Original release on GitHub
v1.13.0

Fixes

  • Fixed quiet/garbled audio at the start of dictation on macOS. The first ~3 seconds of every recording were captured about 32 dB too quiet, which could clip or lose the start of what you said. Audio capture on macOS now goes through the system's native CoreAudio path instead of the browser's microphone API, which doesn't have this problem — including on the very first dictation after launching the app.
  • Fixed a rare case where starting a new recording immediately after releasing the hotkey from a previous one could fail to start cleanly.
  • If native audio capture ever fails to start, SayType now falls back automatically to the previous capture method instead of losing the dictation.

Improvements

  • The microphone indicator in the macOS menu bar no longer stays lit between dictations — it now only lights up while you're actually recording.
  • Bluetooth headsets are no longer forced into low-quality call-audio (HFP) mode while dictating on macOS.

*(Windows and Linux capture is unchanged in this release.)*

中文原文

修复

  • 修复了 macOS 上听写开头约 3 秒录音偏轻的问题。 之前每次录音开头约 3 秒的音量会比正常低约 32 分贝,可能导致开头几个字被吞或识别错误。macOS 上的录音现已改为使用系统原生 CoreAudio 接口,而非浏览器麦克风接口,从根本上解决了此问题——包括应用启动后的第一次听写。
  • 修复了极少数情况下,松开热键后立即再次按下可能导致新录音无法正常开始的问题。
  • 若原生录音启动失败,SayType 现在会自动回退到旧的录音方式,不会导致本次听写丢失。

改进

  • macOS 菜单栏的麦克风指示灯不再在两次听写之间常亮,现在仅在实际录音时点亮。
  • 在 macOS 上听写时,蓝牙耳机不再被强制切换到低音质的通话(HFP)模式。

(本次发布未改动 Windows 和 Linux 的录音方式。)

Original release on GitHub

1.11 series

v1.11.2

What's new

  • Local transcription (Qwen3-ASR / Nemotron 3.5) is now recommended by default on all supported desktop platforms, not just Apple Silicon — the onboarding wizard, "recommended" tags, and engine switcher now steer every user toward the no-key local engine first, with Groq/OpenAI as optional cloud fallbacks.

Improvements

  • Long dictations using the local Qwen engine are noticeably faster: previously each chunk of a long recording paid a fresh model load, but now one model instance stays warm for the entire hotkey hold, so only the first chunk pays the load cost.

Fixes

  • Fixed a rare case where the local Qwen engine's speed optimization could leave a stray transcription process running in memory longer than intended when a recording was cancelled mid-decode; it's now reliably cleaned up.
中文原文

新功能

  • 本地转写引擎(Qwen3-ASR / Nemotron 3.5)现在在所有支持的桌面平台上都作为默认推荐,而不仅限于 Apple Silicon —— 引导向导、"推荐"标签和引擎切换器现在会优先引导所有用户使用无需密钥的本地引擎,Groq/OpenAI 作为可选的云端备选方案。

改进

  • 使用本地 Qwen 引擎进行长时间语音输入时速度明显提升:此前长录音的每个片段都要重新加载一次模型,现在同一次按住快捷键录音期间会复用同一个模型实例,只有第一个片段需要承担加载耗时。

修复

  • 修复了本地 Qwen 引擎速度优化中的一个小概率问题:录音在解码过程中被取消时,可能会导致一个多余的转写进程未被及时清理而占用内存;现在能够可靠地被清理。
Original release on GitHub
v1.11.1

Fixes

  • Fixed the input prompt window continuing to animate after it was hidden, which kept the renderer and GPU busy in the background even when no window was visible.

Improvements

  • The input prompt now respects your system's "reduce motion" setting — the breathing glow and insertion-failure pulse are disabled (the amber warning ring still shows, just without movement).
中文原文

修复

  • 修复了输入提示窗口在隐藏后仍在后台继续播放动画的问题,此前会导致渲染进程和 GPU 持续占用资源,即使窗口已不可见。

改进

  • 输入提示窗口现在会遵循系统的"减少动态效果"设置——呼吸光晕和插入失败的脉动动画会被关闭(警告色的边框提示仍会显示,只是不再有动画效果)。
Original release on GitHub
v1.11.0

What's new

  • Nemotron local transcription now runs on Windows (x86_64, CPU), not just Apple Silicon Macs.

Improvements

  • Nemotron's runtime is now downloaded directly from NVIDIA's official release and verified by checksum, instead of being bundled inside the app — this shrinks the installer and lets the runtime be updated independently of SayType.
  • Upgrading from an earlier version automatically cleans up the old bundled Nemotron runtime, freeing roughly 10 MB of disk space per machine.
中文原文

新增功能

  • 本地转写引擎 Nemotron 现已支持 Windows(x86_64,CPU),不再局限于 Apple Silicon Mac。

改进

  • Nemotron 的运行时现在会直接从 NVIDIA 官方发布渠道下载并校验哈希值,而不再内置于应用中,这减小了安装包体积,也让运行时可以独立于 SayType 版本进行更新。
  • 从旧版本升级时会自动清理原先内置的 Nemotron 运行时文件,为每台设备释放约 10 MB 的磁盘空间。
Original release on GitHub

1.10 series

v1.10.2

Fixes

  • Fixed a bug in local (offline) transcription where a worker process could occasionally hand back the *previous* dictation's text instead of the current one; on Windows this could crash the process outright. The app now detects this and re-runs the transcription cleanly.
  • Fixed local transcription failing to start for some users — a leftover OpenSSL dependency from the previous custom-built runtime shipped broken on Windows and could silently fail on macOS if Homebrew's openssl@3 wasn't installed. Local transcription now runs on upstream's official llama.cpp builds instead.
  • Fixed long dictations (recorded in chunks) reloading the local speech model between each chunk, which had reintroduced the slowdown chunked transcription was designed to avoid.
  • Fixed a case where releasing the dictation hotkey right as a chunk finished decoding could leave an unused ~1.1 GB local-model process running in the background.
  • Diagnostic logs for local transcription no longer contain any of your dictated text — only an anonymous fingerprint used to spot repeats, never the words themselves.

Improvements

  • Local transcription now starts loading its model as soon as you press the hotkey and releases it right after each dictation finishes, so no memory is held in the background between dictations while the model-load time still stays hidden behind your speech.
中文原文

修复

  • 修复本地(离线)转录中的一个问题:某个工作进程有时会返回上一次听写的文本而非本次内容;在 Windows 上这甚至可能导致程序崩溃。现在应用会检测到这种情况并干净地重新转录。
  • 修复了部分用户本地转录无法启动的问题——此前自建的运行时残留了一个 OpenSSL 依赖,在 Windows 上直接损坏,在未安装 Homebrew openssl@3 的 macOS 上也可能静默失败。本地转录现已改用官方 llama.cpp 发行版运行。
  • 修复长时间听写(分段录制)时每一段都重新加载本地语音模型的问题,此前这削弱了分段转录本应带来的速度优势。
  • 修复一个边界情况:在某个分段刚解码完成时松开听写快捷键,可能会在后台遗留一个未使用的约 1.1 GB 本地模型进程。
  • 本地转录的诊断日志不再包含任何听写内容本身,只保留一个匿名指纹用于识别重复内容。

改进

  • 本地转录现在会在按下快捷键时立即开始加载模型,并在每次听写完成后立即释放,这样在两次听写之间不会占用后台内存,同时模型加载耗时依然被你的语音时长所掩盖。
Original release on GitHub
v1.10.1

Fixes

  • Fixed local (offline) speech recognition failing to start on Windows with a "libssl-3-x64.dll was not found" error. The bundled runtime no longer depends on OpenSSL libraries that may not be present on a user's machine.
  • Fixed the same underlying issue on macOS, where the local ASR runtime silently depended on a Homebrew-installed OpenSSL library (/opt/homebrew/opt/openssl@3) that most users don't have — local transcription could fail to start without it.
  • Transcription quality and speed are unchanged; this release only removes a hidden dependency that could break local ASR on a clean install.
中文原文

修复

  • 修复了 Windows 上本地(离线)语音识别无法启动的问题,此前会报错提示找不到 "libssl-3-x64.dll"。内置的运行时不再依赖用户机器上可能缺失的 OpenSSL 库。
  • 修复了 macOS 上同样的隐患问题:本地语音识别运行时之前隐式依赖通过 Homebrew 安装的 OpenSSL 库(/opt/homebrew/opt/openssl@3),大多数用户并未安装该库,可能导致本地转写无法启动。
  • 转写质量与速度未受影响;本次更新仅移除了可能导致全新安装环境下本地语音识别失败的隐藏依赖。
Original release on GitHub

1.9 series

v1.9.2

Fixes

  • macOS: Switching to SayType with Cmd+Tab now restores the main window when all SayType windows are hidden.
  • Existing visible windows, including the recording prompt, are left undisturbed. Activations during the first three seconds after startup are ignored to preserve start-minimized behavior.
中文原文

修复

  • macOS: 所有 SayType 窗口隐藏时,通过 Cmd+Tab 切换回来会恢复主窗口。
  • 已有可见窗口(包括录音提示框)时不会额外弹出主窗口。启动后的前三秒忽略激活事件,以保留启动时最小化的行为。
Original release on GitHub
v1.9.1

More reliable dictation completion

  • Local Qwen chunked dictation and Nemotron streaming now finalize on key release without waiting for the recorder's stop callback. Late or duplicate callbacks cannot insert the same result twice.
  • Whole-clip dictation gets a longer recorder-finalization grace period, while stalled transcription stages have explicit deadlines and cancellation cleanup.

Better failure recovery

  • Failed-insertion and partial text are preserved for recovery, with acknowledged, idempotent History saves. Recovery cards auto-hide and no longer block later successful dictation or repeatedly display old text.
  • Late local recording data can be saved for manual retry even when the recorder's stop callback never arrives. Unacknowledged text remains in memory after its card is dismissed; quitting before successful persistence can still lose it.
  • Lifecycle diagnostics distinguish actual recorder callbacks from logical completion, without logging transcription text. Log storage is bounded to approximately 6 MB.

Validation includes automated regression tests, real Qwen/Metal smoke tests, and isolated WKWebView tests with synthetic audio and injected missing/late events. The original intermittent incident has not been naturally reproduced. Windows/Linux installers are built in CI; desktop recording/insertion on those systems has not been manually verified for this release.

中文原文

改善听写收尾可靠性

  • 本地 Qwen 分段听写和 Nemotron 流式听写在松开热键后直接收尾,不再等待录音器的 stop 回调;迟到或重复回调不会重复插入。
  • 整段听写获得更长的录音器收尾宽限期;转写各阶段增加超时与取消清理。

改善失败恢复

  • 插入失败及分段失败后已得到的文字可恢复,History 保存有明确确认并避免重复。恢复卡片会自动隐藏,不再阻挡后续成功听写或反复弹回旧文字。
  • 本地录音数据迟到时,即使 stop 回调缺失,也可保存供手动重试。尚未保存成功的文字在卡片关闭后仍保留在内存;保存持续失败时,退出应用仍会丢失这些内容。
  • 生命周期日志区分真实录音器回调与逻辑收尾,不记录转写正文;日志轮换总容量约 6 MB。

已覆盖自动化回归、真实 Qwen/Metal smoke,以及合成音频和缺失/迟到事件注入的隔离 WKWebView 测试。原始间歇性故障尚未自然复现。Windows/Linux 安装包由 CI 构建,本版未在这两个系统人工验证桌面录音与插入。

Original release on GitHub
v1.9.0

What's new

  • Local Qwen dictation now splits long recordings into chunks in real time while you're still speaking, so only the last little bit of audio needs to be processed after you release the hotkey. Multi-minute dictations that used to take tens of seconds after release now finish almost instantly, with the floating window showing already-finalized text while the rest is still being captured.
  • Qwen now starts warming up as soon as you begin recording, cutting the wait after you release the hotkey even further.
  • Settings now recommend the Qwen model and show expected latency for Nemotron, making it easier to pick the right local model.

Improvements

  • If live chunking can't be set up (e.g. unsupported audio capture), dictation automatically falls back to the previous whole-clip transcription instead of failing.
  • If one chunk fails to transcribe, the rest of your dictation is still delivered — you just get a small gap instead of losing the whole recording.
  • A failed history save can no longer cost you the transcribed text; the text you see typed and the saved history are now guaranteed to match.
中文原文

新功能

  • 本地 Qwen 听写现在会在你说话的同时,把长录音实时切分成小段进行转写,因此松开热键后只需处理最后一小段音频。多分钟的长录音不再需要等待整段解码,浮动窗口会在录音过程中就展示已经转写完成的文字,同时继续追加正在处理的部分。
  • Qwen 模型现在会在开始录音时就提前预热,进一步缩短松开热键后的等待时间。
  • 设置界面现在会推荐使用 Qwen 模型,并展示 Nemotron 的预期延迟,方便选择合适的本地模型。

改进

  • 如果无法启用实时分段(例如音频采集不受支持),听写会自动回退到之前的整段转写方式,而不是直接失败。
  • 如果某一段转写失败,其余部分仍会正常返回,只会在对应位置留下一小段空缺,而不会丢失整段听写内容。
  • 修复了历史记录保存失败可能导致文字丢失的问题:现在输入的文字与保存到历史记录中的内容始终保持一致。
Original release on GitHub

1.8 series

v1.8.9

What's new

  • Added a second local transcription engine: Nemotron 3.5 ASR Streaming, which runs entirely on-device on Apple Silicon and produces live, real-time transcription as you speak.
  • The local engine is no longer a single "Local" option — you can now pick Local · Nemotron 3.5 or Local · Qwen3-ASR independently, each with its own one-time download, in onboarding, the Home engine switcher, Settings, and the tray menu.
  • Nemotron is offered as the recommended default local engine; Qwen3-ASR remains available for batch-style transcription.

Improvements

  • Tuned Nemotron's streaming recognition profile for its trained 560 ms accuracy window, improving transcription accuracy.
  • Tray and Settings menus now show which specific local model is active (not just "Local"), and each engine's download prompt opens to the right model automatically.
  • Settings/tray now switch engines without ever landing on an unusable, undownloaded backend — attempting to select an engine whose model isn't downloaded opens its download panel instead.
中文原文

新增功能

  • 新增第二个本地转写引擎 Nemotron 3.5 ASR Streaming:完全在 Apple Silicon 本机运行,边说边实时显示转写结果。
  • 本地引擎不再只有单一的“本地”选项——现在可以在引导流程、主页引擎切换器、设置以及托盘菜单中,分别独立选择 本地 · Nemotron 3.5 或 本地 · Qwen3-ASR,两者各自单独下载。
  • Nemotron 被设为推荐的默认本地引擎;Qwen3-ASR 仍可用于偏批量的转写场景。

改进

  • 针对 Nemotron 训练时的 560 毫秒精度窗口调整了流式识别参数,提升了转写准确率。
  • 托盘和设置菜单现在会显示当前具体使用的本地模型(而不仅仅是“本地”),每个引擎的下载提示也会自动打开对应的模型面板。
  • 设置/托盘在切换引擎时不会再停留在尚未下载、无法使用的后端——尝试选择未下载模型的引擎时会自动打开下载面板。
Original release on GitHub
v1.8.8

Fixes

  • Fixed microphone-permission detection incorrectly reporting access as already granted before you ever approved it. Requesting the microphone now properly triggers the system permission prompt, with a link to open system settings if access needs to be enabled manually.
  • Cancelling a recording/transcription no longer risks cancelling an unrelated one that happens to be running at the same time — cancellation is now scoped to the specific recording session.
  • Hardened how settings are saved: concurrent updates (e.g. saving preferences, finishing onboarding, switching providers, editing the dictionary) can no longer silently overwrite each other's changes.
  • Fixed an edge case where toggling "launch at login" could leave the saved settings out of sync if applying the login-item change failed.
  • Improved recording-lifecycle handling to reduce edge-case glitches around starting/stopping dictation.
  • Local (on-device) transcription now automatically cleans up leftover legacy model files.
中文原文

修复

  • 修复了麦克风权限检测的问题:此前即便用户从未授权,也可能被错误地判定为"已授权"。现在请求麦克风权限会正确弹出系统授权提示,如需手动开启,也会提供跳转系统设置的入口。
  • 取消某次录音/转写时,不再有误伤同时进行的其他录音会话的风险——取消操作现在会精确定位到具体的录音会话。
  • 强化了设置保存机制:并发的多项更新(如保存偏好设置、完成新手引导、切换服务商、编辑自定义词典)不会再互相覆盖对方的修改。
  • 修复了一个边界情况:切换"开机自启"时,如果登录项设置失败,可能导致已保存的设置与实际状态不一致。
  • 改进了录音生命周期的处理,减少开始/结束录音时出现的边缘情况问题。
  • 本地(设备端)转写功能现在会自动清理遗留的旧版模型文件。
Original release on GitHub
v1.8.7

Fixes

  • Fixed local (offline) transcription failing on macOS with an unhelpful "resident llama-mtmd-cli did not reach its initial prompt" error. The bundled speech-recognition runtime was built with a path that only worked on the build machine, so it silently failed to load on user machines. It's now packaged correctly and verified to run standalone.
  • If local transcription's fast path still fails to start for some reason, SayType now falls back to its slower one-shot path instead of failing the dictation outright, and the real error is now recorded in History for diagnosis.
  • The app now detects when an already-installed local runtime is out of date and re-installs the corrected version automatically, so users who already hit this bug get fixed on update rather than staying stuck with the broken files.
中文原文

修复

  • 修复了 macOS 上本地(离线)转写失败的问题,此前会报出难以理解的 "resident llama-mtmd-cli did not reach its initial prompt" 错误。问题原因是内置的语音识别运行时使用了仅在构建机器上有效的路径,导致在用户设备上悄然加载失败;现已正确打包,并通过独立运行验证。
  • 如果本地转写的快速路径仍因故未能启动,SayType 现在会自动回退到较慢的单次处理模式,而不会直接判定本次录音失败,并会将真实错误记录到历史记录中以便排查。
  • 应用现在能检测到已安装的本地运行时是否为过期版本,并在更新时自动重新安装修正后的版本,因此此前已遇到该问题的用户升级后会自动修复,而不会继续停留在损坏的文件上。
Original release on GitHub
v1.8.6

Fixes

  • Fixed a bug in the local (on-device) speech-to-text mode on Apple Silicon Macs where, after the background transcription process stayed running between recordings, it could occasionally reuse leftover audio state from a previous dictation instead of fully resetting — which could cause incorrect or repeated text in a later transcription. The local ASR runtime for Apple Silicon has been updated to fully clear its audio/session state between recordings, so each dictation is transcribed independently and correctly.
中文原文

修复

  • 修复了在 Apple Silicon Mac 上使用本地(离线)语音转文字模式时的一个问题:常驻的后台转写进程在多次录音之间可能未完全重置内部音频状态,导致偶发地混入上一次录音的内容,从而产生错误或重复的文字。现已更新 Apple Silicon 平台使用的本地语音识别运行时,确保每次录音之间的状态被完全清空,让每次转写都是独立且准确的。
Original release on GitHub
v1.8.5

What's new

  • Settings is no longer a separate window — it's now a page inside the main window, organized into three tabs: Voice Input, Transcription, and App.
  • Settings → App has a new collapsible "Diagnostic logs" panel that shows the app's log file (size, last-modified time, and a "Copy all" button) to help troubleshoot issues.

Improvements

  • Recording can start faster when the focused app is slow to respond: the accessibility-position lookup now times out after 50ms instead of 250ms and falls back to positioning near the cursor, so a sluggish app adds much less delay before the recording prompt appears.
  • Startup timing (native and frontend phases of hold-to-record) is now logged internally, with a warning logged if starting recording takes longer than 500ms — this makes future "slow first word" reports easier to diagnose.
  • Settings now warns before discarding unsaved changes when navigating away, and shows a clearer "Saved" confirmation after saving.
中文原文

新增功能

  • 设置不再是独立窗口,现已整合进主窗口,作为一个页面呈现,分为三个标签页:语音输入、转写、应用。
  • "设置 → 应用" 新增可折叠的 "诊断日志" 面板,可查看应用日志文件(大小、最后修改时间),并提供"复制全部"按钮,便于排查问题。

改进

  • 当聚焦的应用响应变慢时,录音启动可以更快:辅助功能位置查询的超时时间从 250 毫秒缩短为 50 毫秒,超时后会回退到光标所在屏幕定位,减少因目标应用卡顿而导致录音提示框出现延迟的情况。
  • 现在会在内部记录按住说话的启动耗时(原生与前端各阶段),若启动录音耗时超过 500 毫秒会记录警告日志,便于日后排查"首字慢"的问题。
  • 设置页面在有未保存改动时离开会提示是否放弃改动,保存后也会显示更清晰的"已保存"提示。
Original release on GitHub
v1.8.3

Improvements

  • Local speech-to-text is noticeably faster: the on-device model now stays warm between dictations instead of reloading each time, cutting the delay before transcription starts.
  • The local model automatically refreshes right when you start dictating, so the first result after an idle period is more reliable.
  • Local transcription requests are now processed one at a time, avoiding overlapping requests that could previously cause errors or inconsistent results.
  • Small performance tuning to reduce unnecessary overhead during local inference.
  • Minor visual polish to the floating recording prompt overlay.
中文原文

改进

  • 本地语音转文字明显更快:本地模型现在会在两次听写之间保持“预热”状态,不再每次都重新加载,减少了开始转写前的等待时间。
  • 开始听写时会自动刷新本地模型,因此长时间空闲后首次识别的结果更加可靠。
  • 本地转写请求现在会串行处理,避免了此前并发请求可能导致的报错或结果不一致问题。
  • 对本地推理流程进行了性能调优,减少了不必要的开销。
  • 对录音提示悬浮窗的视觉细节进行了小幅优化。
Original release on GitHub
v1.8.2

Fixes

  • Fixed the live transcription preview bubble appearing visually behind the recording box, with its shadow bleeding over the text. The bubble now correctly reads as the front-most element while it's shown.
  • The preview window is now taller, so the streamed transcription text can show up to three lines (previously two) before scrolling.
中文原文

修复

  • 修复了实时转写预览气泡在视觉上被录音框遮挡、阴影渗透到文字上方的问题。显示预览时,气泡现在会正确地显示在最前层。
  • 预览窗口高度增加,转写文字最多可显示三行(此前为两行)后再滚动。
Original release on GitHub
v1.8.1

Fixes

  • Windows: local (offline) transcription no longer flashes a console window and briefly steals keyboard focus away from the app you're dictating into.
中文原文

修复

  • Windows:本地(离线)转写时不再弹出控制台窗口并短暂抢走输入焦点,不会再打断正在听写的目标应用。
Original release on GitHub
v1.8.0

What's new

  • On-device transcription is now much more resilient. If a local (on-device) transcription hangs mid-decode, SayType detects the stall, automatically retries it once, and preserves recording order so later clips don't jump ahead of a stuck one.
  • If a hung transcription still can't be recovered after the retry, the recording is no longer lost — it's saved to your history as a "pending" entry you can tap to retry at any time.

Improvements

  • Faster on-device transcription on Windows: an unnecessary warm-up pass before each transcription is now skipped, shaving noticeable time off every clip.

Fixes

  • Fixed a Windows-specific bug where voice input could fail to reach the app correctly due to an overly strict content-security policy that didn't recognize Windows' IPC transport, causing audio to be mis-encoded.
中文原文

新增功能

  • 本地(离线)转写现在更加可靠。 如果本地转写在解码过程中卡住,SayType 会检测到停滞并自动重试一次,同时保持录音的先后顺序,避免后面完成的片段抢先于卡住的片段。
  • 如果重试后仍无法恢复,录音不会再丢失——会作为“待处理”条目保存到历史记录中,你可以随时点击重新转写。

改进

  • Windows 上的本地转写速度提升:跳过了每次转写前不必要的预热步骤,明显缩短了每段录音的处理时间。

修复

  • 修复了 Windows 上语音输入可能因内容安全策略过于严格(未识别 Windows 的 IPC 传输方式)而无法正确送达应用、导致音频被错误编码的问题。
Original release on GitHub

1.7 series

v1.7.4

What's new

  • Added a new drag-and-drop helper that appears when SayType asks for Accessibility permission. Instead of hunting for SayType in Finder, you can now drag its icon straight from a small floating "cloud" into the System Settings permission list.

Improvements

  • Redesigned the drag helper's look: a soft, cloud-shaped window with a grounding shadow, replacing the earlier flat white card.
  • Closing the drag helper before granting permission no longer leaves the main window stuck on "Waiting for permission…" — the guide button now correctly reappears so you can try again.

Fixes

  • Fixed a hard black outline/ring that showed around the drag helper's cloud shape.
中文原文

新功能

  • 新增了一个拖拽授权小工具:在 SayType 请求辅助功能权限时,会弹出一朵浮动的小"云",你可以直接把图标从云朵拖入系统设置的权限列表,无需再去访达里找应用。

改进

  • 重新设计了拖拽小工具的外观:柔和的云朵形状搭配自然阴影,取代了之前的扁平白色卡片。
  • 在授权前关闭拖拽小工具后,主窗口不会再卡在"等待权限授予…"状态——引导按钮现在会正确恢复,方便你重新尝试。

修复

  • 修复了拖拽小工具云朵形状周围出现的一圈生硬黑色描边的问题。
Original release on GitHub
v1.7.3

Fixes

  • Fixed local (on-device) transcription crashing immediately on a fresh install. The app's downloader was dropping required library symlinks when unpacking the local speech-recognition engine, which caused it to abort on the very first transcription attempt. New downloads now extract correctly.
中文原文

修复

  • 修复了全新安装后本地(离线)转录立即崩溃的问题。此前应用在解压本地语音识别引擎时会遗漏必需的库文件符号链接,导致第一次转录就直接崩溃退出。现在新下载的文件可以正常解压并使用。
Original release on GitHub
v1.7.2

Improvements

  • The dictation prompt now appears on the screen you're actually working on, instead of always showing up on the primary monitor. On multi-monitor setups, it follows the app you're typing into (or the mouse pointer if that can't be determined), so it no longer feels like it pops up in a random spot.
  • Fixed the prompt occasionally flashing on the wrong screen for a split second when switching monitors.
  • The prompt's spacing from the bottom of the screen is now consistent across displays with different resolutions/scaling (e.g., Retina vs. standard external monitors), where before it could look closer to the edge on high-DPI screens.
中文原文

改进

  • 悬浮提示条现在会显示在你实际正在操作的屏幕上,而不再固定显示在主显示器上。在多显示器环境下,它会跟随你当前输入的应用所在屏幕(如果无法判断,则跟随鼠标指针位置),不再出现"随机跳出"的观感。
  • 修复了切换屏幕时,提示条偶尔会在离开的那块屏幕上闪现一下的问题。
  • 提示条与屏幕底部的间距现在在不同分辨率/缩放比例的显示器上保持一致(例如 Retina 屏与普通外接显示器),此前在高分屏上间距会显得更靠边。
Original release on GitHub
v1.7.1

What's new

  • Interrupted local-model downloads can now be discarded, not just resumed — no more being stuck with up to ~1 GB of leftover partial files with no way out but finishing the download.

Improvements

  • Notifications (toasts) now stack neatly in a column instead of overlapping when multiple appear close together.
  • The local-model download progress bar now matches the app's theme instead of showing the browser engine's default blue.

Fixes

  • Fixed a bug where a slow or failed transcription from a previous recording could interrupt and tear down an actively in-progress new recording — the app could stop listening or lose queued text mid-dictation. Transcriptions now only affect the UI/session they actually belong to.
中文原文

新增功能

  • 未完成的本地模型下载现在可以直接丢弃,不再只能"续传"——避免磁盘上留着最多约 1 GB 的未完成下载文件却无处可去的情况。

改进

  • 通知提示(toast)现在会整齐地纵向堆叠排列,而不是多条同时出现时相互重叠。
  • 本地模型下载进度条现在使用与应用主题一致的配色,不再是浏览器引擎默认的系统蓝色。

修复

  • 修复了一个问题:上一次录音的转写请求较慢或失败时,可能会打断并终止正在进行中的新一次录音,导致应用停止录音或丢失待插入的文字。现在转写结果只会影响它真正所属的那次录音会话。
Original release on GitHub
v1.7.0

Fixes

  • Fixed a rare race condition where two transcriptions finishing at the same time could silently drop an entry from your history.
  • Fixed "Launch at login" on macOS: if enabling/disabling it failed, the setting could get stuck out of sync and a later retry would be silently skipped.
  • Hardened API key handling so your Groq/OpenAI keys are only ever sent to the Settings window, never to other app windows.
中文原文

修复

  • 修复了一个偶发的竞态问题:两次转写几乎同时完成时,可能会导致某条历史记录被静默丢失。
  • 修复了 macOS 上「登录时启动」的问题:若开启/关闭该选项时操作失败,设置可能陷入不一致状态,导致后续重试被误判为「无变化」而被跳过。
  • 强化了 API key 的访问控制,确保你的 Groq/OpenAI key 只会发送给「设置」窗口,不会发给其他窗口。
Original release on GitHub

1.6 series

v1.6.1

Fixes

  • Fixed the live transcription preview bubble clipping the top line of text mid-letter when the text scrolled past two lines. The hidden top line now fades out smoothly instead of being cut off, making it clearer that there's more text above rather than looking like a UI glitch.
中文原文

修复

  • 修复了实时转写预览气泡在文本超过两行时,顶部文字被生硬截断(甚至截在字母中间)的问题。现在被遮挡的顶部文字会以渐隐效果消失,看起来更像是"上方还有内容"的提示,而不是界面显示错误。
Original release on GitHub
v1.6.0

What's new

  • Local (on-device) transcription now shows live progress: as the model decodes your recording, the transcript streams into the prompt window word-by-word instead of leaving you staring at a blank "Processing…" for up to ~30 seconds on longer clips.

Fixes

  • The transcription preview bubble was being invisibly clipped by its container and never actually appeared — for local *and* the final preview text alike. It's now positioned correctly and always visible, showing the most recent lines.
中文原文

新增功能

  • 本地(设备端)转录现在会显示实时进度:模型解码录音时,转录文本会逐字流式显示在输入提示窗口中,不再是较长录音时长达约 30 秒的空白"处理中…"等待。

修复

  • 转录预览气泡此前会被容器无声地裁剪,导致无论是本地转录过程还是最终预览文本都从未真正显示出来。现已修正定位,气泡始终可见,并展示最新的内容。
Original release on GitHub

1.5 series

v1.5.0

What's new

  • Local, on-device transcription (Apple Silicon Macs): SayType can now transcribe entirely on your Mac using a local Qwen3 model — audio never leaves your machine. On Apple Silicon it's recommended as the default engine; cloud (Groq/OpenAI) is still one click away.
  • Quick engine switching: Switch between Local, Groq, and OpenAI right from the menu bar tray (new "Engine" submenu) or from a new Engine card on the home screen — no need to open Settings.
  • Updated onboarding: On Apple Silicon, setup now leads with the local model (in-place download with progress) and folds the cloud options behind a toggle. The privacy explanation now leads with "audio never leaves this Mac."

Improvements

  • The home-screen engine switcher now lives in its own clearly labeled card instead of being buried inside the status card, with a short caption explaining what each engine means for your privacy (local vs. cloud with your key).
  • Picking "Local" before its files are downloaded now opens Settings directly to the download panel instead of silently failing.

Fixes

  • Settings no longer shows a stale (red) Accessibility permission status when first opened — it now refreshes automatically when the window comes to front or the permission changes, instead of only updating after clicking "check" manually.
  • The dictation hint bubble no longer briefly flashes an incorrect, hardcoded shortcut (and the English word "Alt" instead of macOS's "Option") before your actual configured shortcut loads.
中文原文

新功能

  • 本地离线转写(Apple Silicon Mac):SayType 现在可以完全在本机使用 Qwen3 模型进行语音转写,音频完全不离开你的 Mac。在 Apple Silicon 设备上,本地引擎会作为推荐的默认选项;云端(Groq/OpenAI)依然一键可切换。
  • 快速切换转写引擎:现在可以直接在菜单栏托盘(新增的"Engine"子菜单)或主页新增的引擎卡片中,在本地、Groq、OpenAI 之间切换,无需打开设置。
  • 引导流程更新:在 Apple Silicon 设备上,安装引导会优先展示本地模型(支持原地下载与进度显示),云端选项则折叠在切换按钮之后。隐私说明也改为优先强调"音频不会离开这台 Mac"。

改进

  • 主页的引擎切换器现在拥有独立、清晰标注的卡片,不再隐藏在状态卡片内部;每个引擎旁还附有简短说明,解释本地与云端各自的隐私含义。
  • 若本地模型文件尚未下载就选择"本地"引擎,现在会直接打开设置页的下载面板,而不是静默失败。

修复

  • 设置窗口首次打开时不再显示过期(红色)的辅助功能权限状态——窗口重新置于前台或权限状态变化时会自动刷新,不再需要手动点击"检查"按钮。
  • 听写提示气泡不再在加载真实快捷键之前,短暂闪现错误的、写死的快捷键提示(以及英文的 "Alt" 而非 macOS 上应显示的 "Option")。
Original release on GitHub

1.4 series

v1.4.0

What's new

  • On-device (local) transcription — SayType can now transcribe speech entirely on your Mac using the Qwen3-ASR model via llama.cpp, with no API key, account, or internet connection required. Manage the local model from Settings (download, progress, delete), see a model badge showing which engine is active, and switch between local and cloud transcription; translation still falls back to the cloud API when needed.
  • Automatic updates — SayType now checks for new versions in the background (once a day) and you can trigger a manual check from Settings. When an update is downloaded, restart from the tray menu to install it.
中文原文

新功能

  • 本地(离线)转写 — SayType 现在支持完全在 Mac 本地运行的语音转写,基于 Qwen3-ASR 模型(通过 llama.cpp),无需 API key、账号或联网。可在设置中管理本地模型(下载、进度显示、删除),界面会显示当前使用的引擎徽标,并支持在本地与云端转写之间切换;翻译功能在需要时仍会回退到云端 API。
  • 自动更新 — SayType 现在会在后台自动检查新版本(每天一次),也可以在设置中手动检查更新。更新下载完成后,可通过菜单栏图标重启应用以完成安装。
Original release on GitHub

1.3 series

v1.3.5

Nothing in this release is user-visible: it's all internal work — the design spec, implementation plan, and CI tooling for the pipeline that now auto-generates these bilingual release notes. No app behavior, features, or fixes changed for users in v1.3.5.

中文原文

本次发布没有面向用户可感知的变化:全部是内部工作——本发布说明自动生成流水线的设计文档、实现计划与 CI 工具。v1.3.5 中应用的功能、行为或修复均无变化。

Download the .dmg below to install. / 下载下方的 .dmg 安装。

Original release on GitHub
v1.3.4

Release notes are unavailable for this version. The original release and its downloads are still available on GitHub.

Original release on GitHub
v1.3.3

Release notes are unavailable for this version. The original release and its downloads are still available on GitHub.

Original release on GitHub

2025

Historical releases. These notes describe earlier versions of SayType and may not reflect the current app.

1.0 series

v1.0.67
  • Add gpt-4o-transcribe and gpt-4o-mini-transcribe models to OpenAI provider
  • Implement dynamic audio format selection (MP4/M4A preferred over WebM)
  • Pass actual recording MIME type from frontend to backend for proper file extension
  • Fix audio format mismatch that caused "Audio file might be corrupted" errors
  • Fix misleading "transcription failed" error when transcription succeeds but text insertion fails
  • Remove unreliable "Text insertion completed successfully" console log
  • Simplify status logic to avoid false claims about text insertion success
Original release on GitHub
v1.0.66

Release Highlights

🎉 New OpenAI Integration - Added OpenAI Whisper-1 as an alternative transcription provider 🎨 Improved Settings UI - Enhanced layout and better organization ⚡ Performance Optimizations - Service caching and code refactoring for faster response times 🏗️ Code Quality - Major refactoring for better maintainability and future extensibility

Original release on GitHub