crispasr-caller
- Python 100%
- Web 界面提交 B站视频/音频转录任务 - 实时进度显示 - 历史记录 + 结果下载 - API 代理模式 (前端 → LTAB) - 纯 HTML/CSS/JS 内嵌前端,无外部依赖 |
||
|---|---|---|
| app.py | ||
| README.md | ||
CrispASR Caller
LTAB 调用方前端 — 通过 Web 界面提交 B站视频/音频转录任务到 LTAB,实时查看进度和结果。
架构位置
[本项目] ──→ LTAB ──→ Executor ──→ CrispASR
Caller
102:9090 102:1111 50:WSL(GPU)
本项目是 LTAB 的一个 Caller 实现,仅调用 LTAB 的 Caller API(无需认证)。
功能
- 📺 B站视频转录:输入 B站链接,自动下载音频并转写
- 🔗 直链音频转录:输入任意音频/视频 URL
- 📊 实时进度:自动轮询任务状态,显示进度条
- 📜 历史记录:保存已完成任务,支持结果下载
- 🎨 简洁 UI:单页面,无框架依赖
全链路流程
1. 用户输入 B站链接
2. 前端构造 input_data:
{type: "json", value: "{\"source\":\"bilibili\",\"url\":\"...\",\"language\":\"zh\"}"}
3. POST /api/submit → 前端代理 → LTAB /task/submit
4. LTAB 创建任务 (waiting)
5. Executor 拉取并处理 (running → done)
6. 前端轮询 LTAB /task/status/{id} 显示进度
7. 完成后 GET /task/result/{id} 获取下载链接
API 代理
本前端不直接调用 LTAB,而是通过自身的 /api/* 端点代理:
| 前端路径 | 代理到 LTAB | 说明 |
|---|---|---|
GET /api/info |
GET /task/list |
获取任务类型和 executor 状态 |
POST /api/submit |
POST /task/submit |
提交任务(前端负责格式转换) |
GET /api/tasks |
本地状态 | 活跃任务和历史记录 |
GET /api/task/{id} |
GET /task/status/{id} |
查询任务状态 |
POST /api/cancel/{id} |
POST /task/cancel/{id} |
取消任务 |
input_data 格式转换
前端接收用户的简单输入,转换为 LTAB 要求的 {type, value} 格式:
用户输入: {source: "bilibili", url: "https://...", language: "zh"}
↓ 转换
LTAB 格式: {type: "json", value: "{\"source\":\"bilibili\",\"url\":\"...\",\"language\":\"zh\"}"}
部署
依赖
pip install fastapi uvicorn httpx
启动
# 直接运行
python -m uvicorn app:app --host 0.0.0.0 --port 9090
# 或 systemd
# /etc/systemd/system/crispasr-caller.service
[Unit]
Description=CrispASR Caller Frontend
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 -m uvicorn app:app --host 0.0.0.0 --port 9090
WorkingDirectory=/opt/ltab-caller
Restart=always
[Install]
WantedBy=multi-user.target
配置
在 app.py 顶部修改:
LTAB_BASE = "http://ltab.cloverdo.cn:1111" # LTAB 地址
项目结构
crispasr-caller/
├── app.py # FastAPI 应用(API 代理 + 内嵌前端 HTML)
└── README.md # 本文档
技术细节
- 后端: Python + FastAPI + httpx(异步 HTTP 客户端)
- 前端: 纯 HTML/CSS/JS(内嵌在 app.py 的 FRONTEND_HTML 变量中)
- 状态管理: 内存中的 active_tasks 字典 + JSON 文件持久化历史
- 轮询: 前端每 3 秒刷新任务列表,后端线程每 2 秒轮询 LTAB 状态
当前部署信息
| 项目 | 地址 |
|---|---|
| 本服务 | http://10.10.10.102:9090 |
| LTAB | http://ltab.cloverdo.cn:1111 |
| Forgejo | http://10.10.10.100:3333/Cloverdo/crispasr-caller |