Skip to content

Releases: mzhu2015/voiceinput-releases

VoiceInput 1.3.7 (Mac, Apple Silicon)

Choose a tag to compare

@mzhu2015 mzhu2015 released this 27 Sep 16:14

几个人,让整段录音自己说。说话人的个数不再靠一个写死的距离来猜。

1.3.7 — 几个人,让整段录音自己说

上一版把聚类阈值调高,于是走到了另一头:明明是不同的人,却被认成同一个。这一版换掉了方法本身。

为什么阈值注定不行。 实测同一个人的两段声音中位距离 0.31(九成在 0.61 以内),不同人中位 0.99(但有一成低到 0.48)——两条分布是重叠的,任何一刀切都会切错一部分。更麻烦的是误差随时长累积:同一个数值在 47 秒的片段里给出 4 个人,在一小时的录音里给出 16 个。

现在改成问「几个人最能解释这段录音」:把 2 到 8 个人每种可能都分一遍,给每种打分(每段声音离自己这组有多近、离最近的别组有多远),取分最高的,最后再把中心近到不可能是两个人的组合并。比较的都是整组和组中心——很多段的平均值——所以答案不再随录音长度漂移。有一条测试专门盯着这点:同样的声音,录音拉长 18 倍,答案必须不变。

实测,一套参数、五段真实录音:

录音 结果
47 秒电视剧片段 4 人(9/9/5/4 秒)
163 秒(说话+背景电视) 7 人
13 秒单人说话 1 人
15 分钟对谈 2 人(335 秒 / 306 秒)
1 小时对谈 2 人(2329 秒 / 994 秒),整个说话人流程 2 分 57 秒

录完就有字的会议以前根本走不到这一步。 实时识别是一段一段当场判定的,判错了没机会改,而这种会议不会再跑离线那一遍。现在停止录音时会拿整场会议重新核对一遍说话人:不重读音频、不重新识别一个字,耗时 0.01 秒。实测那段一小时录音从 3 个人收敛成 2 个(只动了 260 行里的 5 行),那段 47 秒电视剧从「1 个人」变成 3 个人。

另外

  • 「会议里有几个人」现在只作用于你按下的那一次「重新分析」。以前它会被存下来,之后每一场会议都按这个人数走——选过一次「2 人」,下周四个人的会也会被压成两个人。
  • 一个只读的录音(从备份恢复的、放在共享盘上的)以前会被当成「打不开」,其实只是修文件头时申请了写权限。现在读就只是读。

Windows 同版本(1.3.4)一起发布,同样的判定、同样的测量。

VoiceInput 1.3.6 (Mac, Apple Silicon)

Choose a tag to compare

@mzhu2015 mzhu2015 released this 26 Sep 20:08

两个人就是两个人。会议里的说话人识别这次是拿真实录音测出来修的。

1.3.6 — 两个人就是两个人

会议里两个人被认成六个、甚至三十七个。拿真实录音测出三个原因,一起修了:

  • 换了声纹模型:原来用的是中文选项里最弱的一个(只在单一数据集上训练,且是纯中文),换成中英双语训练的 CAM++。同一段音频、同样设置,实时识别从 6 个人变成 2 个人。模型还小了 30%、快了 2.3 倍。首次使用会自动下载(28 MB)。
  • 聚类阈值原来写死 0.5,那是示例代码的默认值,从没针对真实会议调过——实测它会把一小时的会拆成 80 个人。
  • 「剔除路人甲」的规则要求「少于 3 秒」,而这个 3 秒不随录音长度变化——一小时会议里那些十几二十秒的碎片因此全都漏网。现在按录音时长缩放。

实测:一段 15 分钟的录音从 37 个人变成 4 个,一小时那段从 147 个变成 3 个,而且快了两倍多。

如果你知道会议里有几个人,在看板上「重新分析」旁边直接选,它就不会再自己猜——这是整条链路里最容易出错的一步。

另外修好了「录音能看见却放不出来、也没有文字」:WAV 的长度信息只有在文件正常关闭时才写入,App 录音中途被结束就会留下一个自称长度为零的文件,播放器和转写都因此读不到东西。现在会自动修复——音频本来就一直都在。

1.3.5 — 断电也不会丢掉整场会议的文字

  • 文字改成边识别边写盘并强制落盘,断电只丢最后那一段(以前是全部攒在内存里,按停止才落盘)。
  • 重启后这种会议带着已有文字直接恢复成可读状态。
  • 录音每 10 秒强制刷一次盘;麦克风中途断掉会在浮窗里告诉你。

1.3.2–1.3.4 — 识别语言、浮窗、排版

  • 识别默认直接指定中文(照样认得夹在里面的英文),不再由模型自己猜语言而把中文猜成日文。
  • 两个浮窗其实一直拖不动(SwiftUI 视图不接受窗口拖拽),现在能拖了,位置也会记住;展开的录音浮窗不会再长到屏幕外。
  • 会议记录有了固定的阅读宽度、更大的字号和行距,时间戳单独成列。

1.3.0–1.3.1 — 常驻小浮窗

  • 一个按钮开始听写,一个按钮开始录会议;点它不会抢走你的光标。
  • 会议看板上的操作全部直接可见,不再藏在「⋯」里。

1.2.0 — 会议边录边出字

  • 录音时文字实时出现并当场分出说话人;结束后几乎立刻就能读。

Apple Silicon 专用,macOS 14 以上。已签名并通过 Apple 公证。识别与会议转写全程在本机完成;只有「检查更新」会联网。

SHA-256

  • VoiceInput-apple-silicon.dmg: f29408156a26220330c3c0e0ec0162bce32d093bd0e3d2f416de2cb7bcac9ae1

VoiceInput 1.3.4 (Mac, Apple Silicon)

Choose a tag to compare

@mzhu2015 mzhu2015 released this 25 Sep 18:15

两个浮窗其实一直拖不动;展开的录音浮窗会长到屏幕外面。都修了。

1.3.4 — 浮窗可以拖了,展开也不会跑出屏幕

  • 录音浮窗和常驻浮窗其实一直拖不动。窗口是按「可以拖背景移动」配置的,但这个设置要问指针底下那个视图愿不愿意——而 SwiftUI 的视图一律回答不愿意,所以拖拽从来没生效过,「记住位置」的代码也从来没被触发过。现在两个浮窗都能拖了,位置也会记住。
  • 录音浮窗展开时会变宽 200 点。它默认开在右下角,于是一展开就直接长到屏幕外面,按钮都点不到了。现在展开会自动往回缩进屏幕内。
  • 听写浮窗一直能拖,因为它是用 AppKit 原生视图搭的——正是这一点把上面那个问题遮住了很久。

1.3.3 — 录音浮窗在深色下看得清了

  • 面板底色不再被「烤死」在第一次绘制时的明暗里。
  • 收起状态下的实时文字不再被拦腰切断:现在只显示最新的一句,一句有多高就占多高。

1.3.2 — 不再把中文猜成日文

  • 识别默认直接指定中文(照样认得夹在里面的英文),不再由模型自己猜语言而把中文猜成日文。设置里可改。
  • 没下载过说话人模型的机器,现在会一边录一边下,下完就开始出实时文字。
  • 会议记录有了固定的阅读宽度、更大的字号和行距,时间戳单独成列。

1.3.0–1.3.1 — 常驻小浮窗

  • 一个按钮开始听写,一个按钮开始录会议;点它不会抢走你的光标。
  • 会议看板上的操作全部直接可见,不再藏在「⋯」里。

1.2.0 — 会议边录边出字

  • 录音时文字实时出现并当场分出说话人;结束后几乎立刻就能读。
  • 每天检查一次新版本,可以关掉。

Apple Silicon 专用,macOS 14 以上。已签名并通过 Apple 公证。识别与会议转写全程在本机完成;只有「检查更新」会联网。

SHA-256

  • VoiceInput-apple-silicon.dmg: bc8c5615c9bb73d44c366c90837aac569d6b13c02614e15770b137028d925d6b

VoiceInput 1.3.3 (Mac, Apple Silicon)

Choose a tag to compare

@mzhu2015 mzhu2015 released this 25 Sep 18:00

录音浮窗在深色模式下终于看得清了。

1.3.3 — 录音浮窗在深色下看得清了

  • 录音时那个小浮窗在深色模式下发灰、字看不清:面板的底色只在第一次画的时候定下来,之后不再跟随系统明暗——和之前常驻浮窗那个问题是同一个原因,这次把录音浮窗也修了。
  • 收起状态下的实时文字不再被拦腰切断。之前是一个固定高度的滚动框硬塞两行字,行高不够就把字切一半;现在只显示最新的一句,一句有多高就占多高。
  • 展开状态的实时文字框更高了,说话人改成带颜色圆点的小标签,正文字号和行距都放大了。

1.3.2 — 不再把中文猜成日文

  • 识别模型之前是「自动判断语言」,短句或嘈杂的地方会被猜成日文。现在默认直接告诉它是中文(照样认得夹在里面的英文),设置里可以改回自动或英文。
  • 会议录音时,如果这台电脑还没下载过说话人模型,以前是悄悄地不出实时文字。现在会一边录一边把模型下下来,下完就开始出字。
  • 会议记录重新排过版:正文有了固定的阅读宽度、更大的字号和行距,时间戳单独成列。

1.3.1 — 深色模式下的浮窗,和看得见的按钮

  • 修好了深色模式下浮窗上「会议」按钮变成一个大白框的问题。
  • 会议看板上的操作不再藏在「⋯」里:拷贝、导出、保存录音、重新分析、在访达中显示、删除,全部直接可见。

1.3.0 — 常驻小浮窗,点一下就开始

  • 屏幕上可以常驻一个小浮窗:一个按钮开始听写,一个按钮开始录会议。点它不会抢走你的光标。
  • 修好了会议录音「录着录着就不出字」和「同一个人被越分越多」的问题。

1.2.0 — 会议边录边出字,停下就能看

  • 录音时文字实时出现,并当场分出说话人一、说话人二;结束后几乎立刻就能读。
  • 每天检查一次新版本,装好后告诉你这一版做了什么。

1.1.0 — 会议录音,自动分出说话人

  • 菜单栏「录一场会议…」:录音、分说话人、逐段转写,全部在本机完成。
  • 微信这类不支持辅助功能的 App 现在也能直接写入。

Apple Silicon 专用,macOS 14 以上。已用 Developer ID 签名并通过 Apple 公证。识别与会议转写全程在本机完成;只有「检查更新」会联网,可以在设置里关掉。

会议录音请自行确认所在州的录音同意法规。

SHA-256

  • VoiceInput-apple-silicon.dmg: bb0e952d9b2c727630e4f137e495866e3d3158f9d534177520fdd49de40a5933

VoiceInput 1.3.2 (Mac, Apple Silicon)

Choose a tag to compare

@mzhu2015 mzhu2015 released this 25 Sep 03:42

常驻浮窗在深色模式下终于看得见了;识别不再把中文猜成日文;会议记录重新排过版。

上一个公开版本是 1.0.3,中间跳过了六个版本 —— App 内「更新日志」里有完整的一份。

1.3.2 — 不再把中文猜成日文

  • 识别模型之前是「自动判断语言」,短句或嘈杂的地方会被猜成日文——一句普通的中文里蹦出「うんうん」。现在默认直接告诉它是中文(照样认得夹在里面的英文),设置里可以改回自动或英文。
  • 实测:同一段录音,指定中文之后日文那行消失了,中英混说的识别反而更准(「Anthropic」自动模式会写成「anropic」),而且更快。
  • 会议录音时,如果这台电脑还没下载过说话人模型,以前是悄悄地不出实时文字。现在会一边录一边把模型下下来,下完就开始出字,浮窗里也会告诉你正在做什么。
  • 会议记录重新排过版:正文有了固定的阅读宽度(一行不再横跨整个窗口)、更大的字号和行距,时间戳单独成列。

1.3.1 — 深色模式下的浮窗,和看得见的按钮

  • 修好了深色模式下浮窗上「会议」按钮变成一个大白框的问题。
  • 会议看板上的操作不再藏在「⋯」里:拷贝、导出、保存录音、重新分析、在访达中显示、删除,全部直接可见。
  • 删除会议现在会先问一次。

1.3.0 — 常驻小浮窗,点一下就开始

  • 屏幕上可以常驻一个小浮窗:一个按钮开始听写,一个按钮开始录会议。点它不会抢走你的光标。
  • 开始录会议后浮窗就地展开成实时记录面板,录完自动打开会议库。
  • 修好了会议录音「录着录着就不出字」和「同一个人被越分越多」的问题。

1.2.0 — 会议边录边出字,停下就能看

  • 录音时文字实时出现,并当场分出说话人一、说话人二。
  • 结束录音后几乎立刻就能读——一小时的会不再需要等十几分钟。
  • 整理好的记录可以拷贝全文、拷贝纯文字、导出 Markdown、保存或发送录音文件。
  • app 会每天检查一次新版本,装好后告诉你这一版做了什么。

1.1.0 — 会议录音,自动分出说话人

  • 菜单栏「录一场会议…」:录音、分说话人、逐段转写,全部在本机完成。
  • 微信这类不支持辅助功能的 App 现在也能直接写入。
  • 按下热键到开始录音约 0.12 秒(之前有 4 秒的延迟,已修)。

1.0.4 — 浮窗不再挡住输入框

  • 浮窗避开整个输入框,并在文字写入后跟着让开。
  • 音频服务卡住时不再冻住整个 App。

Apple Silicon 专用,macOS 14 以上。已用 Developer ID 签名并通过 Apple 公证。识别与会议转写全程在本机完成,音频和文字不离开这台电脑;只有「检查更新」会联网,可以在设置里关掉。

会议录音请自行确认所在州的录音同意法规——部分州要求所有参与者知情。

SHA-256

  • VoiceInput-apple-silicon.dmg: 65e83348ffa761966f6ee7dd1788e36b516ed7cad4d3afe658e6637289a3268e

VoiceInput 1.3.0 (Mac, Apple Silicon)

Choose a tag to compare

@mzhu2015 mzhu2015 released this 24 Sep 21:51

常驻小浮窗,点一下就开始。会议录音边录边出字,并当场分出说话人。

上一个公开版本是 1.0.3,中间跳过了四个版本 —— 下面是这五版做的全部改动,App 内「更新日志」里也有一份。

1.3.0 — 常驻小浮窗,点一下就开始

  • 屏幕上可以常驻一个小浮窗:一个按钮开始听写,一个按钮开始录会议。点它不会抢走你的光标——点之前你在哪个输入框,文字就写回哪里。
  • 开始录会议后浮窗就地展开成实时记录面板,录完自动打开会议库。
  • 浮窗可以拖到顺手的位置,位置会记住;不想要可以在设置里关掉。
  • 修好了会议录音「录着录着就不出字」的问题:背景有电视或视频时,声音检测的门限会被一路推高,之后连正常说话都收不到。
  • 修好了同一个人被越分越多的问题:声纹判断的余量太小,一句稍远的话就被当成新的人。

1.2.0 — 会议边录边出字,停下就能看

  • 录音时文字实时出现,并当场分出说话人一、说话人二。
  • 结束录音后几乎立刻就能读——一小时的会不再需要等十几分钟。
  • 录音时只留一个小浮窗:暂停、继续、停止,可展开看实时文字,也可以拖到顺手的位置。
  • 整理好的记录可以拷贝全文、拷贝纯文字、导出 Markdown、保存或发送录音文件。
  • 转写记录按说话人分色,长会议扫一眼就找得到人。
  • 想要更准可以随时「用准确模型重新识别」或「重新分析说话人」,界面会告诉你大概要多久。
  • App 会每天检查一次新版本,装好后告诉你这一版做了什么。

1.1.0 — 会议录音,自动分出说话人

  • 菜单栏「录一场会议…」:录音、分说话人、逐段转写,全部在本机完成,音频不出这台电脑。
  • 转写完可以给说话人起真名,整篇跟着变;支持导出 Markdown。
  • App 意外退出时,正在录的会议不会丢——下次启动可以接着转写。
  • 浮窗可以拖动,拖过之后这个 App 就一直用你放的位置。
  • 微信这类不支持辅助功能的 App 现在也能直接写入。
  • 按下热键到开始录音约 0.12 秒(之前有 4 秒的延迟,已修)。

1.0.4 — 浮窗不再挡住输入框

  • 浮窗避开整个输入框,并在文字写入、输入框变高后跟着让开。
  • 音频服务卡住时不再冻住整个 App。

1.0.3 — 输入框兼容与写入判断

  • 读不回内容的输入框不再被当成写入失败。
  • 识别模型缺失时会明确告诉你,而不是悄悄降级。

Apple Silicon 专用,macOS 14 以上。已用 Developer ID 签名并通过 Apple 公证,直接打开即可。识别与会议转写全程在本机完成,音频和文字不离开这台电脑;只有「检查更新」会联网,可以在设置里关掉。

会议录音请自行确认所在州的录音同意法规——部分州要求所有参与者知情。

SHA-256

  • VoiceInput-apple-silicon.dmg: 61f049e0a577d8d7237a51bdd31a2d00b184ca3cd3d75df97ca66e90bbfaa192

VoiceInput 1.0.3 (Mac, Apple Silicon)

Choose a tag to compare

@mzhu2015 mzhu2015 released this 21 Sep 15:03

The floating panel now keeps clear of the whole text field (above it, or below when there is no room) instead of covering the lines above the caret in multi-line boxes. Also fixed: a previous session's fade-out could reset the panel's position mid-dictation, sending it to the top of the screen.

SHA-256: 2228af1da5ebe9cc95cab2cad41300f0903b88883a4a3c7ff01b028d5cb2dea8

VoiceInput 1.0.2 (Mac, Apple Silicon)

Choose a tag to compare

@mzhu2015 mzhu2015 released this 20 Sep 19:36

Onboarding: a floating helper now appears beside System Settings → Accessibility with a draggable app icon — drop it into the list to grant the write permission. The helper dismisses itself once the grant lands.

VoiceInput 1.0.1 (Mac, Apple Silicon)

Choose a tag to compare

@mzhu2015 mzhu2015 released this 20 Sep 17:37

Onboarding: the welcome window now opens System Settings → Accessibility and offers a draggable app icon to drop into the list, so granting the write permission takes one motion. No recognition changes.

VoiceInput 1.0.0 (Mac, Apple Silicon)

Choose a tag to compare

@mzhu2015 mzhu2015 released this 20 Sep 17:25

First public build of VoiceInput — local Chinese–English dictation for the Mac.

Requirements: Apple Silicon (M1 or later), macOS 14 Sonoma or newer, 16 GB RAM recommended.
First launch: allow Microphone and Accessibility when asked; the app downloads its recognition models (≈1.5 GB, once).

  • VoiceInput-1.0.0-apple-silicon.dmg — this version
  • VoiceInput-apple-silicon.dmg — same file under a stable name (the website's download link)

Signed with a Developer ID certificate and notarized by Apple. Verify with shasum -a 256 -c VoiceInput-1.0.0-apple-silicon.dmg.sha256.