jitsi/jitsi-meet · warning
Audio translation request failed: ${error} for [${endpointId
Error message
Audio translation request failed: ${error} for [${endpointIds.join(', ')}] What it means
This is a logger.warn emitted in the audio-translation middleware when the JitsiConference fires AUDIO_TRANSLATION_FAILED for a batch of endpoint IDs — the server rejected or failed the request to translate audio for those endpoints. It is not a thrown exception; it accompanies a user-facing error notification and a redux reset of the optimistic translation selection.
Source
Thrown at react/features/audio-translation/middleware.any.ts:100
}
return result;
});
/**
* Surfaces audio-translation request failures reported by the bridge-side component: shows a notification and
* resets translation state (redux + lib-jitsi-meet) so the UI reflects the failure and re-enabling works.
*/
StateListenerRegistry.register(
state => state['features/base/conference'].conference,
(conference, { dispatch }, previousConference) => {
if (!conference || previousConference) {
return;
}
conference.on(JitsiConferenceEvents.AUDIO_TRANSLATION_FAILED,
({ endpointIds, error }: { endpointIds: string[]; error: string; }) => {
logger.warn(`Audio translation request failed: ${error} for [${endpointIds.join(', ')}]`);
dispatch(showErrorNotification({
titleKey: ERROR_NOTIFICATION_KEYS[error] ?? DEFAULT_ERROR_KEY
}, NOTIFICATION_TIMEOUT_TYPE.MEDIUM));
// The optimistic selection didn't take. Reset everything: clears redux (UI reflects off)
// and, via conference.clearTranslation(), resets lib-jitsi-meet's language state so
// re-enabling isn't deduped to a no-op.
dispatch(clearAudioTranslation());
});
});
/**
* Ingests the two per-participant translation signals from the conference: which translated sources the bridge
* is forwarding to us (receiving), and which remote participants are translating us (enabled). Both are cleared
* when the conference goes away.
*/
StateListenerRegistry.register(View on GitHub (pinned to 98de6219cc)
Solutions
- Verify the server-side audio translation component is deployed/enabled and supports the requested languages
- Check that endpointIds still exist in the conference (request fresh translation after participant churn)
- Inspect the raw error string in the log to distinguish unsupported-language vs capacity vs connectivity failures
- Upgrade/align lib-jitsi-meet and backend versions so AUDIO_TRANSLATION_FAILED payloads match the ERROR_NOTIFICATION_KEYS mapping
Example fix
// before
logger.warn(`Audio translation request failed: ${error} for [${endpointIds.join(', ')}]`);
// after (classify and make the failure actionable)
logger.warn(`Audio translation request failed: ${error} for [${endpointIds.join(', ')}]`, {
endpoints: endpointIds,
reason: ERROR_NOTIFICATION_KEYS[error] ?? DEFAULT_ERROR_KEY
});
dispatch(showErrorNotification({
titleKey: ERROR_NOTIFICATION_KEYS[error] ?? DEFAULT_ERROR_KEY
}, NOTIFICATION_TIMEOUT_TYPE.MEDIUM)); Defensive patterns
Strategy: fallback
Validate before calling
const conference = getCurrentConference(state);
const supported = conference?.isAudioTranslationSupported?.(); // capability probe
if (!supported) {
// hide/disable translation UI instead of dispatching a doomed request
} Type guard
const isTranslatableEndpoint = (id: string, conference: any): boolean =>
conference.getParticipants().some(p => p.getId() === id); Try / catch
// No thrown exception: handle the event payload
current.on(JitsiConferenceEvents.AUDIO_TRANSLATION_FAILED, ({ endpointIds, error }) => {
logger.warn(`Audio translation request failed: ${error}`, { endpointIds });
dispatch(showErrorNotification({ titleKey: ERROR_NOTIFICATION_KEYS[error] ?? DEFAULT_ERROR_KEY }));
resetTranslationSelection(); // middleware already resets optimistic state
}); Prevention
- Verify backend translation service availability before enabling the UI
- Re-validate endpoint IDs right before requesting translation
- Map known server error strings to friendly notification keys and keep that map in sync
When it happens
Trigger: Subscribing to AUDIO_TRANSLATION_FAILED on the conference and the backend (translator bridge/Jigasi-style service) returning an error for the requested endpointIds: unsupported target language, translator capacity/availability failure, invalid endpoint IDs, or conference-level translation not enabled on the server.
Common situations: Deployments without the audio translation service configured; requesting a language the backend doesn't support; endpoints leaving the conference while a translation is requested; version mismatch between lib-jitsi-meet events and the backend bridge; scale/capacity errors on the translation service.
AI-assisted analysis of jitsi/jitsi-meet@98de6219cc (2026-08-28).
Data as JSON: /api/errors/5d18077d248523fd.
Report an issue: GitHub.