Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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-2MAI-Transcribe-1.5MAI-Transcribe-1: Deprecated on Aug 20, 2026.
Prerequisites
- An Azure subscription. You can create one for free.
- A Microsoft Foundry resource for Speech in the Azure portal.
- The Speech resource key and region. After your Speech resource is deployed, select Go to resource to view and manage keys. For the current list of supported regions, see Speech service regions.
- An audio file (less than 300 MB in size) in one of these formats: WAV, MP3, or FLAC.
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.enabledproperty totruein the request. - Set the
enhancedMode.modelproperty 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.
Related content
- For more information about using LLM Speech API, see LLM Speech API
- MAI-Voice in Azure Speech
- How to customize Voice Live input and output