Files
nexus/openclaw/xingshu/cloud-learning-audio-pipeline.md

8.2 KiB
Raw Blame History

音视频转录与摘要流水线

文档版本2026-04-15 维护者星枢xingshu 状态: 已验证可运行 适用场景:教学视频、讲座、播客、会议录音等任意音视频内容的转录与知识库导入


一、整体架构

视频/音频源(本地或 NAS
    │
    ▼
[阶段1] FFmpeg 音频提取
    │  MP4/AVI/MKV → MP3
    ▼
本地/共享 MP3 文件库
    │
    ▼
[阶段2] Whisper 转录
    │  MP3 → 英文字幕/转写稿
    ▼
本地转写稿
    │
    ▼
[阶段3] Gemini Flash 摘要
    │  转写稿 → 结构化中文笔记
    ▼
Obsidian 知识库

二、各阶段详解

阶段 1FFmpeg 音频提取

项目 说明
输入 .mp4.avi.mkv.mov 等常见视频格式
输出 同目录下的同名 .mp3 文件
工具 FFmpegMacmini 已安装:/opt/homebrew/bin/ffmpeg
转码参数 -vn -acodec libmp3lame -ab 64k -ar 22050 -ac 164kbps CBR针对人声优化
传输方式 ssh cat 管道NAS 不需要挂载)
速度 ~400x realtime1小时视频 ≈ 9秒提取

命令示例:

# NAS → Macmini FFmpeg → 回写 NAS
ssh shenwei@192.168.3.17 "cat '/path/to/video/VIDEO.mp4'" \
  | /opt/homebrew/bin/ffmpeg -i pipe:0 -vn -acodec libmp3lame -ab 64k -ar 22050 -ac 1 -f mp3 pipe:1 \
  | ssh shenwei@192.168.3.17 "cat > '/path/to/video/VIDEO.mp3'"

# 本地文件直接转换
/opt/homebrew/bin/ffmpeg -i "/path/to/video/VIDEO.mp4" -vn -acodec libmp3lame -ab 64k -ar 22050 -ac 1 "/path/to/video/VIDEO.mp3"

脚本位置: ~/.openclaw/temp/xingshu/scripts/nas_audio_extract_v3.py


阶段 2Whisper 转录

项目 说明
输入 .mp3 文件已由阶段1生成或直接提供的音频文件
输出 英文字幕/转写稿(纯文本)
工具 openai-whisperPython 包,通过 pip install openai-whisper 安装)
模型 small精度与速度平衡M 系列芯片友好)
硬件 Macmini 本地运行Neural Engine 加速)
速度 ~50x realtime1小时音频 ≈ 40-50秒
内存 ~1.5GBsmall 模型)
费用 完全免费(本地运行,无需 API

安装命令:

pip3 install openai-whisper

调用示例:

import whisper
model = whisper.load_model("small")
result = model.transcribe("audio.mp3", language="en", fp16=False)
print(result["text"])  # 英文字幕/转写稿

转写稿长度参考: 1小时音频 ≈ 6000-8000 tokens英文

模型选择参考:

模型 内存占用 速度 精度 适用场景
tiny ~1GB 极快 快速预览、噪音少的内容
small ~1.5GB 推荐日常使用
medium ~3GB 重要内容、方言口音重
large ~5GB+ 很慢 最高 最高精度要求Macmini 不推荐)

阶段 3Gemini Flash 摘要

项目 说明
输入 Whisper 转写的英文字幕/转写稿
输出 结构化中文笔记(摘要 + 关键概念 + 相关链接)
工具 Google Gemini API直接 HTTP 调用,不依赖 summarize CLI
模型 gemini-3-flash-preview
费用 ~0.075$/百万输入 tokens3000分钟音频 ≈ ~$0.15
API Key AIzaSyASNIlSc-YYP1dCqKCzk59e7MXSVrnHba0(需有效)

摘要输出格式:

## 摘要

> [300-500字中文摘要]

---

## 关键概念

- **[概念名称]**: [一句话解释]

---

## 相关笔记

> [!info]+ 交叉引用
> [[相关笔记标题]] — 关联原因

三、全量流水线脚本

脚本位置: ~/.openclaw/temp/xingshu/scripts/nas_whisper_gemini_summarize.py

核心逻辑:

  1. 扫描指定目录下的 .mp3 文件(跳过 *.done 中已有的)
  2. ssh cat 下载到 Macmini 本地临时目录
  3. Whisper small 转录
  4. Gemini Flash 摘要
  5. 更新 Obsidian 对应笔记(替换 ## 摘要## 相关笔记 之间的内容)
  6. 删除本地临时文件
  7. 写入 .done 进度文件(断点续传)

启动命令:

cd ~/.openclaw/temp/xingshu
nohup python3 scripts/nas_whisper_gemini_summarize.py > nas_whisper_summarize_stdout.log 2>&1 &
echo "PID=$!"

查看进度:

tail -f ~/.openclaw/temp/xingshu/logs/nas_whisper_summarize.log

四、Obsidian 笔记模板

笔记文件位于:~/Workspace/nexus/knowledgebase/

---
title: "音视频标题"
type: transcription
source-type: video
category: "你的分类路径"
tags:
  - 标签1
  - 标签2
date-added: 2026-04-15
audio-source: "/path/to/audio.mp3"
transcript-source: "/path/to/transcript.txt"
status: summarized  # raw → summarized
---

# 音视频标题

**Source:** /path/to/video.mp4
**Type:** VIDEO | **Category:** 你的分类

**Status:** ✅ 已完成

---

## 摘要

> [Gemini Flash 生成的中文摘要]

---

## 关键概念

- **[概念名称]**: [一句话解释]

---

## 相关笔记

> [!info]+ 交叉引用
> [[相关笔记标题]] — 关联原因

五、API Key 汇总

服务 Key 用途 状态
Google Gemini AIzaSyASNIlSc-YYP1dCqKCzk59e7MXSVrnHba0 摘要生成 有效

六、费用估算100个视频~3000分钟总时长

阶段 工具 费用
音频提取 FFmpeg $0
语音转录 Whisper本地 $0
摘要生成 Gemini Flash ~$0.15
合计 ~$0.15

七、已知限制与注意事项

  1. Gemini API Key 必须有效:每 24 小时检查一次 key 状态
  2. Whisper 模型选择tiny 最快但精度低,small 平衡,medium/large Macmini 内存不够
  3. 音频质量Whisper 对音质敏感,背景噪音会导致转写质量下降
  4. 断点续传:脚本使用 .done 文件记录已完成的文件,重启不会重复处理
  5. 文件命名:文件名中的空格和特殊字符(_())需要正确处理
  6. 语言参数:默认英文转录,如需其他语言可设置 language="zh"language="auto"
  7. 视频源路径:根据实际存放位置修改脚本中的 SOURCE_DIR 变量

八、快捷命令速查

# 查看音频提取进度
cat ~/.openclaw/temp/xingshu/logs/nas_audio_v3.log | tail -10

# 查看转录摘要进度
tail -f ~/.openclaw/temp/xingshu/logs/nas_whisper_summarize.log

# 查看指定目录下 mp3 数量
ssh shenwei@192.168.3.17 "ls '/path/to/videos/'*.mp3 2>/dev/null | wc -l"

# 查看已处理摘要数量
cat ~/.openclaw/temp/xingshu/nas_whisper_summarize.done | wc -l

# 手动测试 Whisper
python3 -c "import whisper; m=whisper.load_model('small'); print(m.transcribe('test.mp3')['text'][:100])"

# 手动测试 Gemini
curl -s -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3-flash-preview:generateContent?key=AIzaSyASNIlSc-YYP1dCqKCzk59e7MXSVrnHba0" \
  -H 'Content-Type: application/json' \
  -d '{"contents":[{"parts":[{"text":"say hi in 3 words"}]}]}'

九、配置说明

修改视频源路径

编辑脚本 nas_whisper_gemini_summarize.py,找到以下变量并修改:

# NAS 源视频目录(包含 mp4 文件)
SOURCE_DIR = "/volume2/work/Public Cloud Learning Sessions/"

# NAS 输出音频目录mp3 输出位置)
AUDIO_DIR = "/volume2/work/Public Cloud Learning Sessions/"

# Obsidian 笔记目录
OBSIDIAN_NOTE_DIR = "/Users/weishen/Workspace/nexus/knowledgebase/"

# NAS SSH 连接信息
NAS_HOST = "192.168.3.17"
NAS_USER = "shenwei"

适配不同视频源

# 方案1: 另一个 NAS 路径
SOURCE_DIR = "/volume2/work/OtherVideos/"

# 方案2: 本地目录(无需 SSH
SOURCE_DIR = "/Users/weishen/Workspace/videos/"

# 方案3: 另一个服务器
NAS_HOST = "192.168.3.45"  # Ubuntu2