Batch warm: assistive LLM suggestions¶
High-compute assistive passes (speaker name dropdowns, rename stem prefills) can run overnight so the GUI opens with caches already warm. Nothing is renamed and no speaker-map names are written until you confirm in the UI.
What this warms¶
Consumer |
GUI surface |
Cache location |
|---|---|---|
|
Speaker Identification → Name dropdown (after warm, no Suggest names click) |
|
|
Rename Transcript / import rename — Suggest names button (always); also auto-prefill when Content rename suggestions is |
|
Caches invalidate when transcript content fingerprints change or when rename knobs / model tags in the cache key change (see llm.md consumers). Re-running warm or Suggest names with a different speaker_name_suggestions or rename_suggestions model keeps prior runs on disk; Speaker Identification and the rename form expose a Suggestion source (model) picker when more than one cached run exists.
What this is not¶
Voice pre-load (Settings → Speakers → Pre-load voice suggestions) warms ECAPA voice match caches under
speaker_profiles/.cache/voice/— different stack. See speaker-voice-matching.md.python -m transcriptx.identify_speakersfuses voice + text and can write speaker-map names and profile links — not the assistive Suggest-names LLM cache.Run Analysis → Batch runs analysis pipeline LLM modules — not rename/name suggestion warmers.
Prerequisites¶
Managed library transcripts (admitted with import sidecars).
For LLM passes: Ollama running; Models preset assigns tags for
speaker_name_suggestionsand/orrename_suggestions. Thinking tags work when/api/showallowsthink: falseand/orllm.fallback_modelis set to a JSON-safe secondary (llm.md).Rename batch warm (Settings pre-load /
warm-suggestions --rename):input.rename_content_suggestions=autoand optionalrename_suggest_llm/ web knobs (settings.md). On-demand Suggest names on the rename form does not requireauto; it still honorsrename_suggest_transcript/rename_suggest_llm/rename_suggest_web.
GUI¶
Settings → Speakers → Assistive LLM suggestions → Pre-load name suggestions (LLM) — library-wide speaker-name cache warm.
Rename Transcript (and import rename) — Suggest names (transcript + LLM) warms or refreshes rename suggestion cache for the selected transcript.
Settings → Configuration — when content rename suggestions are
auto, Pre-load rename suggestions appears above the config editor (library-wide rename warm).
CLI (cron-shaped)¶
transcriptx warm-suggestions --help
# equivalent:
python -m transcriptx.warm_suggestions --help
Python API:
from transcriptx.app.models.requests import WarmSuggestionsRequest
from transcriptx.app.workflows import run_warm_suggestions
result = run_warm_suggestions(WarmSuggestionsRequest(warm_all=True))
Flag |
Meaning |
|---|---|
|
Warm speaker name suggestion caches (managed transcripts only). |
|
Warm rename suggestion caches ( |
|
Both passes. |
|
Repeatable; default is entire managed library. |
|
Recompute even when cache is fresh. |
|
List actionable targets without LLM or writes. |
Exit code 0 on success, 1 if any transcript failed, 2 for usage errors.
Cron example (Linux / macOS)¶
# Nightly at 02:00 — warm both suggestion types
0 2 * * * cd /path/to/transcriptx && . .venv/bin/activate && \
TRANSCRIPTX_DATA_DIR=/path/to/data \
transcriptx warm-suggestions --all \
>> ~/.transcriptx/warm-suggestions.log 2>&1
launchd example (macOS, templated)¶
Save as ~/Library/LaunchAgents/com.example.transcriptx.warm-suggestions.plist (replace paths):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.transcriptx.warm-suggestions</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/transcriptx/.venv/bin/python</string>
<string>-m</string>
<string>transcriptx.warm_suggestions</string>
<string>--all</string>
</array>
<key>EnvironmentVariables</key>
<dict>
<key>TRANSCRIPTX_DATA_DIR</key>
<string>/path/to/data</string>
</dict>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>2</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/path/to/.transcriptx/warm-suggestions.log</string>
<key>StandardErrorPath</key>
<string>/path/to/.transcriptx/warm-suggestions.log</string>
</dict>
</plist>
Load: launchctl load ~/Library/LaunchAgents/com.example.transcriptx.warm-suggestions.plist
STT ingest scheduling uses inbox-watch (--once for cron) — a separate job from suggestion warm.
Dry-run smoke¶
TRANSCRIPTX_DATA_DIR=/path/to/data \
python -m transcriptx.warm_suggestions --all --dry-run