# douyin **Repository Path**: e-conage/douyin ## Basic Information - **Project Name**: douyin - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-23 - **Last Updated**: 2026-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Douyin Transcript Tool 一个本地运行的抖音视频原文提取工具。上传视频后,后端使用 `ffmpeg` 提取音频,再用 `faster-whisper` 转写中文口播内容,前端展示并编辑完整逐字稿、预览视频和历史记录。 ## 功能 - 上传 `mp4`、`mov`、`m4v`、`avi`、`mkv` 视频 - 后端提取 16kHz 单声道 wav 音频 - 使用 `faster-whisper` 输出中文逐字稿和字幕片段 - 支持阿里云百炼智谱 GLM 模型对逐字稿做 AI 纠错 - 支持根据逐字稿生成 4 条同风格口播文本 - MySQL 保存历史记录 - 支持查看、重试、删除、下载 TXT ## 目录 ```text backend/ app/ data/ db/ requirements.txt frontend/ src/ package.json ``` ## 环境准备 需要本机已安装: - Python 3.10+ - Node.js 18+ - ffmpeg - MySQL 8,本项目默认使用 Docker 容器 `douyin` macOS 生成字幕视频需要带 `subtitles/libass` 滤镜的 FFmpeg。先检查: ```bash ffmpeg -hide_banner -filters | grep subtitles ``` 如果没有输出,说明当前 FFmpeg 不能烧录 ASS 字幕。建议安装带 `libass` 的版本,并在 `backend/.env` 指定: ```text FFMPEG_PATH=/opt/homebrew/bin/ffmpeg FFPROBE_PATH=/opt/homebrew/bin/ffprobe SUBTITLE_FONT=PingFang SC ``` Windows 可以继续使用项目内 `tools/ffmpeg/.../ffmpeg.exe`,或在 `backend/.env` 指定: ```text FFMPEG_PATH=D:\ffmpeg\bin\ffmpeg.exe FFPROBE_PATH=D:\ffmpeg\bin\ffprobe.exe SUBTITLE_FONT=Microsoft YaHei ``` ## 启动后端 默认数据库连接: ```text mysql+pymysql://root:douyin123456@127.0.0.1:3307/douyin ``` 如果容器未启动: ```bash docker start douyin ``` ```bash cd backend python -m venv .venv source .venv/bin/activate pip install -r requirements.txt cp .env.example .env uvicorn app.main:app --reload --host 127.0.0.1 --port 8000 ``` 默认 Whisper 配置在 `backend/.env.example` 中: ```text WHISPER_MODEL=medium WHISPER_DEVICE=cpu WHISPER_COMPUTE_TYPE=int8 WHISPER_LANGUAGE=zh WHISPER_INITIAL_PROMPT= HF_ENDPOINT=https://hf-mirror.com ``` `WHISPER_INITIAL_PROMPT` 默认留空,避免 Whisper 在短音频、静音或低置信度片段里把提示词误输出到正文。 第一次转写会从 `HF_ENDPOINT` 下载或加载 Whisper 模型,耗时会更长。 如果要使用“AI纠错”和“生成同风格4条”,在后端 `.env` 中配置阿里云百炼 API Key: ```text DASHSCOPE_API_KEY=sk-xxx AI_CORRECTION_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 AI_CORRECTION_MODEL=ZHIPU/GLM-5.1 AI_CORRECTION_TIMEOUT_SECONDS=120 ``` ## 启动前端 ```bash cd frontend npm install npm run dev ``` 打开: ```text http://127.0.0.1:5173 ``` ## API - `POST /api/douyin/search` - `GET /api/douyin/login-browser/status` - `POST /api/douyin/login-browser` - `POST /api/videos/upload` - `POST /api/videos/{taskId}/transcribe` - `GET /api/videos/{taskId}/status` - `GET /api/videos/{taskId}/transcript` - `POST /api/transcript/correct` - `POST /api/transcript/variants` - `GET /api/videos` - `DELETE /api/videos/{taskId}` - `GET /api/videos/{taskId}/download-txt` ## 数据存储 - 视频:`backend/data/videos/` - 音频:`backend/data/audios/` - TXT:`backend/data/transcripts/` - 抖音搜索浏览器资料:`backend/data/browser-profile/` - MySQL:`127.0.0.1:3307/douyin` ## 抖音关键词搜索 前端“抖音搜索 Top 50”会调用后端自动打开本机 Chrome 搜索抖音,并按解析到的点赞数倒序展示最多 50 条视频。 第一次使用时,抖音可能显示登录或验证码页面。前端“账号会话”里可以打开登录窗口,也可以清空当前登录态后切换账号。后端默认使用可见 Chrome: ```text DOUYIN_BROWSER_CHANNEL=chrome DOUYIN_BROWSER_HEADLESS=false DOUYIN_BROWSER_USER_DATA_DIR=data/browser-profile DOUYIN_BROWSER_MANUAL_TIMEOUT_SECONDS=600 ``` 在弹出的 Chrome 里完成验证或登录后,后续搜索会复用这个资料目录里的状态。如果要换号,点击“切换账号”会清空 `backend/data/browser-profile/` 并重新打开登录窗口。`DOUYIN_BROWSER_MANUAL_TIMEOUT_SECONDS` 控制后端等待人工验证/登录的最长时间,默认 600 秒。 # 抖音视频工作台 Web 开发环境的启动方法见 [启动说明.md](./启动说明.md)。 Windows 单机桌面版的构建和数据目录说明见 [Windows桌面版说明.md](./Windows桌面版说明.md)。