yapsnap

5个月前发布 210 00

yapsnap 是一个轻量级、纯 CPU 运行的命令行工具,能够将任何视频 URL 或本地音频文件快速“快照”为纯文本。无需 GPU,无需云端,只需一条命令,即可在你的笔记本上以数倍于实时的速度完成转录。

所在地:
美国
收录时间:
2026-05-23

在视频内容爆炸式增长的今天,将音频转化为可搜索、可编辑的文本是一项高频需求。然而,传统的转录工具往往面临两大困境:要么依赖昂贵的云端 API 且存在隐私泄露风险,要么需要高性能 GPU 和本地部署复杂的深度学习框架。

yapsnap 是一个轻量级、纯 CPU 运行的命令行工具,能够将任何视频 URL 或本地音频文件快速“快照”为纯文本。无需 GPU,无需云端,只需一条命令,即可在你的笔记本上以数倍于实时的速度完成转录。

核心亮点:为何选择 yapsnap?

1. 极致轻量,纯 CPU 加速

  • 无需 GPU:基于 Sherpa-ONNX 和流式 **Zipformer transducer模型,yapsnap 能在普通 CPU 上高效运行,速度远超实时播放。
  • 零云依赖:首次运行下载约 80 MB 模型后,后续所有操作完全离线。你的音频数据永远不会离开本地机器,彻底杜绝隐私泄露。
  • 精简依赖:仅需 sherpa-onnx、numpy 和 yt-dlp,无需安装庞大的 PyTorch 或云端 SDK。

2. 全平台视频/音频支持

  • 万能输入:支持 YouTube、X (Twitter)、TikTok、Instagram Reels、直接媒体链接以及本地 MP3/MP4 文件。
  • 自动化流程:内部集成 yt-dlp 负责下载最佳音频流,ffmpeg 负责解码为 16kHz 单声道 PCM,全程自动化处理。

3. 高级功能:时间戳与说话人分离

  • 句子级时间戳:使用 --timestamps 参数,可为每句话添加 [MM:SS] 标记,即使加速转录,时间戳依然精准对应原始音频。
  • 说话人分离 (Diarization):使用 --diarize 参数,自动识别并标记不同说话人(如 SPEAKER_00, SPEAKER_01),完美适用于访谈、会议记录等场景。
  • 多语言支持:开箱即用英语,并通过 --model 轻松切换支持法语、德语、西班牙语、中文等 10+ 种语言。

快速开始指南

1. 环境准备

确保系统中已安装 ffmpeg 并加入 PATH。

2. 安装 yapsnap

pip install yapsnap

3. 基本用法

# 转录 YouTube 视频
yapsnap "https://www.youtube.com/watch?v=dQw4w9WgXcQ"

# 转录本地音频并添加时间戳
yapsnap meeting.mp4 --timestamps

# 转录访谈录音并标记说话人
yapsnap interview.mp3 --diarize

# 指定输出路径
yapsnap podcast.mp3 -o ~/notes/episode.txt

注:首次运行时会自动下载模型,后续运行完全离线。

高级配置与技巧

参数说明示例
--timestamps添加句子级时间戳 [MM:SS]yapsnap video.mp4 --timestamps
--diarize启用说话人分离,标记 SPEAKER_XXyapsnap call.mp3 --diarize
--num-speakers N指定已知说话人数量,提高准确率yapsnap call.mp3 --diarize --num-speakers 2
--speed 1.0禁用音频加速,以原始速度处理yapsnap input.mp3 --speed 1.0
--keep-audio保留下载的临时音频文件yapsnap "https://..." --keep-audio
-o path自定义输出文件路径yapsnap input.mp4 -o ./transcripts/out.txt

工作原理揭秘

  1. 获取 (Fetch):若是 URL,yt-dlp 下载最佳音频流至临时目录。
  2. 解码 (Decode):ffmpeg 将媒体转换为标准的 16kHz 单声道 PCM 格式。
  3. 识别 (Recognize):流式 Zipformer2 模型逐块处理 PCM 数据,纯 CPU 运算,效率极高。
  4. 格式化 (Format):
    • 默认输出纯文本。
    • 若启用 --timestamps,根据标点符号将 Token 分组为句子,并映射回原始时间。
    • 若启用 --diarize,进行第二遍处理:通过声纹聚类识别说话人,并为每个句子分配对应的说话人标签。

局限性与注意事项

  • 重叠语音:目前不支持处理多人同时说话的重叠语音,每个时刻仅分配给一个主要说话人。
  • 说话人数量限制:当说话人超过 7 人时,自动检测准确率可能下降。建议已知人数时使用 --num-speakers 参数。
  • 标签独立性:说话人标签(如 SPEAKER_00)仅在单次运行内有效,不同文件间的同一说话人不会被关联。

相关导航