docs: add whisper guide and cloud learning pipeline docs

This commit is contained in:
2026-04-15 10:18:37 +08:00
parent 7c90666361
commit e69c162353
2 changed files with 513 additions and 0 deletions

View File

@@ -0,0 +1,252 @@
# Cloud Learning 音视频处理流水线
> 文档版本2026-04-15
> 维护者星枢xingshu
> 状态:✅ 已验证可运行
---
## 一、整体架构
```
NAS 视频源
[阶段1] FFmpeg 音频提取
│ MP4 → MP3
NAS MP3 文件库
[阶段2] Whisper 转录
│ MP3 → 英文字幕/转写稿
Macmini 本地转写稿
[阶段3] Gemini Flash 摘要
│ 转写稿 → 结构化中文笔记
Obsidian 知识库
```
---
## 二、各阶段详解
### 阶段 1FFmpeg 音频提取
| 项目 | 说明 |
|---|---|
| **输入** | NAS 上的 `.mp4` 文件(`/volume2/work/Public Cloud Learning Sessions/` |
| **输出** | 同目录下的同名 `.mp3` 文件 |
| **工具** | FFmpegMacmini 已安装:`/opt/homebrew/bin/ffmpeg` |
| **转码参数** | `-vn -acodec libmp3lame -ab 64k -ar 22050 -ac 1`64kbps CBR针对人声优化|
| **传输方式** | `ssh cat` 管道NAS 不需要挂载)|
| **速度** | ~400x realtime1小时视频 ≈ 9秒提取|
**命令示例:**
```bash
# NAS → Macmini FFmpeg → 回写 NAS
ssh shenwei@192.168.3.17 "cat '/volume2/work/Public Cloud Learning Sessions/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 > '/volume2/work/Public Cloud Learning Sessions/VIDEO.mp3'"
```
**脚本位置:** `~/.openclaw/temp/xingshu/scripts/nas_audio_extract_v3.py`
---
### 阶段 2Whisper 转录
| 项目 | 说明 |
|---|---|
| **输入** | NAS 上的 `.mp3` 文件已由阶段1生成|
| **输出** | 英文字幕/转写稿(纯文本)|
| **工具** | `openai-whisper`Python 包,通过 `pip install openai-whisper` 安装)|
| **模型** | `small`精度与速度平衡M 系列芯片友好)|
| **硬件** | Macmini 本地运行Neural Engine 加速)|
| **速度** | ~50x realtime1小时音频 ≈ 40-50秒|
| **内存** | ~1.5GBsmall 模型)|
| **费用** | 完全免费(本地运行,无需 API|
**安装命令:**
```bash
pip3 install openai-whisper
```
**调用示例:**
```python
import whisper
model = whisper.load_model("small")
result = model.transcribe("audio.mp3", language="en", fp16=False)
print(result["text"]) # 英文字幕/转写稿
```
**转写稿长度参考:** 1小时音频 ≈ 6000-8000 tokens英文
---
### 阶段 3Gemini Flash 摘要
| 项目 | 说明 |
|---|---|
| **输入** | Whisper 转写的英文字幕/转写稿 |
| **输出** | 结构化中文笔记(摘要 + 关键概念 + 相关链接)|
| **工具** | Google Gemini API直接 HTTP 调用,不依赖 summarize CLI|
| **模型** | `gemini-3-flash-preview` |
| **费用** | ~0.075$/百万输入 tokens3000分钟音频 ≈ ~$0.15|
| **API Key** | `AIzaSyASNIlSc-YYP1dCqKCzk59e7MXSVrnHba0`(需有效)|
**摘要输出格式:**
```markdown
## 摘要
> [300-500字中文摘要]
---
## 关键概念
- **[概念名称]**: [一句话解释]
---
## 相关视频
> [!info]+ 交叉引用
> [[相关视频文件名]] — 关联原因
```
---
## 三、全量流水线脚本
**脚本位置:** `~/.openclaw/temp/xingshu/scripts/nas_whisper_gemini_summarize.py`
**核心逻辑:**
1. 扫描 NAS 上已完成的 `.mp3` 文件(跳过 `*.done` 中已有的)
2. `ssh cat` 下载到 Macmini 本地临时目录
3. Whisper `small` 转录
4. Gemini Flash 摘要
5. 更新 Obsidian 对应笔记(替换 `## 摘要``## 相关视频` 之间的内容)
6. 删除本地临时文件
7. 写入 `.done` 进度文件(断点续传)
**启动命令:**
```bash
cd ~/.openclaw/temp/xingshu
nohup python3 scripts/nas_whisper_gemini_summarize.py > nas_whisper_summarize_stdout.log 2>&1 &
echo "PID=$!"
```
**查看进度:**
```bash
tail -f ~/.openclaw/temp/xingshu/logs/nas_whisper_summarize.log
```
---
## 四、Obsidian 笔记模板
笔记文件位于:`~/Workspace/nexus/knowledgebase/DevOps & SRE/`
```markdown
---
title: "视频标题"
type: cloud-learning
source-type: video
category: "DevOps & SRE/01_AWS-Landing-Zone"
tags:
- AWS
- Landing-Zone
date-added: 2026-04-14
video-source: "nas:///volume2/work/Public Cloud Learning Sessions/VIDEO.mp4"
audio-source: "nas:///volume2/work/Public Cloud Learning Sessions/VIDEO.mp3"
status: summarized # raw → summarized
---
# 视频标题
**Source:** NAS `/volume2/work/Public Cloud Learning Sessions/VIDEO.mp4`
**Type:** VIDEO | **Category:** 01_AWS-Landing-Zone
**Status:** ✅ 已完成
---
## 摘要
> [Gemini Flash 生成的中文摘要]
---
## 关键概念
- **[概念名称]**: [一句话解释]
---
## 相关视频
> [!info]+ 交叉引用
> [[相关视频文件名]] — 关联原因
```
---
## 五、API Key 汇总
| 服务 | Key | 用途 | 状态 |
|---|---|---|---|
| Google Gemini | `AIzaSyASNIlSc-YYP1dCqKCzk59e7MXSVrnHba0` | 摘要生成 | ✅ 有效 |
| MiniMax | `sk-cp-H0FwKNry9PnMJm...` | Whisper 转录 | ❌ Whisper端点404token plan不支持模型 |
> ⚠️ MiniMax API Key 目前不可用Whisper 端点 404文本模型 500Whisper 改用本地模型。
---
## 六、费用估算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. **文件命名**:文件名中的空格和特殊字符(`_``(``)`)需要正确处理
---
## 八、快捷命令速查
```bash
# 查看音频提取进度
cat ~/.openclaw/temp/xingshu/logs/nas_audio_v3.log | tail -10
# 查看转录摘要进度
tail -f ~/.openclaw/temp/xingshu/logs/nas_whisper_summarize.log
# 查看 NAS 已完成 mp3 数量
ssh shenwei@192.168.3.17 "ls '/volume2/work/Public Cloud Learning Sessions/'*.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"}]}]}'
```