Local processing setup
Local recognition and diarization are optional. The CLI and desktop share the same worker setup, model acquisition and readiness operations. Ordinary imports and supplied subtitles do not require these engines. Settings provides local setup controls; the first-run wizard is a separate capability.
Prepare an environment
Use the complete installed package, including its verified Cueson, FFmpeg and processing worker companions. In desktop Settings, select a role, preview its environment, then prepare it. The preview names its download size, temporary-space budget and destination. Setup runs as durable work visible in Jobs.
The managed CPU profiles use CPython 3.12.15 and uv 0.13.0, with complete platform-specific wheel hashes. Recognition uses faster-whisper 1.2.1 and CTranslate2 4.8.2. Diarization uses pyannote.audio 4.0.7 and CPU PyTorch 2.14.0, TorchAudio 2.11.0 and TorchCodec 0.17.0. Linux x86-64 requires glibc 2.28 or newer. These optional downloads are separate from package installation. They never install into global Python, modify PATH or replace an accepted environment in place.
| Role | Windows download | Linux download | Minimum installation space |
|---|---|---|---|
| Recognition | 122,501,331 bytes | 179,432,818 bytes | 2 GiB |
| Diarization | 290,320,124 bytes | 392,060,735 bytes | 4 GiB |
The catalog contains exact runtime archives, wheels, source URLs and hashes. Runtime and installer archives are copied into the private owned attempt while hashing, and extraction uses only those verified snapshots. All required wheel bytes are verified before an offline, hash-locked installation. An unchanged accepted managed environment is verified and reused.
For the CLI:
- Inspect the available profiles with
insonic --workspace LIBRARY workers catalog --json. - Save
environment-plan.jsonwith the following input. - Run
insonic --workspace LIBRARY workers plan --input environment-plan.json --json. Check the returned prerequisite, destination, space and effect fields. - Copy the returned
result.electionobject intoenvironment-setup.json. It includes the automatically computedprofile_digestand observedexpected_revision. - Run
insonic --workspace LIBRARY workers setup --input environment-setup.json --json. - Use its returned
result.work_idwithinsonic --workspace LIBRARY work wait WORK_UUID --timeout-ms 30000 --json. Repeat the wait if still running. Inspect or cancel throughwork showorwork cancel; retry failed/interrupted work throughwork retry. - Repeat the plan and setup with
diarizationif needed. A settings conflict requires a fresh plan; replay with the original request ID returns the original accepted work.
{"role":"recognition","mode":"managed"}
Environments and their receipts live in the chosen library control directory. Cancellation removes the fresh failed preparation attempt; verified partial acquisition bytes remain available for retry. Successful setup publishes only the selected role after verification and a compare-and-swap settings check. Already accepted environments are retained for frozen work. Processing checks their interpreter, runtime, standard-library and dependency bytes before engine invocation.
Reuse or prepare offline
Select an existing absolute interpreter path with mode: "reuse" and python_path. Inspection imports only the selected libraries, reports their versions and devices, and loads no model. Setup records and verifies their byte identities without installing into that environment. Its receipt/probe space budget is 32 MiB, rather than the managed profile installation minimum. Changes to these dependencies require a new explicit setup election.
For fully offline managed setup, add offline_assets with an absolute directory containing every declared archive and wheel under its exact catalog filename. Missing or damaged files fail locally. The installer uses only these files; it does not resolve alternate versions or fetch missing dependencies. Offline model reuse is separate.
An offline plan reports download_bytes: 0. profile_download_bytes retains the nominal complete profile size. local_assets reports required and verified expected byte totals, plus missing_bytes for missing or unusable declared files. It checks only the elected runtime, installer and wheels. Each failure identifies a logical filename, fixed role and verification reason with corrective advice; unrelated files do not contribute to these totals. An already verified accepted environment needs no new asset inspection or transfer.
Worker and model file errors distinguish missing, unreadable, nonregular, wrong-size and wrong-hash assets. The optional error.asset contains only a generated role and bounded slash-relative logical name. The same reason and correction survive JSON responses, human output and durable work inspection. These errors exclude owner paths, resolved credentials and raw tool output.
Existing explicit processing-tools configurations remain supported under Advanced. Accepted work freezes its interpreter, worker and environment receipt. Package-derived companion defaults are resolved from the current complete installation for future work, preserving relocation; accepted work keeps its original bytes.
Prepare and elect NVIDIA environments
Use isolated Python 3.12 environments for the two roles. Recognition requires faster-whisper 1.2.1, CTranslate2 4.8.2, cuBLAS 12 and cuDNN 9. A compatible Windows package set is nvidia-cublas-cu12==12.9.2.10, nvidia-cudnn-cu12==9.26.0.51 and nvidia-cuda-nvrtc-cu12==12.9.86. Install these inside the elected environment, not into global Python. Diarization requires pyannote.audio 4.0.7 and a CUDA-enabled PyTorch/TorchAudio pair compatible with the host driver; the managed CPU wheels cannot supply that capability. Use the PyTorch installation instructions to select the CUDA wheel channel. Setup inspection validates the selected engine versions and actual prerequisites before reuse.
- Install the role's supported dependencies into its isolated environment and retain its exact interpreter path.
- Save the following inspection and reuse inputs as
cuda-inspection.jsonandcuda-environment.json, replacing the example absolute path with that interpreter. On Linux use its absolutebin/pythonpath. - Run
insonic --workspace LIBRARY workers inspect --input cuda-inspection.json --json. Confirm CUDA availability and inspect any generated prerequisite reason. - Run
insonic --workspace LIBRARY workers plan --input cuda-environment.json --json, copyresult.electiontoenvironment-setup.json, then runinsonic --workspace LIBRARY workers setup --input environment-setup.json --jsonand wait for the returned work ID as above. - Repeat for
diarizationwith its own interpreter. Acquire the exact model bundles below, then inspectprocessing readinessand run the selected pipeline.
<!-- executable-example: cuda-inspection.json -->
{"role":"recognition","python_path":"C:/Environments/recognition/Scripts/python.exe"}
<!-- executable-example: cuda-environment.json -->
{"role":"recognition","mode":"reuse","python_path":"C:/Environments/recognition/Scripts/python.exe"}
Probe and execution share native-library resolution from the elected environment's verified distribution files. Windows DLL directories remain registered for the child lifetime; no global PATH edit is needed. Changing an accepted environment requires a new setup election and receipt. Readiness is model-free and does not prove acoustic execution; completed work records its actual device.
Linux receipts also bind CUDA loader aliases and their resolved files, including components loaded on demand. Missing or changed bindings and unrecorded companion bytes fail with checksum_mismatch before engine import; integrity failures do not trigger CPU fallback. An older receipt whose original loader binding cannot be verified requires a new environment setup election. Use explicit python_path inspection to discover the current environment before planning that setup.
Diagnose worker inspection
Run insonic --workspace LIBRARY workers inspect --input inspection.json --json with {"role":"recognition"} or {"role":"diarization"}. Omit python_path to inspect the configured interpreter. Inspection imports the selected engine and checks CPU/CUDA prerequisites without loading a model. Setup additionally inventories and hashes the environment before publishing its receipt.
The optional probe reports a fixed mode, stage, reason, native elapsed_ms and effective budget_ms. Its optional child contains an ordered checkpoints list and bounded file/hash counts. Native elapsed time begins before interpreter hashing. Child elapsed time begins inside the isolated interpreter; these clocks have different origins and must not be subtracted or added as stage durations. Observations are cumulative checkpoints, rather than independent phase durations. A failed or stopped interpreter may leave its last completed checkpoint; it does not prove later stages ran.
| Reason | Meaning and correction |
|---|---|
interpreter_missing, interpreter_unreadable |
Select an existing readable interpreter or prepare the managed role. |
home_unavailable, launch_failed, process_failed |
Check local workspace access and the selected runtime, then retry the role. |
package_missing, version_mismatch, import_failed, cpu_unavailable |
Prepare the supported environment or correct its required libraries. |
inventory_limit, inventory_unreadable |
Use a bounded readable environment; setup does not accept an incomplete snapshot. |
output_invalid, output_limit, checkpoint_invalid |
Retry a supported runtime; malformed or excessive diagnostics cannot establish readiness. |
deadline, cancelled |
The enclosing time allowance expired or the request was canceled. Retry with an available enclosing allowance. |
The standalone probe retains its sixty-second maximum and inherits any earlier caller deadline. Readiness shares one sixty-second allowance across its prerequisites. It retains already observed role facts and labels unattempted or interrupted prerequisites unknown; an exhausted allowance does not assert an import failure or changed dependency bytes. Hash verification also distinguishes an interrupted check from an actual checksum mismatch. Disconnecting an ephemeral inspection cancels its owned child. Durable setup retains its work identity and ordinary work cancellation behavior.
Human CLI output and desktop setup show the same bounded summary. Failed setup retains worker_probe facts in the durable work result and removes its fresh failed environment without publishing settings. Diagnostics exclude raw exceptions, tool output and host paths. Existing receipts without optional probe facts remain valid after their original byte and compatibility checks. Neither a successful diagnostic nor a warm import replaces receipt hashing, model verification or actual processing acceptance.
Acquire exact model bundles
The product provides Whisper Tiny (MIT, 78,203,619 bytes) and Community-1 (CC BY 4.0, 32,821,421 bytes). Each choice has an immutable upstream revision and a complete named-file manifest. Inspect insonic --workspace LIBRARY models defaults --json for identities, license, model card and current state.
Community-1 segmentation frames with no overlap against decoded audio are discarded and diagnosed as padding-only predictions. Overlapping boundary extensions retain the 250 ms limit and are intersected with the real source interval with diagnostics. Generic adapter turns remain strictly bounded by decoded audio. Accepted cues never gain source time or samples from model padding.
- Save
model-preview.jsonusing the input below, selectingwhisper-tinyorcommunity-1. - Run
insonic --workspace LIBRARY models prepare --input model-preview.json --json. Inspect verified reuse, download bytes, scratch space and the elected storage profile. Filesystem capacity is observed when available. Colocated scratch and artifact storage use a combined peak budget, including download and staging copies; unknown volume relationships are conservatively treated as shared. S3 capacity remains unknown. - Add
"acquire": trueto that input and run the same command. Follow the returnedacquisition_work_idthrough normal work commands or Jobs. - Confirm complete availability using
models show MODEL_UUID --jsonandmodels verify MODEL_UUID --jsonbefore selecting it in a pipeline.
{"choice":"whisper-tiny"}
After acquisition, use the model UUID returned by preparation:
<!-- executable-commands: model-readback -->
insonic models show MODEL_UUID --json
insonic models verify MODEL_UUID --json
An absolute local_directory reuses a complete existing snapshot after checking every declared role, size and SHA-256. It is published through the normal artifact service; source files remain unchanged. Omit destination_profile_id to elect the configured storage, or supply a saved storage profile UUID. Filesystem and S3 destinations use the same acquisition contract. A shared acquisition preserves its first destination and local/download route, and subsequent previews expose that frozen route.
Community-1 downloads require the upstream model access terms and a protected Hugging Face read token. Desktop Settings can register a token through native protected input and generate its opaque credential reference. CLI users register it through the documented credential commands, then supply only credential_id to model preparation. Replace the same protected secret to rotate its token. Omitting the reference when preparing an existing choice retains its previously elected reference. A new gated download without the required protected reference is rejected before enqueueing; previews and local verified reuse need no download token. A supplied reference does not prove upstream authentication or model access. Credential values never enter manifests, work payloads or command arguments.
Preparation previews distinguish credential_state: missing, locked, rejected, unavailable, locally resolvable available, or not_required. An indexed reference alone does not establish readiness. The preview resolves required protected references locally and immediately clears the returned bytes; it sends no authentication request. access_ready describes this local prerequisite, while upstream_authorization: "not_checked" keeps upstream access separate. Complete verified installed or local reuse requires no download credential.
A failed local credential-status check reports unavailable without asserting that the reference is missing. Acquisition without its required locally resolvable credential returns unavailable with the generated reason model_access_required, before work is enqueued.
Pinned Hugging Face resolve requests may follow a bounded set of official model CDN redirects. Cross-origin requests strip credentials and cookies; signed CDN URLs are transient. All model bytes still require declared sizes and hashes. Custom sources retain their original same-origin transport policy.
Inspect task readiness and select a pipeline
insonic --workspace LIBRARY processing readiness --json reports five independent tasks: import, existing subtitles, transcription, diarization and training. Each includes actual prerequisites, observed availability, identities and corrective actions. doctor and pipelines inspect expose the same facts. Add --input FILE to inspect a specific pipeline_id, pipeline_revision and optional dataset_id.
Readiness verifies tools, environment imports, model bytes, selected storage and the requested device. It establishes prerequisites, rather than successful acoustic inference. Local custom trainer readiness checks the elected executable and support-file hashes without invoking the trainer. file_verified proves those prerequisites, without claiming protocol compatibility or model quality. Hosted routes remain configured_not_probed; a task with only unprobed prerequisites reports unknown, while an observed missing prerequisite reports needs_attention. Training additionally requires an elected current nonempty dataset. Pipeline usability combines the elected tasks, so a training-only definition does not require unelected recognition or diarization environments. The pyannote-profile adapter enrolls speaker embeddings; it does not retrain Community-1.
Desktop Settings can save a local pipeline with automatic NVIDIA preference and the exact builtin model IDs. Select it in Library when processing media, or inspect/edit it in Pipelines. Pipeline saving does not download weights or begin inference. Existing CLI pipeline definitions provide the same selection.
New local requests default to auto: try NVIDIA CUDA, then retry once on CPU for a classified CUDA device, library, compute-capability or resource failure. Explicit cuda has the same finite recovery; explicit cpu never attempts CUDA. Both attempts share the original deadline and keep the same input and model. Cancellation, invalid input, damaged models and unrelated engine failures do not trigger fallback. The result retains requested_device, ordered attempted_devices, actual device and a generated fallback_reason when applicable. If execution fails, error.device_attempt retains the requested policy, attempts that started and any generated fallback cause, without claiming a successful device. Existing saved CPU choices and older frozen work retain CPU behavior. Managed profiles still provide CPU dependencies; hardware count alone does not establish CUDA readiness.
Pyannote receives an FFmpeg-decoded waveform tensor through the packaged worker. This path does not require TorchCodec shared-FFmpeg decoding. Recognition/diarization runtime success, CPU qualification, GPU execution and acoustic accuracy remain separate evidence.
Portable restore
Worker environments are host resources. A portable backup excludes their preparation paths and local model snapshot routes while retaining completed history and verified model artifacts. Prepare or reuse compatible destination environments before resuming restored processing; their verified receipts bind alongside destination interpreter/companion tools, while models, stage settings and devices remain frozen. Missing local acquisition inputs require an explicit new model preparation election. That recovery creates one shared successor work record and leaves the originating history intact.