Multilingual Transcription: Transcribing Conversations Spoken in Multiple Languages

Configure multilingual transcription (code-switching and language detection) conversations so Recall can transcribe meetings accurately when speakers switch languages.

Overview

In some meetings, participants may speak in more than one language during the same conversation, and you may not know ahead of time which language or languages will be used. In those cases, you can enable multilingual transcription. This generally falls into two categories:

  • Language detection: identifies the primary spoken language in a recording without requiring you to set it explicitly.
  • Code-switching: handles conversations where speakers switch between two or more languages within the same meeting or utterance.
🚧

Multilingual transcription does not natively support translations

In order to get translated transcripts in a specific language, you will need to use a translation feature from the third party transcription provider

Requirements

To get started with using any of the Third-Party Transcription Providers, a human needs to sign up for an account from the third party transcription provider's app, get an API key, and add it to the Recall transcription dashboard.

📘

View the Transcription Dashboard


Multilingual transcription for async transcription

The table below shows the provider-specific parameters you can add to a Create Async Transcript request to enable async multilingual transcription.

Provider

Supported Languages

Language Detection

Code Switching

Notes

recallai_async

Docs

✅ Supported

✅ Supported

elevenlabs_async

Docs

✅ Supported

✅ Supported

deepgram_async

Docs

✅ Supported

✅ Supported

assembly_ai_async

Docs

✅ Supported

✅ Supported

aws_transcribe_async

Docs

✅ Supported

✅ Supported

speechmatics_async

Docs

✅ Supported

🚧 Limited language options

Code switching is only supported for specific language pairs, must be specified ahead of time (docs)

Can only use either language detection or code switching.

Async transcription multilingual configs

🚧

This guide only outlines how to configure a transcription provider to use multilingual transcription

For details on how to implement async transcription (which goes beyond the configs listed in this doc), see the Async Transcription guide.

Multilingual configs for async transcription using Recall.ai Transcription

Below is an example of how to configure multilingual transcription with Recall.ai Transcription using the Create Async Transcript endpoint:

{
  // ... other Create Async Transcript request configs
  "provider": {
    "recallai_async": {
      "language_code": "auto"
    }
  }
}

Multilingual configs for async transcription using ElevenLabs

Below is an example of how to configure multilingual transcription with ElevenLabs using the Create Async Transcript endpoint:

{
  // ... other Create Async Transcript request configs
  "provider": {
    "elevenlabs_async": {
      "model_id": "scribe_v2"
      // If `language_code` is unset, the model will detect the language automatically
    }
  }
}

Multilingual configs for async transcription using Deepgram

Below is an example of how to configure multilingual transcription with Deepgram using the Create Async Transcript endpoint:

{
  // ... other Create Async Transcript request configs
  "provider": {
    "deepgram_async": {
      "model": "nova-3",
      "language": "multi"
    }
  }
}

Multilingual configs for async transcription using Assembly AI

Below is an example of how to configure multilingual transcription with Assembly AI using the Create Async Transcript endpoint:

{
  // ... other Create Async Transcript request configs
  "provider": {
    "assembly_ai_async": {
      speech_models: ["universal-2"],
      language_detection: true,
      language_detection_options: {
        code_switching: true,
      },
    }
  }
}

Multilingual configs for async transcription using AWS Transcribe

Below is an example of how to configure multilingual transcription with AWS Transcribe using the Create Async Transcript endpoint:

{
  // ... other Create Async Transcript request configs
  "provider": {
    "aws_transcribe_async": {
      "identify_language": true
    }
  }
}

Multilingual configs for async transcription using Speechmatics

Below is an example of how to configure multilingual transcription with Speechmatics using the Create Async Transcript endpoint:

{
  // ... other Create Async Transcript request configs
  "provider": {
    "speechmatics_async": {
      "language": "cmn_en" // Set language to a specific pair for code switching or to "auto" for language detection
    }
  }
}

Multilingual transcription for real-time transcription

🚧

This guide only outlines how to configure a transcription provider to use multilingual transcription

For details on how to implement real-time transcription (which goes beyond the configs listed in this doc), see the following guides:

The table below shows which transcription provider configurations support language detection and code-switching, along with the provider-specific fields used to enable them.

Provider

Supported languages

Language detection

Code-switching

Notes

recallai_streaming

Docs

✅ Supported when mode: prioritize_accuracy

✅ Supported when mode: prioritize_accuracy

mode: prioritize_accuracy sends transcript events every 3-10 minutes for transcript.data and transcript.partial_data.

mode: "prioritize_low_latency" only supports english at this time.

elevenlabs_streaming

Docs

✅ Supported

✅ Supported

deepgram_streaming

Docs

✅ Supported

✅ Supported

aws_transcribe_streaming

Docs

🚧 Provide language options

✅ Provide language options

You must provide a list of possible languages ahead of time (docs)

speechmatics_streaming

Docs

❌ Not supported

❌ Not supported

assembly_ai_streaming

Docs

🚧 Limited language options

🚧 Limited language options

See docs for supported languages (docs)

assembly_ai_async_chunked

Docs

✅ Supported

✅ Supported

Sends transcripts every 3-10 minutes for transcript.data and transcript.partial_data events.

These provider configurations are set in the recording_config.transcript.provider object when creating a meeting bot or Desktop SDK upload.

Real-time transcription multilingual configs

Multilingual configs for real-time transcription using Recall.ai Transcription

❗️

Important: Using Recall.ai transcription for real-time transcription

For recallai_streaming, multilingual transcription currently requires mode: "prioritize_accuracy" with language_code: "auto".

  • mode: "prioritize_accuracy" sends transcript.data and transcript.partial_data events every 3 to 10 minutes.
  • mode: "prioritize_low_latency" currently supports English only.

Below is an example of how to configure multilingual transcription with Recall.ai Transcription using either the Create Bot or Create Desktop SDK Uploadendpoints:

{
  // ... other request configs
  "recording_config": {
    // ... other recording configs
    "transcript": {
      // ... other transcript configs
      "provider": {
        "recallai_streaming": {
          "mode": "prioritize_accuracy",
          "language_code": "auto"
        }
      }
    }
  }
}

Multilingual configs for real-time transcription using ElevenLabs

Below is an example of how to configure multilingual transcription with ElevenLabs using either the Create Bot or Create Desktop SDK Uploadendpoints:

{
  // ... other request configs
  "recording_config": {
    // ... other recording configs
    "transcript": {
      // ... other transcript configs
      "provider": {
        "elevenlabs_streaming": {
          "model_id": "scribe_v2_realtime"
          // If `language_code` is unset, the model will detect the language automatically
        }
      }
    }
  }
}

Multilingual configs for real-time transcription using Deepgram

Below is an example of how to configure multilingual transcription with Deepgram using either the Create Bot or Create Desktop SDK Uploadendpoints:

{
  // ... other request configs
  "recording_config": {
    // ... other recording configs
    "transcript": {
      // ... other transcript configs
      "provider": {
        "deepgram_streaming": {
          "model": "nova-3",
          "language": "multi"
        }
      }
    }
  }
}

Multilingual configs for real-time transcription using AWS Transcribe

Below is an example of how to configure multilingual transcription with AWS Transcribe using either the Create Bot or Create Desktop SDK Uploadendpoints:

{
  // ... other request configs
  "recording_config": {
    // ... other recording configs
    "transcript": {
      // ... other transcript configs
      "provider": {
        "aws_transcribe_streaming": {
          "language_identification": true,
          "language_options": ["en-US", "es-US"],
          "preferred_language": "en-US"
        }
      }
    }
  }
}

Multilingual configs for real-time transcription using Assembly AI streaming

❗️

Important: Using Assembly AI Streaming for real-time transcription

Assembly AI's universal-streaming-multilingual model has limited language support at this time.

Below is an example of how to configure multilingual transcription with Assembly AI streaming using either the Create Bot or Create Desktop SDK Uploadendpoints:

{
  // ... other request configs
  "recording_config": {
    // ... other recording configs
    "transcript": {
      // ... other transcript configs
      "provider": {
        "assembly_ai_streaming": {
          "speech_model": "universal-streaming-multilingual",
          "language_detection": true
        }
      }
    }
  }
}

Multilingual configs for real-time transcription using Assembly AI Async Chunked

❗️

Important: Using Assembly AI Async Chunked for real-time transcription

For assembly_ai_async_chunked, the bot will send the transcript.data and transcript.partial_data events every 3 to 10 minutes.

Below is an example of how to configure multilingual transcription with Assembly AI async chunked using either the Create Bot or Create Desktop SDK Uploadendpoints:

{
  // ... other request configs
  "recording_config": {
    // ... other recording configs
    "transcript": {
      // ... other transcript configs
      "provider": {
        "assembly_ai_async_chunked": {
          speech_models: ["universal-2"],
          language_detection: true,
          language_detection_options: {
            code_switching: true
          }
        }
      }
    }
  }
}

FAQ

Why is my recording transcribed in the wrong language?

If your transcript is coming back in the wrong language, it’s usually due to one of the following:

  • The transcription language was set incorrectly - Check your transcription configuration and confirm the language code/setting matches the language spoken in the recording.
  • The audio quality made language detection unreliable - Background noise, echo, low volume, overlapping speakers, or audio coming from a mobile-device can cause the model to misidentify the language.
  • Speech characteristics reduced language recognition accuracy - Very heavy accents, unclear speech, or fast/colloquial speech can increase the chance of the model selecting the wrong language.
  • Your transcription provider may have weaker support for that language - Some providers perform better in certain languages so you should see their documentation for which languages are supported.

If the configuration and audio quality look correct, you can try using a different transcription provider. Transcription quality differs between providers and use cases so it's best to test a few to find one that works best for you!

What languages are supported by each provider?

Transcription providers are constantly updating and adding support for more languages, so the most reliable source of information is their own documentation.