AssemblyAI
Set up and create transcripts using AssemblyAI as a speech-to-text provider for post-meeting and real-time transcription.
You can use AssemblyAI as a speech-to-text provider for transcription. This guide explains how to:
- Set up AssemblyAI as a speech-to-text provider and configure AssemblyAI for post-meeting and real-time transcription
- Learn how to configure AssemblyAI for multilingual transcription and access custom AssemblyAI-specific fields on the transcript data (available when not using Perfect Diarization or Hybrid Diarization)
- Covers FAQs
You can use this sample app to compare transcription quality and output across multiple third-party providers using Recall.ai's async transcription API.
Setup
Before using AssemblyAI with Recall.ai, you must create an AssemblyAI API key and add it to the Recall.ai dashboard.
Create an AssemblyAI API key
Create a new API key in the AssemblyAI dashboard.
If you plan to use AssemblyAI for real-time transcription, make sure your AssemblyAI account is enabled for streaming transcription before using it in production.
Add your AssemblyAI API key to the Recall.ai transcription dashboard
Add your AssemblyAI API key in the Recall.ai dashboard for the Recall region where you will create recordings:
Recall.ai regions are isolated, so you must add your AssemblyAI API key in each Recall.ai region where you want to use AssemblyAI transcription.
Quickstart
Supported transcription workflows
| Workflow | Supported |
|---|---|
| Post-meeting transcription | ✅ Yes |
| Real-time transcription with meeting bots | ✅ Yes |
| Real-time transcription with Desktop Recording SDK | ✅ Yes |
AssemblyAI for post-meeting transcription
Use post-meeting transcription when you want to transcribe a recording after the recording has completed.
To use AssemblyAI for post-meeting transcription, call the Create Async Transcript endpoint and set provider to assembly_ai_async along with your preferred AssemblyAI transcription options:
curl --request POST \
--url https://RECALL_REGION.recall.ai/api/v1/recording/RECORDING_ID/create_transcript/ \
--header "Authorization: RECALL_API_KEY" \
--header "accept: application/json" \
--header "content-type: application/json" \
--data '
{
"provider": {
"assembly_ai_async": {
"speech_models": ["universal-2"]
}
}
}
'See the provider.assembly_ai_async field on the Create Async Transcript endpoint for the full list of options available.
See post-meeting transcription for the full post-meeting transcription implementation, including when to create the post-meeting transcript, which webhook events to listen for, how to retrieve the completed transcript, how to handle transcription failures, and more.
AssemblyAI for real-time transcription
To use AssemblyAI for real-time transcription, set the provider to assembly_ai_v3_streaming when creating the recording. Real-time transcript delivery is configured separately through recording_config.realtime_endpoints.
Use
assembly_ai_v3_streaming, notassembly_ai_streaming, for new real-time transcription integrations.
Meeting bots
To use AssemblyAI real-time transcription with meeting bots, set recording_config.transcript.provider.assembly_ai_v3_streaming in the Create Bot request along with your preferred AssemblyAI transcription options:
curl --request POST \
--url https://RECALL_REGION.recall.ai/api/v1/bot/ \
--header "Authorization: RECALL_API_KEY" \
--header "accept: application/json" \
--header "content-type: application/json" \
--data '
{
"meeting_url": "MEETING_URL",
"recording_config": {
"transcript": {
"provider": {
"assembly_ai_v3_streaming": {}
}
},
"realtime_endpoints": [
{
"url": "REAL_TIME_TRANSCRIPT_WEBHOOK_ENDPOINT",
"type": "webhook",
"events": ["transcript.data"]
}
]
}
}
'See the recording_config.transcript.provider.assembly_ai_v3_streaming field on the Create Bot endpoint for the full list of options available.
See Meeting Bot Real-time Transcription for the full meeting bot implementation, including how to create a bot with real-time transcription enabled, configure real-time transcript delivery, subscribe to transcript events, and receive transcript data from a live meeting.
Desktop Recording SDK
To use AssemblyAI real-time transcription with the Desktop Recording SDK, set recording_config.transcript.provider.assembly_ai_v3_streaming in the Create Desktop SDK Upload request along with your preferred AssemblyAI transcription options:
curl --request POST \
--url https://RECALL_REGION.recall.ai/api/v1/sdk_upload/ \
--header "Authorization: RECALL_API_KEY" \
--header "accept: application/json" \
--header "content-type: application/json" \
--data '
{
"recording_config": {
"transcript": {
"provider": {
"assembly_ai_v3_streaming": {}
}
},
"realtime_endpoints": [
{
"url": "REAL_TIME_TRANSCRIPT_WEBHOOK_ENDPOINT",
"type": "webhook",
"events": ["transcript.data"]
}
]
}
}
'See the recording_config.transcript.provider.assembly_ai_v3_streaming field on the Create Desktop SDK Upload endpoint for the full list of options available.
See Desktop Recording SDK Real-time Transcription for the full Desktop Recording SDK implementation, including how to create a Desktop SDK upload with real-time transcription enabled, configure transcript delivery, start recording from the SDK, and receive transcript data from the recording.
Additional configurations
Multilingual transcription with AssemblyAI
In some meetings, participants may speak in more than one language, and you may not know ahead of time which language or languages will be used. In those cases, you can use a transcription provider that supports multilingual transcription. Multilingual transcription generally includes two distinct features:
| Feature | Description |
|---|---|
| Language detection | Detects the spoken language without requiring you to set a language explicitly. |
| Code-switching | Handles conversations where speakers switch between two or more languages during the same meeting. |
Multilingual transcription options for post-meeting transcription
AssemblyAI post-meeting transcription supports both language detection and code-switching. To enable language detection and code-switching with AssemblyAI, set language_detection to true and enable code_switching in language_detection_options:
{
// ... other Create Async Transcript request options
"provider": {
"assembly_ai_async": {
"speech_models": ["universal-2"],
"language_detection": true,
"language_detection_options": {
"code_switching": true
}
}
}
}Multilingual transcription options for real-time transcription
AssemblyAI real-time transcription supports limited multilingual transcription depending on the streaming model you use. To enable multilingual real-time transcription, configure the AssemblyAI streaming model and enable language detection:
{
// ... other request options
"recording_config": {
// ... other recording options
"transcript": {
// ... other transcript options
"provider": {
"assembly_ai_v3_streaming": {
"speech_model": "universal-streaming-multilingual",
"language_detection": true,
"format_turns": true
}
}
}
}
}See AssemblyAI supported languages for the latest AssemblyAI language support by model.
Accessing provider-specific fields from AssemblyAI transcript data
If you need AssemblyAI-specific fields that are not exposed in the normalized Recall transcript, you can access the provider data.
Provider data is not available when using Perfect Diarization or Hybrid Diarization
Accessing AssemblyAI provider data post-meeting
For post-meeting transcription, you can access the raw AssemblyAI transcription response from the completed transcript artifact. To access provider data after the meeting, fetch the transcript artifact using the Retrieve Transcript endpoint. Use the data.provider_data_download_url field from the response to download the raw provider response.
The response returned by provider_data_download_url varies by provider. See the accessing provider data section of the post-meeting transcription guide for implementation details.
Accessing AssemblyAI provider data in real time
For real-time transcription, subscribe to transcript.provider_data in your real-time endpoint configuration if you need AssemblyAI-specific payloads:
{
"url": "REAL_TIME_TRANSCRIPT_WEBHOOK_ENDPOINT",
"type": "webhook",
"events": ["transcript.data", "transcript.provider_data"]
}See the accessing provider data section of the real-time transcription docs for implementation details.
FAQ
Do I need to add an AssemblyAI API key in every Recall.ai region?
Yes. Recall.ai regions are isolated, so you must add your AssemblyAI API key in each Recall.ai region where you want to use AssemblyAI transcription.
What regions can I configure with AssemblyAI?
By default, AssemblyAI will process data in the US. You can configure AssemblyAI to process data in the EU in Recall's AssemblyAI transcription setup dashboard. See AssemblyAI for details about their EU region support.
How do I opt out of AssemblyAI model training?
AssemblyAI controls model training settings at the AssemblyAI account level. If you need to opt out of AssemblyAI model training or use zero-data-retention settings, contact [email protected]with a request clearly stating you want to opt out. More details can be found here.
Why is assembly_ai_async_chunked not returning transcripts in real-time?
assembly_ai_async_chunked not returning transcripts in real-time?The assembly_ai_async_chunked parameter uses AssemblyAI's pre‑recorded transcription model under the hood, which is the same model used for assembly_ai_async.
This model provides more control and higher accuracy, but it requires a minimum recording length before producing results. As a result, it processes audio in batches and typically introduces 3-5 minute delays between transcript updates, so utterances may only appear every few minutes rather than every few seconds.
Is there any differences between assembly_ai_async_chunked and assembly_ai_async?
assembly_ai_async_chunked and assembly_ai_async?Both of these settings use the same pre-recorded Assembly transcription model under the hood and offer the same settings. As a result, the outputs of both of these tend to be very similar/the same.
Unable to get temporary credentials for assembly_ai_streaming or assembly_ai_v3_streaming
assembly_ai_streaming or assembly_ai_v3_streamingA few issues could be causing this:
- You are trying to use a deprecated model
assembly_ai_streaming- Assembly AI has restricted access to their deprecated model so new users will not be able to access it. Instead, use theassembly_ai_v3_streaming - You are trying to use
assembly_ai_v3_streamingin the EU - Assembly AI's Streaming STT model isn't supported in the EU at this time so you will need to switch to a different model supported in the EU or use a different transcription provider
Updated 3 days ago