Add Groq Whisper API integration (200x faster than local CPU)
Pipeline:
- New transcribe_with_groq() function uses Groq's whisper-large-v3-turbo
- 30s audio transcribed in ~0.5s (vs 30s+ on CPU)
- Same quality as local Whisper (it's the same OpenAI model)
- Cloudflare bypass via custom User-Agent header
- 24MB upload limit guard with auto-fallback to local
- Language auto-detect works (Groq returns full lang name, mapped to ISO codes)
Default whisper_provider='auto':
- If GROQ_API_KEY is set → use Groq (200x faster)
- Otherwise → fallback to local faster-whisper
- Strict 'groq' mode: no fallback (returns empty if Groq fails)
- Strict 'local' mode: skip Groq entirely
CLI: --whisper-provider {auto,groq,local}
API: whisper_provider field in StartJobIn
Cost: $0.04/h with whisper-large-v3-turbo ($0.002 per 200s song)
This commit is contained in:
@@ -247,6 +247,9 @@ def process_job(job_id):
|
||||
# Brez extension
|
||||
fn_hint = Path(job["filename"]).stem
|
||||
cmd += ["--filename-hint", fn_hint]
|
||||
# Whisper provider (groq = 200x hitreje od lokalnega)
|
||||
if job.get("whisper_provider"):
|
||||
cmd += ["--whisper-provider", job["whisper_provider"]]
|
||||
# lang: če None ali 'auto', pusti analyze.py auto-detect
|
||||
if job.get("lang") and job["lang"] not in ("auto", ""):
|
||||
cmd += ["--lang", job["lang"]]
|
||||
@@ -500,6 +503,8 @@ class StartJobIn(BaseModel):
|
||||
# LLM za semantično analizo + popravke
|
||||
llm_provider: str = "claude" # claude / gemini / auto
|
||||
llm_model: Optional[str] = None # specifičen model (privzeto najboljši za provider)
|
||||
# Whisper provider (Groq je 200x hitrejši od lokalnega CPU faster-whisper)
|
||||
whisper_provider: str = "auto" # auto / groq / local
|
||||
|
||||
|
||||
# ────────────────────────────────────────────────────────────────
|
||||
@@ -605,6 +610,7 @@ async def start_processing(
|
||||
quality=payload.quality,
|
||||
llm_provider=payload.llm_provider,
|
||||
llm_model=payload.llm_model,
|
||||
whisper_provider=payload.whisper_provider,
|
||||
current_step="V vrsti za obdelavo",
|
||||
# Počisti pretekle napake (retry-friendly)
|
||||
chorus_error=None,
|
||||
|
||||
Reference in New Issue
Block a user