Skip to content
Jitsi.help

Jitsi transcription or subtitles not working

Updated Tested on Jitsi Meet stable-11031By the Jitsi Help engineering team

Short answer

service-unavailable means Jigasi is running as a SIP gateway: set JIGASI_MODE=transcriber. 'SASLError SCRAM-SHA-1 not-authorized' in the Jigasi log means JIGASI_TRANSCRIBER_PASSWORD is missing: set it and restart Prosody. Transcripts with no speech mean Jigasi is not reaching Vosk: the property is org.jitsi.jigasi.transcription.vosk.websocket_url, with an underscore.

These are the three failures we hit ourselves when building free Vosk transcription into our platform. Each has a distinct symptom, so you can go straight to the right fix.

Check the logs first:

docker compose -f docker-compose.yml -f jigasi.yml -f jigasi-override.yml -f vosk.yml logs --tail 200 jigasi vosk

Symptom 1: service-unavailable when enabling subtitles

Cause: the stock jigasi.yml hardcodes JIGASI_MODE=sip. As a SIP gateway, Jigasi never answers Jicofo’s transcription requests.

Fix: override the mode.

# jigasi-override.yml
services:
  jigasi:
    environment:
      - JIGASI_MODE=transcriber
      - JIGASI_TRANSCRIBER_PASSWORD
docker compose -f docker-compose.yml -f jigasi.yml -f jigasi-override.yml -f vosk.yml up -d jigasi

Symptom 2: “SASLError using SCRAM-SHA-1: not-authorized”

Cause: Jigasi joins as transcriber@hidden.meet.jitsi, and JIGASI_TRANSCRIBER_PASSWORD was never set, so it logs in with an empty password. The base jigasi.yml does not even pass the variable to the container.

Fix: set it and restart Prosody, which creates the account on start:

JIGASI_TRANSCRIBER_PASSWORD=a-long-random-password
docker compose -f docker-compose.yml -f jigasi.yml -f jigasi-override.yml -f vosk.yml restart prosody jigasi

Symptom 3: transcripts with join events but no words

Cause: Jigasi is not talking to Vosk. The Docker init scripts do not write the JIGASI_SIP_COMMUNICATOR_PROP_* variables into the properties file in transcriber mode, and the Vosk property is easy to misspell. Jigasi reads vosk.websocket_url with an underscore; vosk.websocket.url is silently ignored and Jigasi tries localhost, where nothing is listening.

Fix: mount a properties file with the correct name:

# config/jigasi/custom-sip-communicator.properties
org.jitsi.jigasi.transcription.customService=org.jitsi.jigasi.transcription.VoskTranscriptionService
org.jitsi.jigasi.transcription.vosk.websocket_url=ws://vosk:2700
org.jitsi.jigasi.transcription.DIRECTORY=/config/transcripts
org.jitsi.jigasi.transcription.SAVE_TXT=true

Symptom 4: Vosk keeps restarting

Cause: not enough memory. The English model needs several GB on its own.

Fix: use a server with at least 16 GB of RAM. On AWS a t3.xlarge works; a c5.xlarge with 8 GB does not.

Symptom 5: captions work, but no transcript file

Check that /config/transcripts exists inside the Jigasi container and is mapped to a host folder, and that SAVE_TXT=true is set. Transcripts are written when the meeting ends.

Full setup

The complete, working configuration is in free self-hosted transcription with Jigasi and Vosk. If you would rather not debug it, our transcription service sets it up on your server, and on our platform it is a one-time $29 feature.

Frequently asked questions

What does service-unavailable mean when starting Jitsi subtitles?

Jicofo asked for a transcriber and none answered. The stock Docker jigasi.yml runs Jigasi in SIP mode, where it ignores transcription requests. Set JIGASI_MODE=transcriber in an override file and restart Jigasi.

Why does Jigasi log SASLError not-authorized?

It is logging in as the transcriber user with an empty or wrong password. Set JIGASI_TRANSCRIBER_PASSWORD in .env, pass it to the Jigasi container, and restart Prosody so the account is created with that password.

Stuck, or would rather not do this by hand?

Deploy it in one click

A private Jitsi server in your own AWS account with SSL, your domain and optional recording, transcription and JWT. Free 15 minute trial.

Start free trial

Talk to a Jitsi engineer

Setup, fixes, branding, recording, scaling. Tell us what is happening and we reply with a plan and a quote.

Get expert help

Related