2.0 KiB
2.0 KiB
录音上传与审核工作台
入口
- Web:
http://192.168.50.145:8765/ - 健康检查:
GET /health - 最近任务:
GET /api/jobs - 人工确认:
GET /review/
服务只面向 LAN 与 tailnet,没有实现公网身份认证。未来暴露到公网时,应在反向代理层 增加认证、上传大小限制和请求速率限制,不要直接转发当前端口。
工作流
- 浏览器把录音以原始二进制流上传到隐藏临时目录。
- 文件完整写入并
fsync后,原子移动到recordings/inbox/。 - 既有
obsidian-recording-watch.service接管转写、CAM++ 分角色和声纹识别。 - 转写落入
.asr-inbox/,独立整理程序生成私有草稿。 - Telegram 发送确认链接;Web 回答写入 SQLite。
- 全部确认后生成正式纪要并写入 Obsidian。
上传时填写的背景单独保存在任务元数据中,进入整理提示时会标为“用户提供的背景”, 不会混入或伪装成 ASR 转写内容。
Hook
POST /hook/intake 与 Web 上传使用相同的流式协议,便于以后在外网部署一个很薄的上传
前端或反向代理:
curl --fail-with-body \
-X POST \
-H 'Content-Type: application/octet-stream' \
-H 'X-Filename: call.m4a' \
-H 'X-Title: 项目通话' \
-H 'X-Context: 参与人、项目和希望重点确认的事项' \
--data-binary @call.m4a \
http://192.168.50.145:8765/hook/intake
响应中的 job_id 是任务标识。状态可从 /api/jobs 查询。
运行
systemctl --user status asr-review-web.service
systemctl --user restart asr-review-web.service
journalctl --user -u asr-review-web.service -n 100 --no-pager
curl -fsS http://127.0.0.1:8765/health
持久数据:
asr-pipeline/state/intake.db:上传任务与状态。recordings/state/uploads/:上传标题、背景和任务关联。recordings/inbox/.uploading/:未完成上传;正常完成后为空。
默认单文件上限为 4 GiB,可通过 ASR_UPLOAD_MAX_BYTES 调整。