尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

whisper.py 纯标准库客户端:claude-video 如何告别 SDK 依赖

whisper.py 纯标准库客户端:claude-video 如何告别 SDK 依赖 whisper.py 纯标准库客户端claude-video 如何告别 SDK 依赖【免费下载链接】claude-videoGive Claude the ability to watch any video. /watch downloads, extracts frames, transcribes, hands it all to Claude.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-videoclaude-video 是一个让 Claude「看懂视频」的开源 Skill一条/watch命令就能下载视频、抽取关键帧、转写音频字幕把所有素材一起交给 Claude 回答你的问题。而它音频转写环节最耐人寻味的部分是 scripts/whisper.py——一个零第三方依赖、纯 Python 标准库实现的 Whisper 语音识别客户端。这篇文章带你读懂它是怎么「不装任何 SDK」就调通 Groq / OpenAI 转写 API 的。claude-video 简介/watch 背后的处理流水线claude-video 解决了一个常见痛点你往 Claude 里丢一个视频链接它只能靠标题瞎猜。装上这个 Skill 后/watch会启动一条四段式流水线完整说明见 SKILL.md 与 README.md环节工具产物1. 下载视频yt-dlp本地视频文件2. 抽取关键帧ffmpeg一批带时间戳的 JPEG3. 获取转录文本字幕优先Whisper 兜底带时间戳的文字稿4. 交给 ClaudeRead 工具基于「所见所闻」的回答其中第 3 步是本文的主角大多数公开视频有现成字幕免费且快但当视频没有字幕轨本地文件、部分 TikTok/Vimeo 等时transcribe.py 就会把接力棒交给 whisper.py走 API 转写路线。为什么要告别 SDK纯标准库的设计哲学按常规做法调用 Whisper API 你会执行pip install groq或pip install openai再用各家 SDK 发请求。whisper.py 的文档字符串开门见山scripts/whisper.pyPure stdlib — nopip install groqorpip install openaineeded.它的全部 import 只来自标准库scripts/whisper.pyurllib.request发 HTTP 请求、io拼装请求体、json解析响应、mimetypes识别文件类型、uuid生成分隔符、ssl处理安全上下文……仅此而已。这样做对新手和使用者都有实实在在的好处零安装不需要管理虚拟环境、不担心版本冲突拿到仓库就能跑少维护SDK 升级、依赖冲突这些坑直接不存在敢手写的原因Whisper 的 multipart 上传协议「小而可预测」自己拼请求体完全可行作者原话见 scripts/whisper.py核心三招不到 300 行搞定 API 客户端1️⃣ API Key 自动发现环境变量 .env 双通道load_api_key()scripts/whisper.py按优先级找密钥先找GROQ_API_KEYGroq 更便宜更快再找OPENAI_API_KEY来源依次是系统环境变量再到~/.config/watch/.env或当前目录的.env。特别巧妙的是它手写了一个迷你 dotenv 解析器——逐行读取、跳过注释、去掉引号——而不是引入python-dotenv依赖。配套的 scripts/setup.py 会在首次运行时生成这个.env文件权限 0600用户只需填一个密钥。2️⃣ 手工拼装 multipart/form-data 上传这是全文件最「硬核」的部分。_build_multipart()scripts/whisper.py用io.BytesIO逐段写入先写字段model、response_format、temperature再写文件块——用uuid4生成独一无二的 boundary 分隔符用mimetypes自动猜出audio/mpeg之类的 Content-Type最后闭合边界。对新手来说这是个很好的启蒙HTTP 表单上传的底层结构其实就是一个带分隔线的文本拼盘requests 帮你做的事手动做也完全可控。3️⃣ 生产级重试策略429 限速、指数退避、Retry-After_post_whisper()scripts/whisper.py把网络调用的「脏活」全干了最多 4 次尝试首次 3 次重试常量定义见 scripts/whisper.py4xx 客户端错误不重试重试也不会好唯独 429 限速给 2 次机会且优先尊重服务器返回的Retry-After头网络抖动超时、连接重置用递增延迟重试一个细节Groq 背后有 Cloudflare默认的Python-urllibUser-Agent 会触发 WAF 直接 403代码里改用了诚实的自定义 UA 放行scripts/whisper.py——这类「坑位注释」对排障极有价值统一输出契约让流水线「不知道」字幕来自哪里音频上传前extract_audio()scripts/whisper.py会用 ffmpeg 把视频压成单声道 16kHz 64kbps 的 mp3——约 480 KB/分钟稳稳卡在 25 MB 上传限制内约 50 分钟音频。拿到响应后_segments_from_response()scripts/whisper.py把 Whisper 的verbose_json归一化成{start, end, text}三种子段——这和 scripts/transcribe.py 里解析 VTT 字幕的parse_vtt()输出形状完全一致。于是下游的filter_range()按--start/--end截取片段和format_transcript()完全不需要知道文本是字幕来的还是 API 转的。「用统一契约解耦数据来源」是这篇源码最值得新手偷师的设计。独立运行不装 Skill 也能直接跑whisper.py 自带命令行入口装好ffmpeg、配好任一 API Key 后scripts/setup.py 可引导配置在仓库目录下执行python3 scripts/whisper.py 视频.mp4 [--backend groq|openai]它会打印转写进度最后输出backend segments的 JSON。想指定后端就用--backend缺省则按 Groq 优先自动选择。新手能从中学到什么 标准库够用urllib.request 手写 multipart足以覆盖绝大多数 REST API 调用场景协议不神秘multipart 表单就是「分隔符 头 内容」的文本拼装读懂它以后看任何 HTTP 库都不慌重试要分类4xx 不重试、429 尊重 Retry-After、网络错误递增退避——这套模板可直接复制到你的项目契约优先把不同来源的数据归一化成同一形状下游逻辑才能保持简单如果你想亲自上手 claude-video可以克隆仓库git clone https://gitcode.com/GitHub_Trending/cl/claude-video然后从 scripts/whisper.py 这份不到 320 行的纯标准库客户端读起它会是一个比任何教程都接地气的「HTTP 请求实战范本」。【免费下载链接】claude-videoGive Claude the ability to watch any video. /watch downloads, extracts frames, transcribes, hands it all to Claude.项目地址: https://gitcode.com/GitHub_Trending/cl/claude-video创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表