remotion-dev/remotion · error

${model.name} does not support translation.

Error message

${model.name} does not support translation.

What it means

Translation is only supported by some Whisper models (the multi-language, non-`.en` variants). When task is "translate" but the selected model's supportsTranslation flag is false, the tool rejects the combination with this error.

Source

Thrown at packages/studio/src/components/WebMcp.tsx:530

						const modelName = input.model ?? 'small.en';
						if (typeof modelName !== 'string') {
							throw new Error('model must be a string.');
						}

						const model = whisper
							.getAvailableModels()
							.find((candidate) => candidate.name === modelName);
						if (!model) {
							throw new Error(`Unknown Whisper model: ${modelName}.`);
						}

						const task = input.task ?? 'transcribe';
						if (task !== 'transcribe' && task !== 'translate') {
							throw new Error('task must be transcribe or translate.');
						}

						if (task === 'translate' && !model.supportsTranslation) {
							throw new Error(`${model.name} does not support translation.`);
						}

						const language = input.language ?? 'en';
						if (typeof language !== 'string' || language.length === 0) {
							throw new Error('language must be a non-empty string.');
						}

						const chunkLengthInSeconds = input.chunkLengthInSeconds ?? 30;
						const strideLengthInSeconds = input.strideLengthInSeconds ?? 5;
						const temperature = input.temperature ?? 1;
						const topK = input.topK ?? 50;
						const repetitionPenalty = input.repetitionPenalty ?? 1;
						const noRepeatNgramSize = input.noRepeatNgramSize ?? 0;
						if (
							typeof chunkLengthInSeconds !== 'number' ||
							!Number.isFinite(chunkLengthInSeconds) ||
							chunkLengthInSeconds < 1 ||
							chunkLengthInSeconds > 30

View on GitHub (pinned to b2f4e34732)

Solutions

  1. Use a multi-language model (e.g. "tiny", "base", "small", "medium", "large-v3") when task is "translate"
  2. Or change task to "transcribe" if translation is not actually needed
  3. Check the model entry's supportsTranslation field before selecting it

Example fix

// before
{ "model": "tiny.en", "task": "translate" }
// after
{ "model": "tiny", "task": "translate" }
Defensive patterns

Strategy: validation

Validate before calling

const model = whisper.getAvailableModels().find((m) => m.name === input.model);
if (input.task === 'translate' && model && !model.supportsTranslation) {
  throw new Error(`Model ${input.model} cannot translate; pick a multi-language model`);
}

Type guard

const supportsTranslate = (name: string): boolean =>
  whisper.getAvailableModels().find((m) => m.name === name)?.supportsTranslation === true;

Try / catch

try {
  await callWhisperTool({ model, task: 'translate' });
} catch (err) {
  if (err instanceof Error && err.message.includes('does not support translation')) {
    // retry with a multi-language model
    await callWhisperTool({ model: 'base', task: 'translate' });
  }
}

Prevention

When it happens

Trigger: Calling the transcription tool with { model: "tiny.en", task: "translate" } or any other `.en` English-only model with task "translate".

Common situations: Choosing an English-only model for speed, then requesting translation; not realizing `.en` models cannot translate to English because they only understand English.

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/3a55dc04eae3c1a5. Report an issue: GitHub.