remotion-dev/remotion · error · Error

The model "${model}" does not support translation.

Error message

The model "${model}" does not support translation.

What it means

transcribe() resolves getModelInfo(model) after validating options; when task is 'translate' the selected model's supportsTranslation capability is checked, and English-only models (which cannot produce cross-language output) cause this error. Pick a multilingual model that supports translation or use task 'transcribe'.

Source

Thrown at packages/whisper-webgpu/src/transcribe.ts:114

	}

	if (!Number.isFinite(repetitionPenalty) || repetitionPenalty <= 0) {
		throw new TypeError(
			'repetitionPenalty must be a finite number greater than 0.',
		);
	}

	if (!Number.isInteger(noRepeatNgramSize) || noRepeatNgramSize < 0) {
		throw new TypeError('noRepeatNgramSize must be a non-negative integer.');
	}

	if (task !== 'transcribe' && task !== 'translate') {
		throw new TypeError('task must be either "transcribe" or "translate".');
	}

	const {multilingual, supportsTranslation} = getModelInfo(model);
	if (task === 'translate' && !supportsTranslation) {
		throw new Error(`The model "${model}" does not support translation.`);
	}

	if (multilingual && (language === undefined || language === 'auto')) {
		throw new Error(
			`The language option is required for the multilingual model "${model}" because automatic language detection is not supported.`,
		);
	}

	if (
		!multilingual &&
		language !== undefined &&
		language !== 'auto' &&
		language !== 'en' &&
		language !== 'english'
	) {
		throw new Error(
			`The English-only model "${model}" does not support the language "${language}".`,
		);

View on GitHub (pinned to b2f4e34732)

Solutions

  1. Switch to a multilingual model (drop the .en suffix, e.g. whisper-tiny instead of whisper-tiny.en)
  2. Or set task: 'transcribe' if translation is not actually needed
  3. Derive allowed tasks from the model: only offer translate when supportsTranslation is true

Example fix

// before
await transcribe({model: 'onnx-community/whisper-tiny.en', task: 'translate'});
// after
await transcribe({model: 'onnx-community/whisper-tiny', task: 'translate'});
Defensive patterns

Strategy: validation

Validate before calling

const {supportsTranslation} = getModelInfo(model);
if (task === 'translate' && !supportsTranslation) throw new Error(`model ${model} cannot translate`);

Try / catch

try {
  await transcribe({model, task: 'translate'});
} catch (e) {
  if (e instanceof Error && e.message.includes('does not support translation')) {
    model = model.replace(/\.en$/, '');
  } else throw e;
}

Prevention

When it happens

Trigger: Calling transcribe() with task: 'translate' and an English-only model such as 'Xenova/whisper-tiny.en' or 'onnx-community/whisper-base.en'.

Common situations: Hardcoding 'translate' while the model id came from user config; swapping models for speed (.en variants) without revisiting the task; UI exposing translate for all models.

Understand the failure class

Background: UnsupportedOperationException and "is not supported" errors: when a library deliberately refuses a call — this error's family across 30 libraries.

Related errors


AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-09-09). Data as JSON: /api/errors/aac5e66c539ceaf4. Report an issue: GitHub.