Skip to content

SayIt v0.2.2

Choose a tag to compare

@crosswk crosswk released this 24 Sep 02:52

SayIt v0.2.2

Added

  • Qwen Audio 3.1 streaming recognition. The newest generation: text appears as you speak, with
    slightly lower latency than 3.0. It is now the recommended Qwen option; Audio 3.0 stays available
    as a fallback.
  • qwen3.8-omni-flash-realtime. Same generation and same results as qwen3.8-omni-flash, but on
    the official realtime endpoint, so the address cannot be changed. The two are billed
    differently; check the official pricing before relying on either long term.
  • An update reminder once a new version has downloaded. A small card appears at the bottom of
    the screen, and clicking "Update" installs the new version and reopens SayIt. It shows even when
    the main window is minimized to the tray, never appears while you are recording or transcribing,
    and once dismissed stays away for the rest of the session. You can still update from the About
    page.
  • Choose which GPU local recognition runs on. Useful when one card's memory is already taken by
    another program. The option lives under Local mode → Compute backend and only appears on
    machines with two or more GPUs; changing it reloads the model straight away, no restart needed.
  • Self-hosted servers can use reasoning models for AI cleanup. config.yaml gains
    temperature and reasoning_effort; setting temperature to null omits the field entirely.

Changed

  • Qwen drops qwen3-omni-flash and qwen-omni-turbo, which the provider has marked for
    retirement. Configurations using either are switched to qwen3.5-omni-flash automatically.
  • The card shown when text cannot be inserted no longer disappears on its own. It used to close
    after 10 seconds, often before you had copied anything. Press Ctrl + C to copy, and Esc or the
    close button to dismiss it.

Fixed

  • Hotwords had no effect on some services, and nothing said so. Groq, OpenRouter, Xiaomi MiMo,
    OpenAI file transcription, and the file-transcription protocol of the OpenAI-compatible service
    never send hotwords. The Hotwords page now tells you whether your current setup sends them and
    suggests an alternative when it does not, and each service card says the same. The documentation
    no longer claims that local Qwen3-ASR supports hotwords.
  • Inserting into Everything, Notepad and similar programs sometimes reported success without
    writing anything.
    SayIt now checks that the text box actually changed, retries or switches to
    another insertion method if it did not, and falls back to a copyable card if that still fails.
  • With live captions on, the overlay flickered every few seconds while you were silent.
  • After a recognition timeout the overlay vanished, and a late result would still be inserted.
    It now shows "Timed out, still waiting", and Esc gives up on it; once you do, a
    late result goes to History only and is not inserted.
  • When text insertion stalled, the overlay closed and the recognized text was nowhere to be
    seen.
    A card now shows the text and notes that SayIt could not confirm whether it was written.
  • A session the server ended without a result was reported as "No speech detected". It is now
    reported as "Recognition ended without a result".
  • Re-running recognition from History handled AI cleanup incorrectly. Local and cloud API modes
    ignored the "skip AI cleanup for short recordings" setting, and cloud API mode never ran AI
    cleanup when the provider was Ollama.
  • The microphone list showed the same device three times. The extra "Default - …" and
    "Communications - …" entries Windows reports are now hidden. If one of them was selected, it
    becomes "System default", which uses the same device.
  • The microphone field in Settings went blank when the selected microphone was unplugged. It
    now says the previously selected microphone is unavailable.
  • On Chinese Windows, the microphone name in the overlay kept its "默认值 - " prefix.

Improved

  • Recognition failures now state the reason in the overlay, such as "Connection dropped" or
    "Timed out waiting for a result", and remind you that the recording is saved and can be
    re-recognized from History.
  • A clearer message when nothing was recognized. If audio came through but produced no text,
    SayIt now says "Nothing was recognized" instead of always saying "No speech detected".
  • "System default" now names the microphone it resolves to, and long microphone names show in
    full on hover.
  • The Qwen Audio hotword limit is described accurately. The 100-entry cap is SayIt's own
    per-request limit, not a Qwen restriction, and SayIt now tells you how many entries go unsent
    when you exceed it.
  • Clicking Update during a recording or transcription asks you to wait, instead of interrupting
    it.
  • The log now records why hotwords were not sent or AI cleanup did not run, which makes
    inaccurate results easier to diagnose. Only lengths are logged, never recognized text.

简体中文

新增

  • 千问新增 Audio 3.1 流式识别:最新一代,边说边出字,延迟比 3.0 略低,现为千问的首选;Audio 3.0 保留作为备用。
  • 千问新增 qwen3.8-omni-flash-realtime:与 qwen3.8-omni-flash 同代、识别结果相同,走官方实时接口,接口地址不可修改。两者计费方式不同,长期使用前请先查看官网价格。
  • 新版本下载完成后弹出更新提醒:屏幕底部显示一张小卡片,点「更新」即安装并重新打开,主窗口收在托盘里也能看到。录音、转写期间不会弹出;关闭后本次运行不再提醒,仍可在「关于」页更新。
  • 多显卡电脑可以指定本地识别使用的显卡:某张显卡的显存被其他程序占满时,可改用另一张。设置位于「本地模式 → 计算后端」,仅在检测到两张及以上显卡时显示;修改后立即重新加载模型,无需重启。
  • 自建服务端的 AI 整理可接入推理模型:config.yaml 新增 temperature 与 reasoning_effort 两项,temperature 设为 null 即不发送该字段。

变更

  • 千问移除 qwen3-omni-flash 与 qwen-omni-turbo:官方已标注即将下线。正在使用这两个模型的配置会自动切换到 qwen3.5-omni-flash。
  • 插不进文字时弹出的卡片不再自动消失:此前 10 秒后自动收起,来不及复制就没了。现在按 Ctrl + C 即可复制,按 Esc 或点关闭收起。

修复

  • 部分识别服务配了热词却不生效,界面上也没有说明:Groq、OpenRouter、小米 MiMo、OpenAI 文件转写,以及「OpenAI 兼容服务」的文件转写接口都不发送热词。现在热词页会说明当前配置是否发送热词,不发送时给出替代办法;各服务卡片上也已注明。文档中「本地 Qwen3-ASR 支持热词」的说法同时更正。
  • 往 Everything、记事本等程序插入文字,偶尔提示成功却没有写入:现在插入后会核对输入框内容是否真的变化,未变化时自动重试或改用其他方式写入,仍失败则弹出卡片供复制。
  • 开启实时字幕后长时间不说话,悬浮窗每隔几秒闪一下。
  • 等待识别超时后悬浮窗直接消失,迟到的结果还会自动插入:现在显示「已超时,仍在等结果」,按 Esc 可以放弃;放弃后迟到的结果只存入历史记录,不再插入。
  • 文字插入卡住时悬浮窗直接收起,看不到识别结果:现在会弹出卡片显示识别出的文字,并提示无法确认是否已写入。
  • 服务端结束会话却没有返回结果时,提示为「未检测到有效声音」:现在提示「识别没有正常结束」。
  • 历史记录里「重新识别」时 AI 整理不正确:本地模式与云 API 模式会忽略「短录音不做 AI 整理」的设置;云 API 模式使用 Ollama 时,不会进行 AI 整理。
  • 设置里的麦克风列表把同一设备列成三项:Windows 额外报出的「默认值 - ⋯」「通信设备 - ⋯」已隐藏。原先选中这类条目的,会自动改为「系统默认」,实际使用的设备不变。
  • 选中的麦克风被拔掉后,设置里这一栏显示为空:现在会提示「上次选的麦克风当前不可用」。
  • 中文系统下,悬浮窗显示的麦克风名带有「默认值 - 」前缀。

优化

  • 识别失败时,悬浮窗写明原因:例如「连接已断开」「等待识别结果超时」,并提示录音已保存,可在历史记录里重新识别。
  • 没有识别出文字时,提示更准确:收到了声音但没有识别出文字时,提示「没有识别出文字」,不再一律显示「未检测到有效声音」。
  • 「系统默认」后面注明实际使用的麦克风;麦克风名称过长时,鼠标悬停可查看完整名称。
  • 千问 Audio 热词上限的说明更准确:100 条是 SayIt 每次发送的上限,并非千问接口的限制;超出时会提示有多少条未发送。
  • 录音或转写进行中点击更新,会提示稍后再试,不会中断当前录音。
  • 日志会记录热词未发送、AI 未整理的原因,便于排查识别不准的问题。日志只记录长度,不记录识别内容。