TMSpeech:Windows离线语音转文字实时字幕,会议纪要救星实战笔记
【免费下载链接】TMSpeech腾讯会议摸鱼工具项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech
TMSpeech 是一款 Windows 离线语音转文字工具,捕获电脑正在播放的声音,实时转成文字上屏。全程本地运行、不联网,哪怕把音量彻底关到零,识别照样进行——这是它最戳我的一个特点。
开会走神被点名,是我最真实的场景
上个月一场 45 分钟的需求评审,我走神大概走了 20 分钟。产品经理突然cue我"刚才那段你怎么看",我大脑一片空白,只能硬着头皮说"同意"。散会后回看,其实那 20 分钟里有一个关键变更跟我负责的部分直接相关。
我当时想的不是一款录音软件——录完还是要听 45 分钟音频——而是"能立刻读到的文字"。字幕要够快,记录要能翻,这才是刚需。
后来我找到了 TMSpeech。它捕获电脑播放的声音,实时转成歌词式字幕显示在屏幕上:走神几分钟,瞟一眼字幕就能接回话题;散会后打开历史记录,把整场会议翻出来整理成纪要。
五分钟跑起来
它没有安装向导,也不要求注册账号。从项目仓库的 Release 页面下载最新压缩包,解压后运行TMSpeech.exe就能跑;想用源码自己构建的话,执行git clone https://gitcode.com/gh_mirrors/tm/TMSpeech。
首次运行做三件事:
- 打开设置,切到"资源"标签页,给中文模型点"安装"(约 300MB,只需一次)
- 回到主窗口,点红色按钮开始识别
- 识别结果会按日期自动存进"我的文档"的
TMSpeechLogs文件夹
配置文件在%AppData%/TMSpeech/config.json,正常使用完全不用手动碰。Release 包附带一个重置配置的 bat 脚本,配置改乱了跑一下就能回到出厂状态,新手最担心的"调坏了怎么办"基本不存在。
三种音频源怎么选:你想"听"什么
音频源决定声音从哪来,内置三种,各自对应一类场景:
- Windows 系统内录:捕获电脑正在播放的全部声音,底层是 WASAPI CaptureLoopback。适合会议软件、在线课程、视频播放。附带一个很实用的效果:系统音量静音也不影响识别,因为音频是从系统内部直接取的
- Windows 麦克风输入:录你自己的说话声。适合语音笔记、口述草稿
- Windows 进程音频:只录指定程序的输出,其他应用一律忽略。适合只想盯某一个播放器或会议客户端。注意它要求较新的 Windows 版本(Win11 或 21H2 及以上)
一句话建议:大多数人用系统内录就够了,覆盖面最广;只有明确要录自己或某个特定程序时,才切另外两种。
识别引擎怎么选,语言模型怎么装
设置里切到"语音识别"标签页,就是识别器选择区。内置三类离线语音转文字引擎,定位差异很明显:
- Sherpa-Onnx 离线识别器:默认项,为普通 CPU 优化,装好模型即用。大多数人保持它
- Sherpa-Ncnn 离线识别器:支持 GPU 加速,对识别速度和资源占用有更激进要求的用户试试
- 命令行识别器:面向高级用户的开放接口。它启动一个外部子进程,把子进程的标准输出当字幕文本读,标准错误输出写日志文件,几乎任何能输出文字的识别程序都能接进来
下面这张截图是设置页面的语音识别区域,重点看中间的识别器下拉框和下方的模型配置项。
引擎是发动机,模型是燃料。设置里的"资源"标签页集中管理模型安装,目前提供 Zipformer-transducer 系列的中文、英文、中英双语模型,每项旁边就是"安装"按钮,中文模型体积在 300MB 级别,装完会显示已安装。
内置模型不合口味也不死路:去 sherpa-onnx 的预训练模型列表挑一个更合适的流式模型,回设置里改模型路径即可。
字幕显示与历史记录
点开始之后,电脑里的声音就变成屏幕上的实时字幕。字幕是一个无边框小窗口,可任意拖动、调整大小,右键能改字体、字号、颜色、透明度、阴影。把它贴在视频下方或会议窗口旁边,基本不挡内容。
下面是运行中的识别窗口,就一行当前语音,简单到没有学习成本。
与此同时,识别结果按句子落盘到"我的文档/TMSpeechLogs",每次识别一个文件。开完会打开当天文件稍作整理,会议纪要就有了。历史记录页面支持右键或 Ctrl-C 复制,摘关键段落很方便。
还有个容易忽略的功能:设置"通知"标签页里可以填敏感词,某句话里出现就弹桌面通知。把同事的昵称填进去,会议里被提到就立刻有提示,挺香的。
命令行识别器:把自己的识别程序接进来
内置引擎都不满意的话,命令行识别器的扩展空间最大。它的协议很简单:
- 子进程标准输出里,以单个换行(
\n)结尾的行是临时结果,用于更新当前句子 - 以多个换行(
\n\n)结尾的行是最终结果,会被存入历史记录 - 标准错误输出写入日志文件,双方统一 UTF-8 编码
这个设计允许模型"边出字边纠正":临时结果可以被后续结果改写,最终留下的是一条稳定的完整句子。参考 Python 脚本放在 external_recognizer/ 目录,改改就能跑起来。
有几个容易翻车的细节:
- 命令行识别器模式下,子进程独立获取音频,设置里的音频源切换不生效
- 程序参数用空格分隔,路径里带空格要用双引号转义
- 指定 bat 脚本时,开头加
@隐藏命令回显,结尾别写pause(会导致无法检测进程退出)
⚡️## 真实感受与关键数据
体感上,作者实测在 AMD 5800u 笔记本上 CPU 占用不到 5%,我连挂一场一个半小时的会,风扇几乎没有动静,电池消耗也在预期内。音频按 16kHz 单声道采集,识别链路是"边说边出字"的节奏,滞后感基本察觉不到——不依赖网络往返,响应天然就快。
讲真,短板也有:识别准确率很大程度取决于模型。普通话标准的时候基本可用,但环境嘈杂、多人抢话、口音重的场景,错字会明显变多。好在模型只有 300MB 级别,换模型试错的成本很低。
📌 踩坑与高频问题
录不到系统内音。多数情况不是 TMSpeech 的问题,而是 Windows 音频设备设置。打开"声音控制面板"的"录制"标签页,启用"立体声混音"设备(没显示就右键空白处勾选"显示禁用的设备")。
识别准确率不理想。先排查环境:环境音太吵、多人同时说话、音量不合适;再确认音频源选对没有。都正常的话多半是模型和场景不匹配,换一个模型,或去 sherpa-onnx 预训练列表找更合适的流式模型,在设置里改模型路径。
历史记录找不到。检查"我的文档/TMSpeechLogs"文件夹是否存在、有无写入权限。权限异常时,以管理员身份运行程序通常能解决。
CPU 占用偏高。配置一般的机器,选 Sherpa-Onnx 识别器、换轻量模型,能省下一部分开销。
命令行识别器没输出。九成是协议问题:临时结果要以单个\n结尾,句子结束要补一个空行。先翻它写入的 stderr 日志,一般能直接定位。
掀开引擎盖
TMSpeech 的代码是"核心框架 + 功能插件"结构。核心在 src/TMSpeech.Core/,管插件加载、任务调度、配置和资源;具体功能放在 src/Plugins/ 下,每个插件目录里有一个tmmodule.json自述文件,程序启动时扫描plugins目录,按描述加载对应程序集。
音频链路大致是:WASAPI 低延迟采集 →JobManager接收音频 → 识别器的Feed()方法流式识别 →TextChanged/SentenceDone事件更新界面。配置是 JSON 文件且支持热重载,改完字幕样式立刻生效,不用重启。
这套机制意味着:新增一个音频源、识别引擎或翻译功能,只需实现对应接口再放进插件目录,核心代码一行不用动:
IAudioSource IRecognizer ITranslator项目用 C# 加 Avalonia 编写,结构清晰,想读源码的话是个友好的仓库。
回到开头那个走神的场景:现在开会我会让 TMSpeech 后台挂着,被点名时瞟一眼字幕就能接上话,散会后翻历史记录十分钟写完纪要。它免费、开源、离线,装好后几分钟就能干活。如果你正好需要一款 Windows 离线语音转文字工具,或者只是想让自己开会走神得安心一点,可以拉下来试试。项目对反馈很开放,用得不顺手直接提 Issue,发现了效果更好的开源模型,也欢迎推荐给项目方。
【免费下载链接】TMSpeech腾讯会议摸鱼工具项目地址: https://gitcode.com/gh_mirrors/tm/TMSpeech
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考