feat(tools-pve/asr-pipeline): multi-backend ASR web app with LiteLLM routing
Build image / build (push) Canceled after 0s
Build ASR Pipeline / image (push) Canceled after 0s

This commit is contained in:
Codex
2026-11-01 22:07:57 -08:00
parent d1790a05b0
commit 2367c5eb4e
23 changed files with 2462 additions and 451 deletions
@@ -3,23 +3,27 @@ from __future__ import annotations
import os
from pathlib import Path
from asrpipe.config import CFG
DATA = Path(os.getenv("ASR_DATA_DIR", "/data"))
INBOX = DATA / "inbox"
PROCESSING = DATA / "processing"
PROCESSED = DATA / "processed"
FAILED = DATA / "failed"
TRANSCRIPTS = DATA / "transcripts"
STATE = Path(os.getenv("ASR_STATE_DIR", "/state"))
DRAFTS = DATA / "artifacts" / "drafts"
RESULTS = DATA / "artifacts" / "results"
STATE = Path(os.getenv("ASR_STATE_DIR", str(CFG.state_dir)))
DRAFTS = Path(os.getenv("ASR_DRAFTS_DIR", str(DATA / "artifacts" / "drafts")))
RESULTS = Path(os.getenv("ASR_RESULTS_DIR", str(DATA / "artifacts" / "results")))
LOGS = DATA / "logs"
META = STATE / "uploads"
REVISION_QUEUE = STATE / "revision-queue"
REVISION_QUEUE = Path(os.getenv("ASR_REVISION_QUEUE_DIR", str(STATE / "revision-queue")))
DB = STATE / "intake.db"
SUPPORTED = {".m4a", ".mp3", ".wav", ".mp4", ".aac", ".ogg", ".opus", ".webm", ".flac"}
PUBLIC_URL = os.getenv("ASR_PUBLIC_URL", "http://192.168.50.49:8788").rstrip("/")
AGENT_TOKEN = os.getenv("ASR_AGENT_TOKEN", "")
DIARIZE_URL = os.getenv("ASR_DIARIZE_URL", "http://192.168.50.100:10099/asr")
WEB_PASSWORD = os.getenv("ASR_WEB_PASSWORD", "")
DIARIZE_URL = os.getenv("ASR_DIARIZE_URL", CFG.diarize_url)
DEFAULT_PROVIDER = os.getenv("ASR_PROVIDER", CFG.asr_provider)
MAX_UPLOAD = int(os.getenv("ASR_UPLOAD_MAX_BYTES", str(4 * 1024**3)))
POLL_SECONDS = max(1, int(os.getenv("ASR_POLL_SECONDS", "5")))
STABLE_SECONDS = max(1, int(os.getenv("ASR_STABLE_SECONDS", "10")))
@@ -27,8 +31,13 @@ MAX_ATTEMPTS = max(1, int(os.getenv("ASR_MAX_ATTEMPTS", "3")))
def ensure_dirs() -> None:
for path in (INBOX, PROCESSING, PROCESSED, FAILED, TRANSCRIPTS, DRAFTS,
RESULTS, STATE, LOGS, META, REVISION_QUEUE, DATA / "cache",
DATA / "artifacts" / "raw", DATA / "vault" / "minutes",
DATA / "vault" / "People", DATA / "vault" / "Companies"):
# Keep asrpipe CFG aligned with container/service paths when running under asrservice
CFG.state_dir
for path in (
INBOX, PROCESSING, PROCESSED, FAILED, TRANSCRIPTS, DRAFTS,
RESULTS, STATE, LOGS, META, REVISION_QUEUE, DATA / "cache",
DATA / "artifacts" / "raw", DATA / "artifacts" / "results",
DATA / "vault" / "minutes", DATA / "vault" / "People",
DATA / "vault" / "Companies", DATA / "vault" / "Projects",
):
path.mkdir(parents=True, exist_ok=True)