$npx -y skills add chubbyguan/chubbyskills --skill douyin-transcribe抖音视频 → 下载 → 转录 → 存为 Markdown 的完整工作流。 支持短链接和完整链接,无需 cookie/登录。
| 1 | # 抖音视频转录 Skill |
| 2 | |
| 3 | 将抖音视频下载音频,用 SenseVoice-Small 转录为文字,存为 Markdown 文件。 |
| 4 | |
| 5 | ## 环境要求 |
| 6 | |
| 7 | ```bash |
| 8 | # Python 3.9+ |
| 9 | python -m venv .venv |
| 10 | source .venv/bin/activate |
| 11 | |
| 12 | # 依赖 |
| 13 | pip install funasr modelscope torch torchaudio |
| 14 | |
| 15 | # 系统依赖 |
| 16 | # macOS: brew install ffmpeg |
| 17 | # Ubuntu: sudo apt install ffmpeg |
| 18 | ``` |
| 19 | |
| 20 | ## 使用方法 |
| 21 | |
| 22 | ```bash |
| 23 | python scripts/transcribe.py "https://v.douyin.com/xxxxx" |
| 24 | ``` |
| 25 | |
| 26 | ## 流程(3 步) |
| 27 | |
| 28 | ### Step 1: 从抖音下载音频 |
| 29 | |
| 30 | 使用 `iesdouyin.com/share/video/<id>` + 移动端 UA 获取 `window._ROUTER_DATA`,提取 CDN 下载链接。 |
| 31 | |
| 32 | **关键点:** |
| 33 | - ✅ `iesdouyin.com/share/video/` 而非 `douyin.com/video/` |
| 34 | - ✅ 移动端 UA 必须用 iPhone |
| 35 | - ✅ `playwm` → `play` 去水印 |
| 36 | - ✅ 无需 cookie、无需登录、无需 yt-dlp |
| 37 | |
| 38 | ### Step 2: SenseVoice-Small 转录 |
| 39 | |
| 40 | ```python |
| 41 | from funasr import AutoModel |
| 42 | from funasr.utils.postprocess_utils import rich_transcription_postprocess |
| 43 | |
| 44 | model = AutoModel( |
| 45 | model="iic/SenseVoiceSmall", |
| 46 | trust_remote_code=True, |
| 47 | vad_model="fsmn-vad", |
| 48 | vad_kwargs={"max_single_segment_time": 30000}, |
| 49 | device="cpu", |
| 50 | ) |
| 51 | |
| 52 | result = model.generate(input=audio_path, language="zh", use_itn=True, batch_size_s=60) |
| 53 | ``` |
| 54 | |
| 55 | ### Step 3: 生成 Markdown |
| 56 | |
| 57 | 自动创建带 frontmatter 的 Markdown 文件。 |
| 58 | |
| 59 | ## 性能数据 |
| 60 | |
| 61 | | 视频时长 | 模型加载 | 转录耗时 | 总耗时 | |
| 62 | |------|------|------|------| |
| 63 | | 10 min | ~30s | ~25s | ~1 min | |
| 64 | | 30 min | ~30s | ~75s | ~2 min | |
| 65 | | 1h 22min | ~40s | ~180s | ~4 min | |
| 66 | |
| 67 | ## 已知限制 |
| 68 | |
| 69 | - SenseVoice-Small 模型首次下载约 893MB(从 ModelScope,国内快) |
| 70 | - CPU 推理质量略低于 GPU,但中文仍优于 Whisper-small |
| 71 | - VAD 自动切分可能把长停顿处切成两段 |
| 72 | - 不支持说话人分离 |
| 73 | - yt-dlp 不可用(需要 cookie),必须走 iesdouyin 路线 |
| 74 | |
| 75 | ## 参考项目 |
| 76 | |
| 77 | - [FunAudioLLM/SenseVoice](https://github.com/FunAudioLLM/SenseVoice) - 语音识别模型 |
| 78 | - [FunASR](https://github.com/modelscope/FunASR) - 语音识别框架 |
| 79 | - [vangie/douyin-transcriber](https://github.com/vangie/douyin-transcriber) - 原始灵感(Go CLI) |
| 80 | |
| 81 | ## ⚖️ 合规声明 |
| 82 | |
| 83 | 仅供**个人学习与研究**使用。请遵守目标平台的服务条款(ToS)与 robots 规则,控制请求频率,不要用于批量抓取、商用爬取或侵犯他人权益的场景。下载内容的版权归原作者所有。 |