# Cloud Learning 音视频处理流水线 > 文档版本:2026-04-15 > 维护者:星枢(xingshu) > 状态:✅ 已验证可运行 --- ## 一、整体架构 ``` NAS 视频源 │ ▼ [阶段1] FFmpeg 音频提取 │ MP4 → MP3 ▼ NAS MP3 文件库 │ ▼ [阶段2] Whisper 转录 │ MP3 → 英文字幕/转写稿 ▼ Macmini 本地转写稿 │ ▼ [阶段3] Gemini Flash 摘要 │ 转写稿 → 结构化中文笔记 ▼ Obsidian 知识库 ``` --- ## 二、各阶段详解 ### 阶段 1:FFmpeg 音频提取 | 项目 | 说明 | |---|---| | **输入** | NAS 上的 `.mp4` 文件(`/volume2/work/Public Cloud Learning Sessions/`) | | **输出** | 同目录下的同名 `.mp3` 文件 | | **工具** | FFmpeg(Macmini 已安装:`/opt/homebrew/bin/ffmpeg`) | | **转码参数** | `-vn -acodec libmp3lame -ab 64k -ar 22050 -ac 1`(64kbps CBR,针对人声优化)| | **传输方式** | `ssh cat` 管道(NAS 不需要挂载)| | **速度** | ~400x realtime(1小时视频 ≈ 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` --- ### 阶段 2:Whisper 转录 | 项目 | 说明 | |---|---| | **输入** | NAS 上的 `.mp3` 文件(已由阶段1生成)| | **输出** | 英文字幕/转写稿(纯文本)| | **工具** | `openai-whisper`(Python 包,通过 `pip install openai-whisper` 安装)| | **模型** | `small`(精度与速度平衡,M 系列芯片友好)| | **硬件** | Macmini 本地运行(Neural Engine 加速)| | **速度** | ~50x realtime(1小时音频 ≈ 40-50秒)| | **内存** | ~1.5GB(small 模型)| | **费用** | 完全免费(本地运行,无需 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(英文) --- ### 阶段 3:Gemini Flash 摘要 | 项目 | 说明 | |---|---| | **输入** | Whisper 转写的英文字幕/转写稿 | | **输出** | 结构化中文笔记(摘要 + 关键概念 + 相关链接)| | **工具** | Google Gemini API(直接 HTTP 调用,不依赖 summarize CLI)| | **模型** | `gemini-3-flash-preview` | | **费用** | ~0.075$/百万输入 tokens(3000分钟音频 ≈ ~$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端点404,token plan不支持模型 | > ⚠️ MiniMax API Key 目前不可用(Whisper 端点 404,文本模型 500),Whisper 改用本地模型。 --- ## 六、费用估算(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"}]}]}' ```