Edit

MAI-Transcribe in Azure Speech (preview)

Note

This feature is currently in public preview. This preview is provided without a service-level agreement, and is not recommended for production workloads. Certain features might not be supported or might have constrained capabilities. For more information, see Supplemental Terms of Use for Microsoft Azure Previews.

MAI-Transcribe is a next‑generation speech-to-text model built in‑house by the Microsoft AI team. It delivers fast and accurate transcription across 60 languages and real-world audio conditions. MAI-Transcribe-2 supports a wide range of workloads including video captioning, meetings, clinical notes, call center documentation, accessibility tools, content creation, and voice agents. The model provides speaker diarization, strong performance in noisy environments, word-level timestamps, automatic language identification, keyword biasing, code switching, and configurable transcription styles (clean transcripts without fillers, or verbatim).

The following models are supported:

  • MAI-Transcribe-2
  • MAI-Transcribe-1.5
  • MAI-Transcribe-1: Deprecated on Aug 20, 2026.

Prerequisites

Use a MAI-Transcribe model

Use MAI‑Transcribe‑2 to generate transcripts from audio input. Configure the following features through the corresponding API parameters:

Feature Parameter Values Default Description
Model selection (Required) enhancedMode.
model
"MAI-Transcribe-2"  Set to call the MAI‑Transcribe model.
Enhanced mode (Required) enhancedMode.
enabled
true | false false Set to true to call MAI-Transcribe.
Speaker diarization diarization.
enabled
true | false false Segments the recording by speaker and attributes each segment to the correct person. Returns speaker-labelled segments with speaker, offsetMilliseconds, and durationMilliseconds metadata.
Word-level timestamps modelOptions.
timestamps
"word" | "segment" | "none" none Controls timing granularity. "word" returns offsetMilliseconds and durationMilliseconds for every word, enabling precise alignment, search, navigation, and editing. "segment" returns timing information for each segment: the output transcript is partitioned into segments by language and speaker. So when diarization is enabled, a segment is created for each speaker and language, and when it's disabled it's created for each language. "none" omits timing data.
Keyword biasing phraseList.phrases Array of strings [] Biases recognition toward supplied keywords. Use for domain-specific terminology, abbreviations, product names, and proper nouns that are hard to disambiguate from context alone. Terms are hints, not forced output.
Transcription styles modelOptions.
transcribeStyle
"verbatim" | "clean" "verbatim" Controls output style. "verbatim" captures speech exactly as spoken, including filler words and false starts, for compliance, QA, and analysis workloads. clean removes fillers to produce readable captions, notes, and published transcripts.
Language selection locales ["language_code"] Unspecified (Automatic Detection) Allows forcing transcription in a specific language. This is a very strong hint to the model, and don't specify it unless you're absolutely certain that the recording is in the given language, and the default auto-detection doesn't work. Only one language can be provided here. MAI-Transcribe-2 supports 60 languages.
Code switching Automatic For commonly blended language pairs such as Hinglish and Spanglish, handles conversations that move between languages mid-utterance.
Noise robustness Inherent Maintains transcription quality on audio recorded outside controlled environments, including background noise, overlapping speech, and variable microphone quality.

To start using transcription with enhanced mode, first follow the LLM Speech quickstart. Then, specify the Model.

To use the MAI-Transcribe model:

  • Set the enhancedMode.enabled property to true in the request.
  • Set the enhancedMode.model property to "MAI-Transcribe-2" in the request.
  • Use one of the regions where MAI-Transcribe is available Speech service regions.
curl --location 'https://YourResourceName.cognitiveservices.azure.com/speechtotext/transcriptions:transcribe?api-version=2025-10-15' \
--header 'Content-Type: multipart/form-data' \
--header 'Ocp-Apim-Subscription-Key: <YourSpeechResourceKey>' \
--form 'audio=@"YourAudioFile.wav"' \
--form 'definition={ 
  "enhancedMode": {
    "enabled": true,
    "model": "MAI-Transcribe-2"
  }
}'

Optionally, for MAI-Transcribe-2, enable speaker diarization to distinguish between speakers and attribute words to the right person within a recording.

 --form 'definition={ 
  "enhancedMode": {
    "enabled": true,
    "model": "MAI-Transcribe-2"
  },
  "diarization": {"enabled": true}
}

Optionally, for MAI-Transcribe-2, control the transcript style using transcribeStyle. The default output is verbatim if you need the raw spoken content preserved, including fillers (“um”, “uh”), false starts, and self‑corrections. Set transcribeStyle to clean if you need a readability‑optimized transcript that removes filler words and auto‑formats common speech patterns.

 --form 'definition={ 
  "enhancedMode": {
    "enabled": true,
    "model": "MAI-Transcribe-2",
    "modelOptions": {
      "transcribeStyle": "clean"
    }
  }
}

Optionally, for MAI-Transcribe-2, enable word‑level timestamps to provide precise timing for every word, supporting accurate alignment, search, navigation, and editing.

 --form 'definition={ 
  "enhancedMode": {
    "enabled": true,
    "model": "MAI-Transcribe-2",
    "modelOptions": {
      "timestamps": "word"
    }
  }
}

Optionally, add a list of phrases to increase accuracy in specialized domains by using phraseList.phrases. This feature implements keyword biasing.

 --form 'definition={ 
  "enhancedMode": {
    "enabled": true,
    "model": "MAI-Transcribe-2"
  }, 
  "phraseList": {
     "phrases": ["phrase 1", "phrase 2"]
   },
 }'

Optionally, specify a language code in locales to force recognition in a single language. If you don't specify, the model automatically detects the language. For example:

--form 'definition={
  "locales": ["en"],
  "enhancedMode": {
    "enabled": true,
    "model":"MAI-Transcribe-2"
  }
}'

To start using the MAI-Transcribe model, first follow the Azure Speech API's quickstart guide to use Fast Transcription API's enhancedMode. Then, specify MAI-Transcribe-2 in the enhancedMode.model property. See the complete guide for all the parameters supported by MAI-Transcribe, currently only available under the REST API tab.

To start using the MAI-Transcribe model, first follow the Azure Speech API's quickstart guide to use Fast Transcription API's enhancedMode. Then, specify MAI-Transcribe-2 in the enhancedMode.model property. See the complete guide for all the parameters supported by MAI-Transcribe, currently only available under the REST API tab.

To start using the MAI-Transcribe model, first follow the Azure Speech API's quickstart guide to use Fast Transcription API's enhancedMode. Then, specify MAI-Transcribe-2 in the enhancedMode.model property. See the complete guide for all the parameters supported by MAI-Transcribe, currently only available under the REST API tab.

To start using the MAI-Transcribe model, first follow the Azure Speech API's quickstart guide to use Fast Transcription API's enhancedMode. Then, specify MAI-Transcribe-2 in the enhancedMode.model property. For a complete guide to all the parameters supported by MAI-Transcribe, see the REST API tab.

Language support

By default, the model operates in multilingual mode. The following languages are currently supported:

Language code Language MAI-Transcribe-1.5 support MAI-Transcribe-2 support
af Afrikaans
ar Arabic
as Assamese
az Azerbaijani
bg Bulgarian
bn Bengali
bs Bosnian
ca Catalan
cs Czech
da Danish
de German
el Greek
en English
es Spanish
et Estonian
fa Persian
fi Finnish
fil Filipino
fr French
gl Galician
gu Gujarati
he Hebrew
hi Hindi
hu Hungarian
hy Armenian
id Indonesian
is Icelandic
it Italian
ja Japanese
kk Kazakh
kn Kannada
ko Korean
lt Lithuanian
lv Latvian
mk Macedonian
ml Malayalam
mr Marathi
ms Malay
nb Norwegian Bokmål
ne Nepali
nl Dutch
or Odia
pa Punjabi (Gurmukhi script)
pl Polish
pt Portuguese
ro Romanian
ru Russian
sk Slovak
sl Slovenian
sv Swedish
sw Swahili
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
vi Vietnamese
yue Cantonese
zh Chinese (simplified)

Use MAI-Transcribe with Voice Live

You can also use the MAI-Transcribe model for input audio transcription in the Voice Live API. Set the model field in the input_audio_transcription session configuration. For details, see How to customize Voice Live input and output.