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
- Switch to a multilingual model (drop the .en suffix, e.g. whisper-tiny instead of whisper-tiny.en)
- Or set task: 'transcribe' if translation is not actually needed
- 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
- Check model capabilities before exposing a translate option in UI
- Avoid .en model variants when translation may be requested
- Keep model id and allowed tasks paired in your config schema
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
- Invalid whisper model ${model}. Available: ${models.join(',
- Model ${model} already exists at ${filePath}, but the size i
- Failed to download whisper model
- Content-Length header not found
- Error: Model ${model} does not exist at ${modelFolder ? mode
AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-09-09).
Data as JSON: /api/errors/aac5e66c539ceaf4.
Report an issue: GitHub.