Repository navigation
Releases: mzhu2015/voiceinput-releases
Release list
VoiceInput 1.3.7 (Mac, Apple Silicon)
几个人,让整段录音自己说。说话人的个数不再靠一个写死的距离来猜。
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)
两个人就是两个人。会议里的说话人识别这次是拿真实录音测出来修的。
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)
两个浮窗其实一直拖不动;展开的录音浮窗会长到屏幕外面。都修了。
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)
录音浮窗在深色模式下终于看得清了。
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)
常驻浮窗在深色模式下终于看得见了;识别不再把中文猜成日文;会议记录重新排过版。
上一个公开版本是 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)
常驻小浮窗,点一下就开始。会议录音边录边出字,并当场分出说话人。
上一个公开版本是 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)
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)
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)
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)
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 versionVoiceInput-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.