自研 WorkBuddy Skill · 国泰道合直播转文字 · 6 个文件 / 20 KB
不录画面,不装虚拟声卡,不动声卡设置。用 Windows 原生的 WASAPI 回环从扬声器通道把正在播放的直播声音原样取下来:先 15 秒试音校验,再定时采集,采完交给转写模型,落成一份带时间戳、区分说话人的文字稿,存到桌面。
一句话:把正在本机播放的直播声音,变成可以搜索、归档、引用的文字稿。
直播里说的话,说完就没了。想引用嘉宾的一个观点、想复盘主播讲的一段方法,只能从头再听一遍。录屏当然可以,但视频不好搜、不好引、体积还大——十分钟 200 MB,找一个字全靠拖进度条。
这个技能只管声音这一层。它不碰画面,只取声:用 WASAPI 回环直接从默认输出通道取信号——这是 Windows 系统自带的能力,不需要装 virtual-audio-capturer 之类的虚拟声卡驱动,也不需要打开声卡设置里的"立体声混响"。取下来的声音交给转写模型,出来的是带时间戳、区分说话人的文字稿。
关键的一条设计是先试音再采集。回环通道采到的可能不是你以为的声音:直播刚好没出声、播放器切到了蓝牙输出、系统被静音——这些情况采到的都是静音。所以采集前先录 15 秒做音量校验(峰值高于 -30 dB 才放行),不通过就停下来排查,绝不白等十分钟然后交一份空稿。
Windows 7+ 自带的回环采集能力,Python 一个库就能调。没有第三方驱动、没有管理员权限、不动任何系统设置。
静音稿比没有稿更误事。15 秒试音 + 采集期抽查,两道闸把关,"录完没声音"这种事故在流程上就被拦住了。
转写结果按 [分:秒] 定位、按说话人分段,复盘直播内容可以直接按时间跳,引用观点可以直接标出处。
触发词:直播转文字 / 采集声音转文字 / 录直播声音 / 转写直播 / 国泰道合直播转文字。
| 场景 | 它交付什么 |
|---|---|
| 边看边留稿 | 直播在电脑里放,定一个时长让它采,听完文字稿也好了。 |
| 复盘连线精华 | 嘉宾讲了二十分钟方法论,转写稿按时间戳定位,精华段落直接摘。 |
| 会议 / 课程留档 | 本机播放的会议、网课、语音分享,一样采、一样转。 |
| 搜索直播内容 | 文字稿可以全文搜索,"他说过 XX 没有"一秒有答案。 |
| 做二次内容 | 文字稿是剪辑、写文章、做笔记的底稿,不用再一遍遍回听。 |
不适合拿它做的事也说清楚:声音从别的设备播放(手机外放、蓝牙音箱直连手机)它够不着——回环只能采本机默认输出通道;需要画面 + 声音的完整录屏,那是另一条链路;系统静音或播放器走非默认输出设备时,它采到的是静音——所以才有试音这道闸。
全流程就四个动作,试音是必经的一道闸。
pyaudiowpatch 官方示例是这么写打开回环设备的:
stream = p.open(..., input_host_api_specific_stream_info=device) # 官方示例
但实测会直接炸:AttributeError: 'dict' object has no attribute '_get_host_api_stream_object'。翻源码发现,这一版(0.2.12.9)的 Stream.__init__ 只给 macOS 的 PaMacCoreStreamInfo 实现了这个方法,传设备 dict 进去就是撞墙。解法是不传这个参数,改传 input_device_index=<回环设备 index>——包里的 rec_audio.py 已经按正确姿势写好,注释里也把这条钉死了,防止后人改回去。
6 个文件,20 KB。主流程一份,排坑参考一份,采集脚本一个,真实转写示例一份。
国泰道合直播转文字/ ├── SKILL.md 主流程 SOP:四步流程 + 试音判据 + 排坑表 ├── _meta.json 元信息与依赖清单 ├── scripts/ │ └── rec_audio.py WASAPI 回环采集:试音 / 定时采集两用 ├── references/ │ └── audio-capture-notes.md 实测环境细节:四条采集路线对比、dict 坑源码定位、音画对齐公式 └── assets/ └── demo-transcript.txt 10 分钟真实直播的转写示例稿
| 依赖 | 用在哪 |
|---|---|
pyaudiowpatch | WASAPI 回环采集,唯一的录音通道 |
imageio-ffmpeg | 自带 ffmpeg 可执行文件,试音校验与格式处理用(音频采集本身不依赖 ffmpeg) |
| Python 3.9+ / Windows | 回环是 Windows 能力,别拿到 Mac 上跑 |
| 问题 | 处理方式 |
|---|---|
| pyaudiowpatch 传设备 dict 报 AttributeError | 改传 input_device_index。源码定位与正确写法都钉在脚本注释里。 |
| ffmpeg dshow 枚举不到任何音频设备 | 这台机器 DirectShow 没暴露音频设备。不纠结 dshow,直接走 WASAPI 回环。 |
| GitHub 下载 ffmpeg 超时 | 阿里云 PyPI 镜像装 imageio-ffmpeg,10 秒拿到带 ffmpeg 的包。 |
| 录完没声音 | 试音 + 抽查两道闸。真发生了就查三样:直播出没出声、默认输出设备切没切、静音没静音。 |
实测样例:2026-11-07 一场 AI 主题直播连线,采集 10 分钟系统声音,转写一次通过。
转写模型输出自带 [分:秒] 定位与说话人编号,整理时把编号换成可读标记(能从内容判断出"主播""嘉宾"就换,判断不出就保留编号,不硬编)。稿子头部补采集时间与来源,尾部补 3-5 句概要——拿到手就能直接用,不需要再加工一遍。
解压后把整个 国泰道合直播转文字/ 目录放进 WorkBuddy 的技能目录即可。Windows 上遇到中文文件名乱码时,用 7-Zip 或 Bandizip 解压。
# 1. 解压到一个临时目录 unzip guotai-daohe-live2text.zip -d /tmp/skill # 2. 放进技能目录(Windows:C:\Users\你\.workbuddy\skills\) mv /tmp/skill/国泰道合直播转文字 ~/.workbuddy/skills/ # 3. 补齐依赖(国内镜像) pip install pyaudiowpatch imageio-ffmpeg -i https://mirrors.aliyun.com/pypi/simple/
注意:这个技能采集的是本机默认输出通道的声音,只能在自己的机器上跑。采集期间保持直播声音正常播放、不要切输出设备、不要静音——试音那道闸会替你把关。