播客课程转文字稿
用户给一段播客、课程录音、访谈或讲座音频,交付两份成品文件:①带段落分段的逐字稿(txt,段落间空行,便于阅读)②结构化学习笔记(md,含内容提纲、分段要点、关键结论)。全程本地 CPU 转录,音频不上传,适合学习充电、内容创作者整理素材、知识付费课程复盘等场景。
与"录音转会议纪要"同底座、不同输出物:那个交付议题/结论/待办的会议纪要,本技能交付内容提纲/分段要点/金句的学习笔记,面向的是"听懂一段内容并沉淀成知识"的需求,不产出待办分配。
功能
- 音视频通吃:mp3/wav/m4a/flac 等音频、mp4/mov/mkv 等视频直接传入,视频自动抽音轨
- 分段逐字稿:按说话停顿 >2s 自动分段,段落之间空一行,长音频也能顺畅阅读
- 三件套输出:逐字稿 txt + SRT 字幕 + 元信息 json(时长/字数/语速/转录耗时)
- 笔记加工:agent 通读逐字稿,提炼内容提纲(分级标题)、分段要点、关键结论、金句摘录
- 术语可调:通过提示词注入人名/专业词/课程术语,提升专有名词准确率
- 隐私安全:本地模型推理,音频不出机器
工作流程(agent SOP)
- 探测时长并预告等待:先用 ffprobe 探测音频时长,并告知用户预计等待时间。CPU 转录速度约为音频时长的 1/5~1/10(如 30 分钟音频约等 3~6 分钟,1 小时约等 6~12 分钟)。超过 1 小时的超长音频,先和用户确认再开跑。
bash ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 音频.mp3 - 调脚本出分段逐字稿:
bash python3 <技能目录>/scripts/audio_notes.py /path/to/音频.mp3 -o /tmp/notes
有专有名词/课程术语时追加--initial-prompt "以下是普通话的句子,内容涉及术语1、术语2。";输出/tmp/notes_transcript.txt、/tmp/notes_transcript.srt、/tmp/notes_info.json。脚本会打印转录耗时、字数、段数。 - 通读逐字稿,按模板整理学习笔记:完整读一遍分段逐字稿,提炼:①这段内容讲了什么、分几大块(内容提纲,用 1~3 级标题搭骨架);②每一段的要点(顺着逐字稿的段落来,不要漏);③关键结论/核心观点(标出原文时间点来源);④值得摘录的金句。专有名词、数字、人名要与逐字稿核对,不确定的标"待确认"。若逐字稿有明显同音错字,对照上下文修正。
- 交付:输出两个文件——学习笔记 md(主交付物)+ 分段逐字稿 txt(存档),并用 3~5 句话向用户口头总览这段内容的核心。
笔记模板
# <内容标题>:<播客/课程/访谈名>
- **时长**:约 XX 分钟
- **类型**:播客 / 课程 / 访谈 / 讲座(未知则标"待确认")
- **整理方式**:本地语音转写 + AI 整理,原文见附录
- **一句话总览**:用一句话说清这段内容到底在讲什么、解决什么问题
## 内容提纲
1. 第一部分主题(对应逐字稿 [MM:SS])
- 子点 A
- 子点 B
2. 第二部分主题([MM:SS])
3. 第三部分主题([MM:SS])
## 分段要点
### 一、<第一部分主题>
- ……(对应逐字稿 [MM:SS])
- ……
### 二、<第二部分主题>
- ……
## 关键结论 / 核心观点
- ……(来源 [MM:SS])
- ……
## 金句摘录
> "……"([MM:SS])
> "……"([MM:SS])
---
## 附录:分段逐字稿
<粘贴 /tmp/notes_transcript.txt 全文>
命令参考
| 命令 | 说明 |
|---|---|
python3 scripts/audio_notes.py 播客.mp3 |
基础用法,输出 播客_transcript.txt + 播客_transcript.srt + 播客_info.json |
-o /tmp/notes |
指定输出前缀 → /tmp/notes_transcript.txt、/tmp/notes_transcript.srt、/tmp/notes_info.json |
--language zh |
识别语言,默认中文,可换 ja/en 等 |
--initial-prompt "以下是普通话的句子,内容涉及私域、复购率。" |
术语提示,专有名词识别不准时加上重跑(务必保留"以下是普通话的句子,"开头,否则会丢失标点) |
--no-srt |
只要逐字稿和元信息,不输出 SRT 字幕 |
| 视频文件(mp4/mov/mkv…) | 直接传入,自动抽 16k 单声道音轨 |
示例对话
用户:我下载了一期 40 分钟的播客,帮我转成文字并整理成笔记。
agent:好的。先探测时长——音频约 40 分钟,CPU 转录预计需要 5~8 分钟,现在开始。(调脚本)
转录完成,识别出 8,320 字,分 21 段。这段内容主要讲"个人 IP 冷启动的前 90 天",分四块:①定位与人设;②内容选题;③发布节奏;④变现路径。已整理成学习笔记,核心结论是"前 90 天不要急着变现,先跑通内容-反馈闭环",详见 notes.md,分段逐字稿在 notes_transcript.txt。
用户:里面"私域"好像被识别成"司域"了。
agent:已修正笔记与逐字稿中的同音错字。下次遇到这类专业词,可以在转写时加 --initial-prompt "以下是普通话的句子,内容涉及私域、复购率。" 来减少错字。
运行环境
- 脚本:
scripts/audio_notes.py(相对技能根目录) - Python:3.9+
- 第三方库:
faster-whisper(pip install faster-whisper)、numpy(pip install numpy) - 外部命令:
ffmpeg、ffprobe
开工前先跑一次自检,缺什么当场补,别等跑到一半报错:
python3 -c "import faster_whisper" 2>/dev/null || echo "缺 faster-whisper,请执行 pip install faster-whisper"
python3 -c "import numpy" 2>/dev/null || echo "缺 numpy,请执行 pip install numpy"
command -v ffmpeg >/dev/null 2>&1 || echo "缺 ffmpeg,请先安装再重试"
command -v ffprobe >/dev/null 2>&1 || echo "缺 ffprobe,请先安装再重试"
> 缺依赖时用中文告诉用户缺什么、装完就能用,不要把 Python 的英文 traceback 原样贴给用户。
注意事项
- 长音频先预告耗时:转录速度约为音频时长的 1/5~1/10(CPU),1 小时音频约需 6~12 分钟,务必先告知用户等待时间再开跑,避免用户以为卡死。注意:几分钟的短音频因模型加载固定开销(约 5 秒)占比高,实测会更接近 1/3 甚至更慢;音频越长越接近上述区间。
- 无说话人分离:本技能不区分说话人,多人对话的逐字稿不标注"谁说的";访谈类内容中涉及"提问者/受访者"的部分,需结合上下文推断,或在笔记中统一标注"待确认"。
- 术语靠提示词定制:人名、课程名、行业黑话识别不准时,重跑并加
--initial-prompt,把术语写进去,可显著改善。注意写法:保留"以下是普通话的句子,"开头再追加术语(如--initial-prompt "以下是普通话的句子,内容涉及私域、复购率。"),否则模型会连带丢掉标点、按词断句;同音错字(如"私域/司域")请对照逐字稿人工复核。 - 分段是工程近似:段落按"停顿 >2s"自动切分,并非语义分段,偶尔会把一个话题切两段或把两个话题合并;整理笔记时应以语义为准重组。
- 隐私边界:音频全程本地转写不上传,但笔记由 AI 整理生成;涉密或未公开内容请用户自行评估使用场景。