开发者生态
morning
Show HN:仅 CPU 转录 YouTube、TikTok、X、Instagram 视频
2026-05-20
1 阅读
mrkn1
yapsnap 将任何视频 URL 或音频文件捕捉为纯文本。没有 GPU。没有云。一声令下。 yapsnap“https://www.youtube.com/watch?v=dQw4w9WgXcQ”就是这样。您会在 shell 旁边得到一个 .txt,该文件在 CPU 上转录,所用时间比播放视频所用的时间还要短。为什么选择 yapsnap ⚡ CPU 速度快。流式 Zipformer 传感器(Kroko English)在笔记本电脑上实时多次咀嚼音频。没有CUDA。没有 M 系列独有的技巧。普通的旧核心。 ? 任何视频 URL,以及本地文件。 YouTube。十、TikTok。 Instagram 卷轴。直接 .mp4 / .mp3 链接。或者只是将其指向磁盘上的文件。 yt-dlp 处理获取,ffmpeg 处理解码,剩下的就是你的了。 ? 第一次运行后离线。约 80 MB 的模型一次下载到您的缓存并保留在那里。没有 API 密钥。没有配额。您的音频永远不会离开您的机器。 ? 一个文件,三个部门。夏尔巴-onnx、numpy、yt-dlp。整个工具是一个 Python 模块。 ⏱ 在需要时提供句子级时间戳。 --timestamps 使用 Kroko 的内置标点符号为每个句子添加 [MM:SS]。即使您以 2 倍转录,时间也保持正确。快速入门 # 1. PATH 上的 ffmpeg(每个操作系统一次性 — 见下文) # 2. 安装 pip install 。 # 3. 拍摄一些内容 yapsnap https://www.tiktok.com/@user/video/7234567890123456789 yapsnap meet.mp4 --timestamps yapsnap podcast.mp3 -o ~ /notes/episode.txt 第一次运行下载模型 (~80 MB)。之后的每次运行都是离线的。它处理什么 yt-dlp 理解的任何 URL 都可以工作。重要的: 来源示例 YouTube https://www.youtube.com/watch?v=... YouTube Shorts https://www.youtube.com/shorts/... X / Twitter https://x.com/user/status/.../video/1 TikTok https://www.tiktok.com/@user/video/... Instagram Reels https://www.instagram.com/reel/.../ 直接媒体 URL https://example.com/clip.mp4 加上任何本地文件 ffmpeg 都可以解码: .mp3 、 .mp4 、 .m4a 、 .wav 、 .webm 、 .mov 、 .mkv 、 .aac 、 .opus 、 .ogg 、 .flac 和朋友。安装 1. ffmpeg 操作系统命令 macOS brew install ffmpeg Linux sudo apt install ffmpeg 或 sudo dnf install ffmpeg Windows winget install ffmpeg 或 choco install ffmpeg 2. yapsnap pip install 。在您的 PATH 上安装两个等效命令:yapsnap(规范)和 transcribe(别名,当您忘记名称时使用)。用法 # 本地文件 yapsnap path/to/audio.mp3 # 任何视频 URL yapsnap " https://www.youtube.com/watch?v=dQw4w9WgXcQ " # 句子级时间戳 yapsnap input.mp4 --timestamps # 自定义输出路径 yapsnap input.mp4 -o ./transcripts/talk.txt # 转录前不加速音频(默认为1.5x,保留音调) yapsnap input.mp4 --speed 1.0 # 保留下载的音频(仅限 URL 输入) yapsnap " https://... " --keep-audio 输出纯文本,UTF-8。默认位置是当前工作目录下的./transcripts/(如果丢失则创建);用 -o 覆盖。对于 URL 输入,文件名源自视频 ID( dQw4w9WgXcQ_transcript.txt 等)。没有 --timestamps — 一段可识别的文本:欢迎来到节目。今天我们要讨论的是转录。让我们开始吧。使用 --timestamps — 每行一个句子,与原始音频同步:[00:00] 欢迎来到节目。 [00:03] 今天我们谈论转录。 [00:08] 让我们开始吧。即使速度为 1.5 或更高,时间戳仍保持原始音频时间。标志 标志 描述 -o , --output 输出 .txt 路径。默认值: ./transcripts/_transcript.txt 。 --timestamps 发出 [MM:SS] 句子。行而不是单个段落。 --speed 转录前加速因子,保留音调。默认 1.5。 --keep-audio 保留下载的音频(仅限 URL 输入)。 --model 覆盖模型目录。还读取 KROKO_MODEL 环境变量。它是如何工作的 获取。如果输入是 URL,yt-dlp 会将最佳的纯音频流抓取到临时目录。如果是本地路径则跳过此步骤。解码。 ffmpeg 将媒体传输到 16 kHz 单声道 PCM。可选的 Atempo 滤波器可在不提高音高的情况下加快速度。认出。流式 Zipformer2 转换器(Kroko English,INT8 ONNX,约 80 MB)会分块吃掉 PCM。仅 CPU。贪婪解码。格式。默认为纯文本。使用 --timestamps ,令牌时间戳按 .!? 分组。分成句子并缩减到原始音频时间。没有帧发送到任何地方。除了缓存的模型之外,运行之间不保留任何状态。模型和缓存 默认 Kroko 英语模型在首次运行时下载到: macOS — ~/Library/Caches/yapsnap/ Linux — $XDG_CACHE_HOME/yapsnap/ (或 ~/.cache/yapsnap/ ) Windows — %LOCALAPPDATA%\yapsnap\ 要使用不同的流转换器(其他语言、较大的 Kroko 变体等),请将 --model 指向包含编码器(.int8).onnx 的目录、解码器(.int8).onnx、joiner(.int8).onnx 和 tokens.txt 。或者在您的环境中设置 KROKO_MODEL。注意事项和限制 默认模型仅支持英语。对于其他语言,请通过 --model 提供匹配的 sherpa-onnx 流转换器。 --speed 1.5 以最小的准确性成本将转录时间缩短了约三分之一。如果您想要更快,请尝试 2.0;如果您想要更快,请尝试 1.0。