remotion-dev/remotion · error · Error

Error: Model ${model} does not exist at ${modelFolder ? mode

Error message

Error: Model ${model} does not exist at ${modelFolder ? modelFolder : modelPath}. Check out the downloadWhisperModel() API at https://www.remotion.dev/docs/install-whisper-cpp/download-whisper-model to see how to install whisper models

What it means

Thrown by `transcribe` in @remotion/install-whisper-cpp when the requested model file does not exist at the resolved path. The path is computed via `getModelPath(modelFolder ?? whisperPath, model)`, producing `<folder>/ggml-<model>.bin`. If that file is missing, transcription cannot run and the error points you at the `downloadWhisperModel` API.

Source

Thrown at packages/install-whisper-cpp/src/transcribe.ts:158

	tmpJSONPath: string;
	modelFolder: string | null;
	translate: boolean;
	tokenLevelTimestamps: boolean;
	printOutput: boolean;
	tokensPerItem: number | null;
	language: Language | null;
	splitOnWord: boolean | null;
	signal: AbortSignal | null;
	onProgress: TranscribeOnProgress | null;
	flashAttention?: boolean;
	additionalArgs?: AdditionalArgs;
}): Promise<{
	outputPath: string;
}> => {
	const modelPath = getModelPath(modelFolder ?? whisperPath, model);

	if (!fs.existsSync(modelPath)) {
		throw new Error(
			`Error: Model ${model} does not exist at ${
				modelFolder ? modelFolder : modelPath
			}. Check out the downloadWhisperModel() API at https://www.remotion.dev/docs/install-whisper-cpp/download-whisper-model to see how to install whisper models`,
		);
	}

	const executable = getWhisperExecutablePath(whisperPath, whisperCppVersion);

	const args = [
		'-f',
		fileToTranscribe,
		'--output-file',
		tmpJSONPath,
		'--output-json',
		tokensPerItem ? ['--max-len', tokensPerItem] : null,
		'-ojf', // Output full JSON
		tokenLevelTimestamps ? ['--dtw', modelToDtw(model)] : null,
		model ? [`-m`, `${modelPath}`] : null,

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Call `downloadWhisperModel({model, folder: modelFolder ?? whisperPath})` before `transcribe`.
  2. Verify the resolved path exists: `fs.existsSync(path.join(folder, 'ggml-' + model + '.bin'))`.
  3. Ensure `modelFolder` (if provided) is the same folder you downloaded into.

Example fix

// before
transcribe({model: 'base', whisperPath, audioFile, ...});

// after
await downloadWhisperModel({model: 'base', folder: whisperPath});
transcribe({model: 'base', whisperPath, audioFile, ...});
Defensive patterns

Strategy: validation

Validate before calling

import {existsSync} from 'fs';
import {getModelPath} from '@remotion/install-whisper-cpp';

function ensureModel(model: WhisperModel, folder: string) {
  const p = getModelPath(folder, model);
  if (!existsSync(p)) {
    throw new Error(`Model ${model} missing at ${p}. Call downloadWhisperModel first.`);
  }
}

Prevention

When it happens

Trigger: Calling `transcribe({model: 'base', ...})` without having first run `downloadWhisperModel({model: 'base', ...})`; passing a `modelFolder` that does not contain the model; the model was deleted between install and transcription.

Common situations: Forgetting the download step in a fresh environment/CI; pointing `modelFolder` at the wrong directory; switching models without downloading the new one; the model file was removed by a cleanup step.

Related errors


AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12). Data as JSON: /api/errors/ca240244c3f3b08b. Report an issue: GitHub.