Fix: clip_range source dynamic from LLM result instead of hardcoded 'claude'
Diagnoza:
- analyze.py je zgodovinsko imel samo Claude support
- ko se je dodal Gemini, je clip_range.source ostal hardcoded 'claude'
- prav tako log 'Whisper segmenti zamenjani s Claude' in 'Generated SRT from Claude'
- API rezultat je v jobu kazal source='claude' tudi ko je dejansko bil uporabljen Gemini
- to je samo COSMETIC bug — funkcionalno je vse delovalo pravilno
- Gemini se DEJANSKO klical (potrjeno: '🤖 Gemini (gemini-3.1-pro-preview) izbral: 172.5-201.8s')
in vrnil pravilen rezultat — samo logging je rekel napačno
Popravki:
1. clip_range['source'] = claude_result['source'] (dejansko 'gemini:...' ali 'claude:...')
2. clip_range['reason'] prefix iz hardcoded 'claude_llm:' v dinamičen '{source}:'
3. Log 'Whisper segmenti zamenjani s Claude' → 'z {llm_label}'
4. Log 'Claude je popravil jezik' → 'LLM je popravil'
5. main.py 'Generated SRT from Claude' → 'from {llm_src}'
Test (Zlati Muzikanti - Le prijatelja bodiva, valček, 246s):
✓ Gemini dejansko izbere refren (172.5-201.8s)
✓ Whisper detektira sl (p=0.97 across 3 samples)
✓ Vseh 18 segmentov popravljenih
✓ Pipeline end-to-end deluje
Backward compat:
- transcript['claude_corrected'] in srt_from_claude variable name ohranjena
ker že obstajajo v starih job state fajlih
This commit is contained in:
parent
e350352883
commit
0ca33be6ac
@ -267,7 +267,8 @@ def process_job(job_id):
|
||||
srt_path_out,
|
||||
)
|
||||
srt_from_claude = str(srt_path_out)
|
||||
print(f"📝 Generated SRT from Claude transcript: {srt_path_out}")
|
||||
llm_src = cr.get("source", "LLM")
|
||||
print(f"📝 Generated SRT from {llm_src} transcript: {srt_path_out}")
|
||||
except Exception as e:
|
||||
print(f"⚠️ SRT generation failed: {e}")
|
||||
|
||||
|
||||
@ -830,18 +830,22 @@ def main():
|
||||
),
|
||||
}
|
||||
|
||||
# 6. Clip range — Claude ima prednost, sicer smart_clip_range fallback
|
||||
# 6. Clip range — LLM (Claude/Gemini) ima prednost, sicer smart_clip_range fallback.
|
||||
# POMEMBNO: spremenljivka se zgodovinsko imenuje claude_result, dejansko pa vsebuje
|
||||
# rezultat KATEREGA KOLI LLM-ja (Claude ali Gemini) — glej analyze_with_llm().
|
||||
# llm_source npr. "claude:claude-sonnet-4-6" ali "gemini:gemini-3.1-pro-preview".
|
||||
if claude_result:
|
||||
llm_source = claude_result.get("source", "llm")
|
||||
clip_range = {
|
||||
"start": claude_result["start"],
|
||||
"end": claude_result["end"],
|
||||
"duration": claude_result["duration"],
|
||||
"reason": "claude_llm: " + claude_result.get("reason", ""),
|
||||
"reason": f"{llm_source}: " + claude_result.get("reason", ""),
|
||||
"chorus_text": claude_result.get("chorus_text", ""),
|
||||
"structure": claude_result.get("structure", ""),
|
||||
"source": "claude",
|
||||
"source": llm_source,
|
||||
}
|
||||
# Apply max_duration cap če Claude pretirava
|
||||
# Apply max_duration cap če LLM pretirava
|
||||
if clip_range["duration"] > args.max_duration:
|
||||
clip_range["end"] = clip_range["start"] + args.max_duration
|
||||
clip_range["duration"] = args.max_duration
|
||||
@ -891,12 +895,13 @@ def main():
|
||||
"words": orig.get("words", []) if orig else [],
|
||||
})
|
||||
transcript["segments"] = new_segments
|
||||
transcript["claude_corrected"] = True
|
||||
# Posodobi tudi jezik če Claude je drugačnega mnenja
|
||||
transcript["claude_corrected"] = True # ohranimo ime ključa zaradi backward compat
|
||||
# Posodobi tudi jezik če LLM je drugačnega mnenja
|
||||
if claude_result.get("language") and claude_result["language"] != transcript["language"]:
|
||||
print(f" ✏️ Claude je popravil jezik: {transcript['language']} → {claude_result['language']}", file=sys.stderr)
|
||||
print(f" ✏️ LLM je popravil jezik: {transcript['language']} → {claude_result['language']}", file=sys.stderr)
|
||||
transcript["language"] = claude_result["language"]
|
||||
print(f" ✏️ Whisper segmenti zamenjani s Claude popravljenimi ({len(new_segments)})", file=sys.stderr)
|
||||
llm_label = claude_result.get("source", "LLM")
|
||||
print(f" ✏️ Whisper segmenti zamenjani z {llm_label} popravljenimi ({len(new_segments)})", file=sys.stderr)
|
||||
|
||||
# 7. Fade params (lahko razširi clip end če konča sredi vokala)
|
||||
fade = detect_audio_fade(clip_range, transcript, video_duration=duration)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user