Skip to content

SayIt v0.2.3

Latest

Choose a tag to compare

@crosswk crosswk released this 19 Oct 12:34

SayIt v0.2.3

Added

  • OpenAI-compatible services accept the standard OpenAI audio format. The chat-style endpoint
    used to send audio only the way Alibaba Cloud Bailian expects it, so gateways that follow the
    standard OpenAI format (Gemini, for example) answered with a 400. Both formats now work: auto
    detection tries them in turn, or you can pick one under "Protocol". Existing configurations keep
    their current request format.
  • AI cleanup supports OpenRouter. It can share one key with speech recognition. The default
    model is DeepSeek V4.1 Flash, and leaving the address empty uses the official endpoint. In the
    English UI, new AI services default to OpenRouter.
  • Selection edits can use a separate AI service. Pick one under AI cleanup → Context awareness,
    for example a stronger model for translating or rewriting; regular dictation keeps using the
    current AI service. In server mode, selection edits that use a separate service are sent from
    this computer.

Changed

  • Context awareness has moved to the AI cleanup page. It only works while AI cleanup is on, so
    it now sits next to that switch instead of in the general settings.
  • Tidier settings. Extra explanations on pages and cards now sit behind the ⓘ next to each
    title; switches are always on the right; cleanup presets show a one-line description instead of
    the start of their prompt; "Per-app prompt rules" is now "Per-app rules".

Fixed

  • Long recordings failed with local models, and local recognition stopped working afterwards.
    A long recording was passed to the model in one piece. On integrated graphics this could exceed
    the time Windows allows the GPU, the GPU was reset, and only restarting SayIt helped. Recordings
    are now split at pauses into pieces of up to 30 seconds, which also makes long recordings faster.
    If the GPU still fails, SayIt switches to the CPU until it is restarted. In local mode, the wait
    for a live recording's result now grows with its length, up to 3 minutes (it used to be at most
    45 seconds).
  • Inserted text showed up in the history of clipboard managers such as Ditto. SayIt only set
    the marker that Windows clipboard history checks. It now also sets the one third-party clipboard
    managers commonly use.
  • Re-transcribing on the History page failed without any message. The reason now appears under
    the record, including when the audio file has already been cleaned up.
  • Date groups in History and Favorites were out of order. After a new month began, the newer
    month could appear further down, and the English UI sorted months alphabetically.
  • Long Qwen Omni recordings (about a minute and a half or more) failed to transcribe. The whole
    recording was sent at once, which on a fast connection exceeded the realtime endpoint's upload
    limit and the server closed the connection. Recordings under a minute are still sent at once;
    longer ones send their second half more slowly (about half a second extra for 99 seconds, about
    2 seconds for 3 minutes), and if the limit is still hit, SayIt retries once at a slower pace.
  • Idle CPU usage crept up after a few dictations. Audio processing for the ready tone kept
    running in the background until you quit. It now pauses after each tone.
  • Images and files on the clipboard were lost after inserting text. Only text used to be
    restored. The whole clipboard is now put back (with "Restore the clipboard after inserting" on).
  • Hotkeys occasionally stopped working until SayIt was restarted. Windows can quietly remove
    the keyboard hook when the system is busy; SayIt now notices and reinstalls it. An error while a
    recording was starting also no longer leaves every later hotkey dead.
  • Voice input stopped working when the main window's page crashed or failed to load. The page
    now reloads, or the window is recreated, automatically; if that also fails, a message asks you to
    restart SayIt.
  • SayIt would not start if its local database was damaged. The damaged file is now renamed and
    kept, SayIt starts with a fresh database, and a message explains what happened.
  • Total dictation time under Usage did not match the home page.

Improved

  • Lower background usage. The mouse is only watched when a hotkey uses a mouse button, window
    switches no longer trigger extra work, server mode sends audio in batches, and the overlay
    refreshes about half as often while recording.
  • Less memory used while the main window is in the tray.
  • Long recordings and diagnostics packages are handled faster: audio and screenshots are passed
    between the interface and the background service directly instead of being re-encoded.
  • Interrupted update downloads resume the next time SayIt checks, and updates are no longer
    installed while Windows is shutting down.
  • Settings that depend on AI cleanup say when they have no effect. With AI cleanup off, context
    awareness and "Send hotwords to the AI prompt" are greyed out, and the services on the AI
    providers page are marked "Not in use". The same mark appears in server mode while the server is
    doing the cleanup.
  • WebDAV backups that cannot reach the server now say so plainly, with the original error under
    "Details".

Security

  • HTTPS certificates are checked again. Self-signed certificates are accepted only for a server
    address you entered yourself.
  • Update installers are downloaded only from the same origin as the update server, and their
    location and hash are checked before installing.
  • Importing a backup no longer overwrites settings that belong to this computer, and audio in a
    backup must be .wav files.
  • File operations are limited to their own folders, and a Content Security Policy is enabled.

简体中文

新增

  • 「OpenAI 兼容服务」支持标准 OpenAI 音频格式:对话式接口原先只按阿里云百炼的写法发送音频,Gemini 等按标准 OpenAI 格式实现的网关会报 400。现在两种格式都支持,自动识别时依次尝试,也可在「接口协议」里手动选择。已有配置的请求格式不变。
  • AI 整理支持 OpenRouter:与语音识别可以共用同一把 key,默认模型 DeepSeek V4.1 Flash,地址留空即使用官方地址。英文界面新建 AI 服务时默认选 OpenRouter。
  • 选区编辑可以单独选一个 AI 服务:在「AI 整理 → 上下文感知」里选,适合给翻译、改写换一个更强的模型;平时口述仍用当前的 AI 服务。服务器模式下,选了单独服务的选区编辑改由本机调用。

变更

  • 「上下文感知」移到「AI 整理」页:它只在开启 AI 整理时生效,原先放在设置的通用页里。
  • 设置界面更简洁:页面和卡片的补充说明收进标题旁的 ⓘ,鼠标移上去即可查看;开关统一放在右侧;润色模式显示一句用途说明,不再显示提示词原文;「应用 Prompt 规则」改名为「应用规则」。

修复

  • 本地模型识别长录音失败,之后本地识别全部失效:长录音原先整段一次交给模型,在集成显卡上可能超过系统给显卡的时限,显卡被重置,之后只能重启 SayIt。现在按停顿切成 30 秒以内的片段逐段识别,长录音也更快;万一显卡出错,本次运行改用 CPU 继续识别。实时录音在本地模式下的等待时间也随录音时长放宽,最长 3 分钟,原来最多 45 秒。
  • 插入的文字进入 Ditto 等剪贴板管理器的历史:原先只带了 Windows 剪贴板历史认的标记,现在补上第三方剪贴板管理器常用的标记。
  • 历史页重新识别失败时没有任何提示:现在在这条记录下面显示失败原因;录音文件已被清理时也会说明。
  • 历史记录和收藏的日期分组顺序错乱:跨月后较新的月份排到了后面,英文界面按月份名的字母排序。
  • 千问 Omni 录音较长时(一分半左右以上)转写失败:录完后整段音频一口气发出,网速较快时会超过千问实时接口的上传速度限制,连接被服务端断开。现在一分钟以内的录音照旧立刻发送,更长的录音后半段放慢发送,99 秒的录音约多等半秒,3 分钟约多等 2 秒。万一仍被限速,会自动放慢重发一次。
  • 用过几次后,空闲时的 CPU 占用升高:录音就绪提示音播完后,音频处理一直在后台运行,直到退出。现在每次播完即暂停。
  • 口述插入文字后,剪贴板里原有的图片、文件丢失:此前只还原文字。现在插入后完整还原剪贴板(需开启「插入文本后保护剪贴板」)。
  • 热键偶尔全部失灵,只能重启 SayIt:系统在卡顿时可能悄悄摘掉键盘监听,现在会检测并自动重新装上;开始录音时某一步出错,也不会再让之后的热键全部失效。
  • 主窗口页面崩溃或没能创建时,语音输入整体失灵:现在会自动重新加载或重建主窗口,仍然失败时弹窗提示重启。
  • 本地数据库损坏时无法启动:现在会把损坏的数据库改名保留,换一个新库启动,并弹窗说明。
  • 「使用统计」的累计口述时长与首页不一致。

优化

  • 后台占用更低:只有热键绑定了鼠标键时才监听鼠标;切换窗口时不再做多余的采集;服务器模式的音频合批发送;录音时悬浮窗刷新次数减少约一半。
  • 主窗口收在托盘时占用更少内存。
  • 长录音和诊断包处理更快:录音和截图在界面与后台之间直接传递,不再来回转码。
  • 更新下载中断后,下次可以接着下载;关机时不再安装更新。
  • AI 整理关闭时,依赖它的设置标明不生效:上下文感知、热词注入提示词变灰,「AI 供应商」页的服务列表标注「当前未生效」;服务器模式下由服务器整理时同样标注。
  • WebDAV 备份连不上服务器时,显示明确的原因,原始报错可在「详情」里查看。

安全

  • 恢复 HTTPS 证书校验:自签名证书只对你自己填写的服务器地址放行。
  • 更新安装包只从更新服务器同源地址下载,安装前核对文件位置与哈希。
  • 导入备份不再覆盖本机专属的设置;备份里的录音只接受 .wav 文件。
  • 文件相关操作只能访问各自对应的目录,并启用内容安全策略(CSP)。