Edit

What is MAI-Voice (preview)?

Note

This feature is currently in public preview. This preview is provided without a service-level agreement, and isn't 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-Voice is a family of neural text-to-speech models available through Azure Speech in Foundry Tools in public preview. Built on Microsoft's in-house speech foundation models, MAI-Voice models produce expressive, natural speech output with consistent voice persona quality. Similar to Azure Neural HD voices, MAI-Voice models understand input text holistically and automatically adapt tone, emotion, and speaking style. This adaptation enables more human-like and conversational speech without requiring extensive manual tuning.

Speech offers the following MAI-Voice models:

Model Voice Count Key Characteristics Best For
MAI-Voice-1 Six prebuilt English (US) voices Emotionally rich, highly expressive, consistent persona quality, SSML style control Conversational AI, creative applications, long-form narration
MAI-Voice-2 Multilingual prebuilt voices across 10+ languages High-fidelity expressive synthesis, multilingual, voice prompting (gated), long-form and multi-speaker generation Multilingual conversational AI, expressive long-form content, multi-speaker scenarios

Model details

MAI-Voice-1 is optimized for expressive, conversational, and long-form scenarios in English (US).

Key features

Key features Description
Human-like speech generation MAI-Voice-1 generates highly natural and emotionally rich speech. The model interprets input text holistically and automatically adjusts emotion, pace, and rhythm without manual configuration.
Conversational expressiveness MAI-Voice-1 is optimized for conversational scenarios, producing engaging and context-aware speech suitable for assistants and interactive experiences.
Emotion and style control Developers can influence speaking style by using SSML with mstts:express-as, enabling control over emotions such as joy, excitement, empathy, and more.
Consistent voice persona MAI-Voice-1 maintains a stable and consistent voice persona across long-form content while still allowing expressive variation.
High fidelity audio The model produces high-quality neural speech with natural prosody and clarity suitable for production-grade applications.
Real-time synthesis MAI-Voice-1 supports real-time speech synthesis by using the Speech SDK and APIs.

Prerequisites

SSML examples

Basic SSML

The following SSML synthesizes a greeting by using the en-US-Jasper:MAI-Voice-1 voice.

<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xmlns:mstts='http://www.w3.org/2001/mstts' xml:lang='en-US'>
  <voice name='en-US-Jasper:MAI-Voice-1'>
    <mstts:express-as style="excitement">hello world.</mstts:express-as>
  </voice>
</speak>

Submit this SSML to the Speech REST API or SDK to receive synthesized audio.

Reference: Speech Synthesis Markup Language (SSML) | <voice> element

Voice prompting (gated access)

To access personal voice (voice cloning) by using MAI-Voice-1:

  1. Apply for gated access through Azure AI Custom Neural Voice and Custom Avatar Limited Access Review.
  2. Once approved, access personal voice APIs at cognitive-services-speech-sdk/samples/custom-voice.
  3. Upload audio consent and prompt to create a personal voice.
  4. Synthesize given text by using the created voice and MAI-Voice-1 model with the following SSML:
<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xmlns:mstts='http://www.w3.org/2001/mstts' xml:lang='en-US'>
  <voice name='MAI-voice-1'>
    <mstts:ttsembedding speakerProfileId='your speaker profile ID here'>
      I'm happy to hear that you find me amazing and that I have made your trip planning easier and more fun.
    </mstts:ttsembedding>
  </voice>
</speak>

Prebuilt voices

Voice ID Gender Recommended use case
en-us-Jasper:MAI-Voice-1 Male General Conversation, Sales, Emotional styles
en-us-June:MAI-Voice-1 Female General Conversation, Customer Service, Professional, Emotional styles
en-us-Grant:MAI-Voice-1 Male General Conversation, Professional, Emotional styles
en-us-Iris:MAI-Voice-1 Female General Conversation, Narration, Emotional styles
en-us-Reed:MAI-Voice-1 Male General Conversation
en-us-Joy:MAI-Voice-1 Female General Conversation

Usage: Available for third-party developers. Microsoft holds full licensing rights for commercial use.

Use MAI-Voice models

MAI-Voice models use the same Azure Speech APIs and SDKs as other Azure neural and HD voices. Use the voice name in the name attribute of the SSML <voice> element. See the prebuilt voice tables in the preceding sections for available names.

Try a MAI-Voice voice in the Foundry portal:

  1. Go to the Text to speech feature page and select Open in playground.
  2. Select a MAI-Voice voice from the voice dropdown.
  3. Enter sample text in the text box.
  4. Select Play to hear the synthesized speech.

Send an SSML POST request to the cognitiveservices/v1 endpoint of your Speech resource. Replace YourRegion with your Speech resource region and <YourSpeechResourceKey> with your resource key.

curl -X POST \
  "https://YourRegion.tts.speech.microsoft.com/cognitiveservices/v1" \
  --header "Content-Type: application/ssml+xml" \
  --header "X-Microsoft-OutputFormat: audio-24khz-160kbitrate-mono-mp3" \
  --header "Ocp-Apim-Subscription-Key: <YourSpeechResourceKey>" \
  --data '<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xmlns:mstts="http://www.w3.org/2001/mstts" xml:lang="en-US">
  <voice name="en-US-Harper:MAI-Voice-2">
    Hello, this is a sample from MAI Voice.
  </voice>
</speak>' \
  --output output.mp3

Replace the voice name with any MAI-Voice voice from the prebuilt voice tables above.

The following code synthesizes speech by using the Azure Speech SDK and saves the audio to output.mp3. Replace <key> with your Speech resource key.

import azure.cognitiveservices.speech as speechsdk

speech_config = speechsdk.SpeechConfig(
    subscription="<key>", region="eastus"
)
audio_config = speechsdk.audio.AudioOutputConfig(filename="output.mp3")
speech_config.set_speech_synthesis_output_format(
    speechsdk.SpeechSynthesisOutputFormat.Audio24Khz160KBitRateMonoMp3
)
synthesizer = speechsdk.SpeechSynthesizer(
    speech_config=speech_config, audio_config=audio_config
)

ssml = """
<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xmlns:mstts='http://www.w3.org/2001/mstts' xml:lang='en-US'>
  <voice name='en-US-Jasper:MAI-Voice-1'>
    <mstts:express-as style="excitement">Hello world.</mstts:express-as>
  </voice>
</speak>
"""

synthesizer.speak_ssml_async(ssml).get()

On success, an output.mp3 file is saved to the current directory. Replace the voice name with any MAI-Voice voice from the prebuilt voice tables above.

Follow the text to speech quickstart. In the SSML, use a MAI-Voice voice name in the name attribute of the <voice> element. See the prebuilt voice tables above for available names.

Follow the text to speech quickstart. In the SSML, use a MAI-Voice voice name in the name attribute of the <voice> element. See the prebuilt voice tables above for available names.

Follow the text to speech quickstart. In the SSML, use a MAI-Voice voice name in the name attribute of the <voice> element. See the prebuilt voice tables above for available names.

Next steps