crispasr-caller
Find a file
Layla 8c27f107cd init: CrispASR Caller - LTAB 调用方前端
- Web 界面提交 B站视频/音频转录任务
- 实时进度显示
- 历史记录 + 结果下载
- API 代理模式 (前端 → LTAB)
- 纯 HTML/CSS/JS 内嵌前端,无外部依赖
2026-07-14 22:20:49 +08:00
app.py init: CrispASR Caller - LTAB 调用方前端 2026-07-14 22:20:49 +08:00
README.md init: CrispASR Caller - LTAB 调用方前端 2026-07-14 22:20:49 +08:00

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