视频文字稿提取方法
核心理念
视频的核心信息通常在语音中。文字稿提取的本质是从视频载体中剥离语音信息并结构化——先判断语音是否承载核心信息,再选择最高效的提取路径(CC字幕优先,Whisper兜底),最后按语义逻辑分段整理为可阅读的结构化文档。
CC字幕是UP主精心校对的,准确率接近100%;Whisper语音识别准确率约85-95%。有CC字幕时绝对优先用字幕,无字幕时才走Whisper。
适用范围广泛。 任何有语音的在线视频(B站、YouTube、抖音、播客、会议录像)都可以用本方法提取文字稿。
提取三步法
第一步:视频源定位与字幕检测
- 解析视频URL:识别平台(B站/YouTube/抖音/其他)、提取视频ID
- 获取元信息:标题、作者、播放量、发布时间、时长
- 检测CC字幕:查询是否有可用字幕(
yt-dlp --list-subs)- 有中文字幕(zh-Hans/zh)→ 直接下载字幕,跳过Whisper
- 无字幕(danmaku是弹幕,不算字幕)→ 进入第二步
第二步:音频提取与语音识别
- 下载音频轨:
yt-dlp -f "bestaudio" --extract-audio --audio-format mp3- 音频轨一般不受画质/会员限制
- SSL证书问题:设置
ssl._create_default_https_context = ssl._create_unverified_context
- Whisper语音识别(仅在无CC字幕时执行):
| 模型 | 大小 | 中文效果 | 适用场景 | |------|------|----------|----------| | tiny | 39M | 差 | 快速预览 | | base | 74M | 一般 | 短视频(<5min) | | small | 244M | 较好 | 一般视频 | | medium | 1.5G | 好 | 推荐(默认)| | large | 3G | 最佳 | 长视频/专业需求 |
默认使用medium模型;FP16不支持时自动降级FP32。
第三步:语义分段与要点提炼
- 去噪:去除重复内容、语气词、无意义段落
- 语义分段:按内容逻辑分段(非固定时长),每段有独立主题
- 章节标注:为每段生成章节标题和时间范围
- 要点提炼:提取核心观点,整理为要点表格
- 金句提取:提取原文中的关键金句
- 格式化输出:生成.txt(微信兼容)或.md文件
验证清单
提取完成后逐项验证,五项全部通过才算完成:
| # | 验证项 | 说明 | |---|--------|------| | 1 | ⬜ 内容完整性 | 覆盖视频的全部语音内容,无遗漏段落 | | 2 | ⬜ 时间戳准确 | 时间戳与视频实际进度对应(误差≤3秒) | | 3 | ⬜ 语义分段合理 | 按内容逻辑分段,非机械按时间切割 | | 4 | ⬜ 要点提炼准确 | 要点总结忠实反映视频核心观点,无曲解 | | 5 | ⬜ 格式规范 | 输出格式符合目标平台要求 |
领域要求清单
T0-01 视频源定位
- 必选组件: 视频URL、平台识别(B站/YouTube/抖音/其他)、BV号/视频ID
- 可选组件: 视频标题、UP主/作者、播放量、发布时间、时长
- 组装顺序: URL解析→平台识别→视频ID提取→元信息获取→信息确认
- 约束: URL格式必须合法;平台必须被yt-dlp支持
- 格式: 结构化信息块(Markdown)
T0-02 CC字幕检测与提取
- 必选组件: 字幕可用性判定(是/否)、字幕语言、字幕格式
- 可选组件: 字幕文件内容
- 组装顺序: 字幕列表查询→可用语言判定→中文字幕优先→字幕下载→格式转换
- 约束:
danmaku弹幕不算字幕;未登录时可能无法获取CC字幕 - 格式: SRT/JSON字幕文件或直接文本
T0-03 音频提取
- 必选组件: 音频文件(mp3格式)、音频时长、文件大小
- 可选组件: 音频质量、采样率
- 组装顺序: 音频轨选择→下载→格式转换→文件验证
- 约束: 音频轨不受画质限制;SSL问题需绕过;下载失败时重试1次
- 格式: mp3文件
T0-04 语音识别转录
- 必选组件: 转录文本(带时间戳)、识别语言、模型选择
- 可选组件: 识别置信度
- 组装顺序: 模型选择→音频输入→转录执行→时间戳对齐→结果输出
- 约束: 默认使用medium模型;长视频分段处理
- 格式: 带时间戳的文本
T0-05 语义分段与整理
- 必选组件: 分段后文字稿(按内容逻辑分段)、章节标题、每段时间范围
- 可选组件: 关键词标注
- 组装顺序: 原始转录→去噪→语义分段→章节标题标注→时间范围对齐
- 约束: 分段基于语义而非固定时长;每段应有独立主题;时间范围必须连续覆盖
- 格式: 结构化Markdown
T0-06 要点提炼与输出
- 必选组件: 要点总结表格(方法/要点+核心思路+具体操作)、金句提取、输出文件
- 可选组件: 延伸阅读建议
- 组装顺序: 全文通读→核心观点提取→要点表格生成→金句提取→格式化输出→文件保存
- 约束: 要点必须忠实原文,不可曲解;金句必须是原文原话
- 格式: .txt(微信兼容)或 .md
领域范本
TF-01 文字稿提取范本
对应任务: T0-01 ~ T0-06
适用场景: 任何在线视频需要提取为结构化文字稿
提取范本:
## 文字稿提取记录
### Step 1:视频源定位(T0-01)
**视频URL**:________
**平台**:________(B站/YouTube/抖音/________)
**视频ID**:________
| 字段 | 值 |
|------|-----|
| 标题 | ________ |
| 作者 | ________ |
| 播放量 | ________ |
| 发布时间 | ________ |
| 时长 | ________ |
### Step 2:字幕检测(T0-02)
**CC字幕可用**:⬜是 / ⬜否
**字幕语言**:________
**提取路径**:⬜CC字幕直接提取 / ⬜Whisper语音识别
### Step 3:音频提取与识别(T0-03/T0-04)
**音频文件**:________
**识别模型**:________(tiny/base/small/medium/large)
### Step 4:语义分段(T0-05)
| 章节 | 时间范围 | 主题 | 核心内容 |
|------|---------|------|---------|
| ________ | [00:00-03:15] | ________ | ________ |
| ________ | [03:15-08:42] | ________ | ________ |
| ... | ... | ... | ... |
### Step 5:要点提炼(T0-06)
| 方法/要点 | 核心思路 | 具体操作 |
|-----------|---------|---------|
| ________ | ________ | ________ |
| ________ | ________ | ________ |
**金句**: "________"
**输出文件**:________(.txt/.md)
范本要点:
- 有CC字幕绝对优先,无字幕才走Whisper
- 语义分段按内容逻辑而非固定时长
- 要点必须忠实原文,金句必须是原话
- 验证五项必须全部通过
________为待用户提供的内容,不可AI编造
工具链
音频下载(yt-dlp)
yt-dlp -f "bestaudio" --extract-audio --audio-format mp3 -o "<output_dir>/audio.%(ext)s" "<视频URL>"
CC字幕检测
yt-dlp --list-subs "<视频URL>"
元信息获取
通过WebFetch获取视频标题、作者、播放量等元信息。
语音识别(Whisper)
使用scripts/transcribe.py执行Whisper语音识别。
使用规则
- 判断是否值得提取:检查视频语音是否承载核心信息
- 按三步执行:视频源定位→音频提取与识别→语义分段与提炼
- 产出交付:按领域要求清单逐项填充,或按TF-01范本结构替换实际内容
- 用户主权:AI产出的文字稿是起点,用户对分段、要点、金句有调整权
事实纪律
- 视频平台支持范围必须基于yt-dlp实际能力,不得夸大
- Whisper识别准确率标注为"参考范围",实际效果取决于音频质量
- 涉及版权的内容提取必须提醒用户注意版权合规
- 要点提炼必须基于实际转录内容,不可凭空编造
Scan to join WeChat group