models

Microsoft AI: MAI-Voice-2.1-Flash

Markdown · JSON

Microsoft AI: MAI-Voice-2.1-Flash

MAI-Voice-2.1-Flash от Microsoft AI создаёт выразительную речь на 23 языках для интерактивных голосовых приложений. Она поддерживает поток, нескольких говорящих и управление подачей на уровне предложения с подобранной библиотекой голосов.

О модели

Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.

MAI-Voice-2.1-Flash — управляемая промптом модель синтеза речи Microsoft AI для голосового взаимодействия с быстрым откликом. Производитель предлагает её для голосовых ассистентов, разговоров поддержки и телефонных меню. Она создаёт естественную выразительную речь на двадцати трёх языках с управлением тоном и подачей. Flash ориентирована на живой ответ; отдельно названная MAI-Voice-2.1 отдаёт приоритет подробной выразительности и качеству длинного контента.

Текст, диктор и язык

Вход — произносимый текст, выбранный голос и необязательные выразительные инструкции SSML. Управляемый каталог различает диктора, локаль и версию модели. Harper и Grant — примеры именованных дикторов с записями по языкам. Используйте текст целевого языка и соответствующую локаль; подготовленное английское приветствие и испанское объяснение — отдельные отрывки со своими словами.

Карточка документирует постоянную голосовую идентичность между поддерживаемыми языками и нескольких говорящих для диалога. Это помогает приложению с узнаваемым рассказчиком в локализованных подсказках или коротким диалогом разных ролей. Явно назначайте реплики нужным дикторам и сохраняйте назначения. Аудио — озвученная версия сценария, а не новый ответ на открытый вопрос.

Тон и манера речи

Microsoft документирует управление эмоцией и подачей на уровне предложения и реплики через SSML. Стили зависят от выбранного голоса. Управляемый каталог содержит стили задач narrator, educational и customer_call_center, а также выразительные стили отдельных дикторов. Например, американская запись Harper включает joyful и relieved. Выбирайте стиль, поддерживаемый голосом, не предполагая одинакового набора у всех дикторов.

Пример реплики поддержки: «Я помогу найти нужный документ. Назовите его заголовок или опишите тему». Запрос должен быть достаточно коротким для действия слушателя, с подходящей спокойной или ободряющей подачей. Для учебного задания запишите объяснение и следующий вопрос отдельными речевыми единицами. Выразительность служит смыслу, когда сценарий ясно показывает смену намерения.

Поток и выдача аудио

Карточка Flash специально документирует потоковый выход живого диалога, включая сценарии, где слушатель говорит поверх ответа. Приложение воспроизводит аудио по мере поступления и координирует прерывание и следующую реплику. Так время сообщения становится частью взаимодействия, не требуя заранее готовить каждый ответ полной записью.

Производитель позволяет сценарию синтеза задавать выходной формат. Опубликованный пример создаёт монофонический MP3 с частотой 24 кГц и битрейтом 160 кбит/с. Это одна документированная конфигурация, а не ограничение нативного формата. Выберите представление, принимаемое целевым трактом воспроизведения; сохраняйте диктора и произносимые слова для проверки результата.

Необязательный режим голосового референса

Режим пользовательского голоса Microsoft воспроизводит голос диктора, давшего согласие, по референсу от пяти до шестидесяти секунд без дообучения. Карточка рекомендует естественную разговорную подачу с умеренной энергией: референс влияет на исполнение. У режима отдельный процесс одобрения производителя и записи согласия; готовые библиотечные голоса — отдельный путь подготовки.

Для референса фирменного рассказчика используйте чистый репрезентативный отрывок и определите, какая подача должна перейти в новый сценарий. Для готового голоса подготовьте конкретные имена, команды и целевые фразы приложения. Прослушайте отрывки выбранным голосом и проверьте смену реплик. Полезный результат — выразительное речевое взаимодействие с осознанным диктором, ясным текстом и аудио под среду воспроизведения слушателя.

Ailoot Ultra · Озвучка POST /v1/audio/speech microsoft/mai-voice-2.1-flash

microsoft/mai-voice-2.1-flash

Microsoft AI /microsoft/mai-voice-2.1-flash

Начало

MAI-Voice-2.1-Flash от Microsoft AI создаёт выразительную речь на 23 языках для интерактивных голосовых приложений. Она поддерживает поток, нескольких говорящих и управление подачей на уровне предложения с подобранной библиотекой голосов.

Допустимые входные данные
Текст
Результаты
Аудио

Доступно в Ailoot · входные данные и методы

Ailoot Ultra · Озвучка POST /v1/audio/speech
Входные данные
text
Результат
audio
Выходной формат
mp3
ПолеТипТребованиеЗначения и ограниченияПо умолчанию
ПолеmodelТипstringТребованиеОбязательноЗначения и ограничения
microsoft/mai-voice-2.1-flash
По умолчанию—
ПолеinputТипstringТребованиеОбязательноЗначения и ограничения
Минимальная длина: 1
Единица: символы Unicode
По умолчанию—
ПолеvoiceТипstringТребованиеОбязательноЗначения и ограничения
cs-CZ-Grant:MAI-Voice-2.1-Flash, cs-CZ-Harper:MAI-Voice-2.1-Flash, da-DK-Grant:MAI-Voice-2.1-Flash, da-DK-Harper:MAI-Voice-2.1-Flash, de-DE-Grant:MAI-Voice-2.1-Flash, de-DE-Harper:MAI-Voice-2.1-Flash, de-DE-Klaus:MAI-Voice-2.1-Flash, de-DE-Mia:MAI-Voice-2.1-Flash, en-AU-Isla:MAI-Voice-2.1-Flash, en-GB-Emily:MAI-Voice-2.1-Flash, en-GB-Harry:MAI-Voice-2.1-Flash, en-IN-Dhruv:MAI-Voice-2.1-Flash, en-IN-Priya:MAI-Voice-2.1-Flash, en-US-Ethan:MAI-Voice-2.1-Flash, en-US-Grant:MAI-Voice-2.1-Flash, en-US-Harper:MAI-Voice-2.1-Flash, en-US-Iris:MAI-Voice-2.1-Flash, en-US-Jasper:MAI-Voice-2.1-Flash, en-US-Olivia:MAI-Voice-2.1-Flash, en-US-Sage:MAI-Voice-2.1-Flash, es-ES-Marta:MAI-Voice-2.1-Flash, es-MX-Alejo:MAI-Voice-2.1-Flash, es-MX-Grant:MAI-Voice-2.1-Flash, es-MX-Harper:MAI-Voice-2.1-Flash, es-MX-Valeria:MAI-Voice-2.1-Flash, fi-FI-Grant:MAI-Voice-2.1-Flash, fi-FI-Harper:MAI-Voice-2.1-Flash, fr-FR-Grant:MAI-Voice-2.1-Flash, fr-FR-Harper:MAI-Voice-2.1-Flash, fr-FR-Marc:MAI-Voice-2.1-Flash, fr-FR-Soleil:MAI-Voice-2.1-Flash, hi-IN-Arjun:MAI-Voice-2.1-Flash, hi-IN-Dhruv:MAI-Voice-2.1-Flash, hi-IN-Grant:MAI-Voice-2.1-Flash, hi-IN-Harper:MAI-Voice-2.1-Flash, hi-IN-Kavya:MAI-Voice-2.1-Flash, hi-IN-Priya:MAI-Voice-2.1-Flash, hu-HU-Bence:MAI-Voice-2.1-Flash, hu-HU-Grant:MAI-Voice-2.1-Flash, hu-HU-Harper:MAI-Voice-2.1-Flash, hu-HU-Levente:MAI-Voice-2.1-Flash, hu-HU-Lilla:MAI-Voice-2.1-Flash, hu-HU-Reka:MAI-Voice-2.1-Flash, id-ID-Grant:MAI-Voice-2.1-Flash, id-ID-Harper:MAI-Voice-2.1-Flash, it-IT-Grant:MAI-Voice-2.1-Flash, it-IT-Harper:MAI-Voice-2.1-Flash, it-IT-Luca:MAI-Voice-2.1-Flash, it-IT-Rosa:MAI-Voice-2.1-Flash, ko-KR-Grant:MAI-Voice-2.1-Flash, ko-KR-Haena:MAI-Voice-2.1-Flash, ko-KR-Harper:MAI-Voice-2.1-Flash, ko-KR-Junho:MAI-Voice-2.1-Flash, nb-NO-Grant:MAI-Voice-2.1-Flash, nb-NO-Harper:MAI-Voice-2.1-Flash, nl-NL-Grant:MAI-Voice-2.1-Flash, nl-NL-Harper:MAI-Voice-2.1-Flash, nl-NL-Sander:MAI-Voice-2.1-Flash, pl-PL-Grant:MAI-Voice-2.1-Flash, pl-PL-Harper:MAI-Voice-2.1-Flash, pt-BR-Caio:MAI-Voice-2.1-Flash, pt-BR-Grant:MAI-Voice-2.1-Flash, pt-BR-Harper:MAI-Voice-2.1-Flash, pt-BR-Luana:MAI-Voice-2.1-Flash, pt-BR-Pedro:MAI-Voice-2.1-Flash, pt-BR-Rafael:MAI-Voice-2.1-Flash, pt-PT-Grant:MAI-Voice-2.1-Flash, pt-PT-Harper:MAI-Voice-2.1-Flash, pt-PT-Rui:MAI-Voice-2.1-Flash, ro-RO-Andrei:MAI-Voice-2.1-Flash, ro-RO-Elena:MAI-Voice-2.1-Flash, ro-RO-Grant:MAI-Voice-2.1-Flash, ro-RO-Harper:MAI-Voice-2.1-Flash, ro-RO-Ioana:MAI-Voice-2.1-Flash, ro-RO-Radu:MAI-Voice-2.1-Flash, ru-RU-Grant:MAI-Voice-2.1-Flash, ru-RU-Harper:MAI-Voice-2.1-Flash, ru-RU-Lev:MAI-Voice-2.1-Flash, ru-RU-Masha:MAI-Voice-2.1-Flash, sv-SE-Grant:MAI-Voice-2.1-Flash, sv-SE-Harper:MAI-Voice-2.1-Flash, th-TH-Grant:MAI-Voice-2.1-Flash, th-TH-Harper:MAI-Voice-2.1-Flash, th-TH-Krit:MAI-Voice-2.1-Flash, th-TH-Nattapong:MAI-Voice-2.1-Flash, tr-TR-Aydin:MAI-Voice-2.1-Flash, tr-TR-Elif:MAI-Voice-2.1-Flash, tr-TR-Grant:MAI-Voice-2.1-Flash, tr-TR-Harper:MAI-Voice-2.1-Flash, vi-VN-Grant:MAI-Voice-2.1-Flash, vi-VN-Harper:MAI-Voice-2.1-Flash, zh-CN-Bo:MAI-Voice-2.1-Flash, zh-CN-Grant:MAI-Voice-2.1-Flash, zh-CN-Harper:MAI-Voice-2.1-Flash, zh-CN-Lan:MAI-Voice-2.1-Flash, zh-CN-Mei:MAI-Voice-2.1-Flash, zh-CN-Wei:MAI-Voice-2.1-Flash
По умолчанию—
Полеresponse_formatТипstringТребованиеОбязательноЗначения и ограничения
mp3
По умолчанию—
Сочетания входных материалов

text_to_speech · Обязательно: input

Параметры и жизненный цикл метода
ПараметрКонтракт
Параметрcontent_typeКонтрактapplication/json
ПараметрrequiredКонтрактmodel, input, voice, response_format
Параметрvoice_idsКонтрактcs-CZ-Grant:MAI-Voice-2.1-Flash, cs-CZ-Harper:MAI-Voice-2.1-Flash, da-DK-Grant:MAI-Voice-2.1-Flash, da-DK-Harper:MAI-Voice-2.1-Flash, de-DE-Grant:MAI-Voice-2.1-Flash, de-DE-Harper:MAI-Voice-2.1-Flash, de-DE-Klaus:MAI-Voice-2.1-Flash, de-DE-Mia:MAI-Voice-2.1-Flash, en-AU-Isla:MAI-Voice-2.1-Flash, en-GB-Emily:MAI-Voice-2.1-Flash, en-GB-Harry:MAI-Voice-2.1-Flash, en-IN-Dhruv:MAI-Voice-2.1-Flash, en-IN-Priya:MAI-Voice-2.1-Flash, en-US-Ethan:MAI-Voice-2.1-Flash, en-US-Grant:MAI-Voice-2.1-Flash, en-US-Harper:MAI-Voice-2.1-Flash, en-US-Iris:MAI-Voice-2.1-Flash, en-US-Jasper:MAI-Voice-2.1-Flash, en-US-Olivia:MAI-Voice-2.1-Flash, en-US-Sage:MAI-Voice-2.1-Flash, es-ES-Marta:MAI-Voice-2.1-Flash, es-MX-Alejo:MAI-Voice-2.1-Flash, es-MX-Grant:MAI-Voice-2.1-Flash, es-MX-Harper:MAI-Voice-2.1-Flash, es-MX-Valeria:MAI-Voice-2.1-Flash, fi-FI-Grant:MAI-Voice-2.1-Flash, fi-FI-Harper:MAI-Voice-2.1-Flash, fr-FR-Grant:MAI-Voice-2.1-Flash, fr-FR-Harper:MAI-Voice-2.1-Flash, fr-FR-Marc:MAI-Voice-2.1-Flash, fr-FR-Soleil:MAI-Voice-2.1-Flash, hi-IN-Arjun:MAI-Voice-2.1-Flash, hi-IN-Dhruv:MAI-Voice-2.1-Flash, hi-IN-Grant:MAI-Voice-2.1-Flash, hi-IN-Harper:MAI-Voice-2.1-Flash, hi-IN-Kavya:MAI-Voice-2.1-Flash, hi-IN-Priya:MAI-Voice-2.1-Flash, hu-HU-Bence:MAI-Voice-2.1-Flash, hu-HU-Grant:MAI-Voice-2.1-Flash, hu-HU-Harper:MAI-Voice-2.1-Flash, hu-HU-Levente:MAI-Voice-2.1-Flash, hu-HU-Lilla:MAI-Voice-2.1-Flash, hu-HU-Reka:MAI-Voice-2.1-Flash, id-ID-Grant:MAI-Voice-2.1-Flash, id-ID-Harper:MAI-Voice-2.1-Flash, it-IT-Grant:MAI-Voice-2.1-Flash, it-IT-Harper:MAI-Voice-2.1-Flash, it-IT-Luca:MAI-Voice-2.1-Flash, it-IT-Rosa:MAI-Voice-2.1-Flash, ko-KR-Grant:MAI-Voice-2.1-Flash, ko-KR-Haena:MAI-Voice-2.1-Flash, ko-KR-Harper:MAI-Voice-2.1-Flash, ko-KR-Junho:MAI-Voice-2.1-Flash, nb-NO-Grant:MAI-Voice-2.1-Flash, nb-NO-Harper:MAI-Voice-2.1-Flash, nl-NL-Grant:MAI-Voice-2.1-Flash, nl-NL-Harper:MAI-Voice-2.1-Flash, nl-NL-Sander:MAI-Voice-2.1-Flash, pl-PL-Grant:MAI-Voice-2.1-Flash, pl-PL-Harper:MAI-Voice-2.1-Flash, pt-BR-Caio:MAI-Voice-2.1-Flash, pt-BR-Grant:MAI-Voice-2.1-Flash, pt-BR-Harper:MAI-Voice-2.1-Flash, pt-BR-Luana:MAI-Voice-2.1-Flash, pt-BR-Pedro:MAI-Voice-2.1-Flash, pt-BR-Rafael:MAI-Voice-2.1-Flash, pt-PT-Grant:MAI-Voice-2.1-Flash, pt-PT-Harper:MAI-Voice-2.1-Flash, pt-PT-Rui:MAI-Voice-2.1-Flash, ro-RO-Andrei:MAI-Voice-2.1-Flash, ro-RO-Elena:MAI-Voice-2.1-Flash, ro-RO-Grant:MAI-Voice-2.1-Flash, ro-RO-Harper:MAI-Voice-2.1-Flash, ro-RO-Ioana:MAI-Voice-2.1-Flash, ro-RO-Radu:MAI-Voice-2.1-Flash, ru-RU-Grant:MAI-Voice-2.1-Flash, ru-RU-Harper:MAI-Voice-2.1-Flash, ru-RU-Lev:MAI-Voice-2.1-Flash, ru-RU-Masha:MAI-Voice-2.1-Flash, sv-SE-Grant:MAI-Voice-2.1-Flash, sv-SE-Harper:MAI-Voice-2.1-Flash, th-TH-Grant:MAI-Voice-2.1-Flash, th-TH-Harper:MAI-Voice-2.1-Flash, th-TH-Krit:MAI-Voice-2.1-Flash, th-TH-Nattapong:MAI-Voice-2.1-Flash, tr-TR-Aydin:MAI-Voice-2.1-Flash, tr-TR-Elif:MAI-Voice-2.1-Flash, tr-TR-Grant:MAI-Voice-2.1-Flash, tr-TR-Harper:MAI-Voice-2.1-Flash, vi-VN-Grant:MAI-Voice-2.1-Flash, vi-VN-Harper:MAI-Voice-2.1-Flash, zh-CN-Bo:MAI-Voice-2.1-Flash, zh-CN-Grant:MAI-Voice-2.1-Flash, zh-CN-Harper:MAI-Voice-2.1-Flash, zh-CN-Lan:MAI-Voice-2.1-Flash, zh-CN-Mei:MAI-Voice-2.1-Flash, zh-CN-Wei:MAI-Voice-2.1-Flash
Параметрresponse_formatКонтрактmp3
Параметрmax_input_charactersКонтрактnull
Параметрother_optionsКонтрактfalse
ПараметрinputКонтрактточный текст UTF-8; количество символов Unicode без нормализации
Параметрmaterial_typesКонтрактtext

Жизненный цикл: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · Фактически возвращённый task_id или запись в медиатеке

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Выберите точный голос из профиля этой модели.

Входные символы и секунды аудио — разные единицы учёта.

Тарифы

Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.

Быстрый режим
Не указано При выборе быстрого режима
Режим flex
Не указано При выборе режима flex
Максимальная интенсивность рассуждений
Не указано При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)

Ставки Ailoot

Цены по конфигурациям

Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.

КонфигурацияШкала ставокОплачиваемое количествоРасчётная единицаПлата
КонфигурацияБазовые тарифы на токеныШкала ставокБазовая ставкаОплачиваемое количество—Расчётная единица—Плата
Вход · Входные токены — / 1K токенов
Выход · Выходные токены — / 1K токенов
Вход · Чтение кэша — / 1K токенов
Вход · Запись в кэш — / 1K токенов
Вход · Запись в кэш, 1 час — / 1K токенов
КонфигурацияUltraШкала ставок—Оплачиваемое количествоКаждая кодовая точка Unicode считается одним символом, включая символы Han.Расчётная единицаза 1K входных символовПлата
Вход · входной символ $0.03 за 1K входных символов

Сведения о справочном тарифе

Справочные шкалы модели не меняют выбор метода, расчёт стоимости или списания. Действующая плата определяется ставками выбранного метода Ailoot.

Microsoft AI: MAI-Voice-2.1-Flash

Цены по конфигурациям

КонфигурацияУсловия расчётаПлата
КонфигурацияMicrosoft AI: MAI-Voice-2.1-Flash · Стандартная конфигурацияУсловия расчётаКонфигурация по умолчаниюПлата
Вход · Входные символы 0,00003 $ за входной символ

Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. Как работают резервирование и расчёт →

Примеры запросов

Ailoot Ultra · Озвучка

curl
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VOICE_ID:?Choose an accepted voice ID from this exact model profile}"
export AILOOT_VOICE_ID
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "microsoft/mai-voice-2.1-flash", "input": "Good afternoon! This is a short voice take."}')
voice=os.environ["AILOOT_VOICE_ID"]
allowed=json.loads('["cs-CZ-Grant:MAI-Voice-2.1-Flash", "cs-CZ-Harper:MAI-Voice-2.1-Flash", "da-DK-Grant:MAI-Voice-2.1-Flash", "da-DK-Harper:MAI-Voice-2.1-Flash", "de-DE-Grant:MAI-Voice-2.1-Flash", "de-DE-Harper:MAI-Voice-2.1-Flash", "de-DE-Klaus:MAI-Voice-2.1-Flash", "de-DE-Mia:MAI-Voice-2.1-Flash", "en-AU-Isla:MAI-Voice-2.1-Flash", "en-GB-Emily:MAI-Voice-2.1-Flash", "en-GB-Harry:MAI-Voice-2.1-Flash", "en-IN-Dhruv:MAI-Voice-2.1-Flash", "en-IN-Priya:MAI-Voice-2.1-Flash", "en-US-Ethan:MAI-Voice-2.1-Flash", "en-US-Grant:MAI-Voice-2.1-Flash", "en-US-Harper:MAI-Voice-2.1-Flash", "en-US-Iris:MAI-Voice-2.1-Flash", "en-US-Jasper:MAI-Voice-2.1-Flash", "en-US-Olivia:MAI-Voice-2.1-Flash", "en-US-Sage:MAI-Voice-2.1-Flash", "es-ES-Marta:MAI-Voice-2.1-Flash", "es-MX-Alejo:MAI-Voice-2.1-Flash", "es-MX-Grant:MAI-Voice-2.1-Flash", "es-MX-Harper:MAI-Voice-2.1-Flash", "es-MX-Valeria:MAI-Voice-2.1-Flash", "fi-FI-Grant:MAI-Voice-2.1-Flash", "fi-FI-Harper:MAI-Voice-2.1-Flash", "fr-FR-Grant:MAI-Voice-2.1-Flash", "fr-FR-Harper:MAI-Voice-2.1-Flash", "fr-FR-Marc:MAI-Voice-2.1-Flash", "fr-FR-Soleil:MAI-Voice-2.1-Flash", "hi-IN-Arjun:MAI-Voice-2.1-Flash", "hi-IN-Dhruv:MAI-Voice-2.1-Flash", "hi-IN-Grant:MAI-Voice-2.1-Flash", "hi-IN-Harper:MAI-Voice-2.1-Flash", "hi-IN-Kavya:MAI-Voice-2.1-Flash", "hi-IN-Priya:MAI-Voice-2.1-Flash", "hu-HU-Bence:MAI-Voice-2.1-Flash", "hu-HU-Grant:MAI-Voice-2.1-Flash", "hu-HU-Harper:MAI-Voice-2.1-Flash", "hu-HU-Levente:MAI-Voice-2.1-Flash", "hu-HU-Lilla:MAI-Voice-2.1-Flash", "hu-HU-Reka:MAI-Voice-2.1-Flash", "id-ID-Grant:MAI-Voice-2.1-Flash", "id-ID-Harper:MAI-Voice-2.1-Flash", "it-IT-Grant:MAI-Voice-2.1-Flash", "it-IT-Harper:MAI-Voice-2.1-Flash", "it-IT-Luca:MAI-Voice-2.1-Flash", "it-IT-Rosa:MAI-Voice-2.1-Flash", "ko-KR-Grant:MAI-Voice-2.1-Flash", "ko-KR-Haena:MAI-Voice-2.1-Flash", "ko-KR-Harper:MAI-Voice-2.1-Flash", "ko-KR-Junho:MAI-Voice-2.1-Flash", "nb-NO-Grant:MAI-Voice-2.1-Flash", "nb-NO-Harper:MAI-Voice-2.1-Flash", "nl-NL-Grant:MAI-Voice-2.1-Flash", "nl-NL-Harper:MAI-Voice-2.1-Flash", "nl-NL-Sander:MAI-Voice-2.1-Flash", "pl-PL-Grant:MAI-Voice-2.1-Flash", "pl-PL-Harper:MAI-Voice-2.1-Flash", "pt-BR-Caio:MAI-Voice-2.1-Flash", "pt-BR-Grant:MAI-Voice-2.1-Flash", "pt-BR-Harper:MAI-Voice-2.1-Flash", "pt-BR-Luana:MAI-Voice-2.1-Flash", "pt-BR-Pedro:MAI-Voice-2.1-Flash", "pt-BR-Rafael:MAI-Voice-2.1-Flash", "pt-PT-Grant:MAI-Voice-2.1-Flash", "pt-PT-Harper:MAI-Voice-2.1-Flash", "pt-PT-Rui:MAI-Voice-2.1-Flash", "ro-RO-Andrei:MAI-Voice-2.1-Flash", "ro-RO-Elena:MAI-Voice-2.1-Flash", "ro-RO-Grant:MAI-Voice-2.1-Flash", "ro-RO-Harper:MAI-Voice-2.1-Flash", "ro-RO-Ioana:MAI-Voice-2.1-Flash", "ro-RO-Radu:MAI-Voice-2.1-Flash", "ru-RU-Grant:MAI-Voice-2.1-Flash", "ru-RU-Harper:MAI-Voice-2.1-Flash", "ru-RU-Lev:MAI-Voice-2.1-Flash", "ru-RU-Masha:MAI-Voice-2.1-Flash", "sv-SE-Grant:MAI-Voice-2.1-Flash", "sv-SE-Harper:MAI-Voice-2.1-Flash", "th-TH-Grant:MAI-Voice-2.1-Flash", "th-TH-Harper:MAI-Voice-2.1-Flash", "th-TH-Krit:MAI-Voice-2.1-Flash", "th-TH-Nattapong:MAI-Voice-2.1-Flash", "tr-TR-Aydin:MAI-Voice-2.1-Flash", "tr-TR-Elif:MAI-Voice-2.1-Flash", "tr-TR-Grant:MAI-Voice-2.1-Flash", "tr-TR-Harper:MAI-Voice-2.1-Flash", "vi-VN-Grant:MAI-Voice-2.1-Flash", "vi-VN-Harper:MAI-Voice-2.1-Flash", "zh-CN-Bo:MAI-Voice-2.1-Flash", "zh-CN-Grant:MAI-Voice-2.1-Flash", "zh-CN-Harper:MAI-Voice-2.1-Flash", "zh-CN-Lan:MAI-Voice-2.1-Flash", "zh-CN-Mei:MAI-Voice-2.1-Flash", "zh-CN-Wei:MAI-Voice-2.1-Flash"]')
if voice not in allowed: raise SystemExit("Choose an accepted voice ID from this exact model profile")
p["voice"]=voice
p["response_format"]="mp3"
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o speech.mp3

Получить и сохранить результаты

Ailoot Ultra · Озвучка

mp3

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Чтение другого содержимого
МедиатекаСтатус задачиСведения о материале
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o media-assets.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_MEDIA_TASK_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_MEDIA_TASK_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/tasks/$resource_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o media-task.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-task.json").read_text())))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_ASSET_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_ASSET_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/assets/$resource_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o media-asset.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-asset.json").read_text())))
PY_RESULT
Сохраняйте все готовые результаты

Сохраняйте каждый полностью полученный ответ, файл и элемент содержимого.

Сохраняйте полный бинарный результат и заголовки. Если возвращаются JSON или несколько результатов, сохраняйте каждый элемент данных и загружайте ресурс по каждому фактически возвращённому подписанному URL.

Если нужно проверить исходный ответ

Сохраняйте исходный operation_id/X-Client-Request-ID для сверки без повторной отправки; отдельного маршрута опроса аудио нет.

Поля ответа
ПолеТип
Полеbinary audioТипbytes
Полеresponse headersТипheaders
Ошибки и дальнейшие шаги
ОтветУсловиеСледующий шаг
Ответ400 · invalid_request_errorУсловиеНеверные обязательные поля, представление материалов или значение параметраСледующий шагИсправьте указанные поля перед новым запросом на создание.
Ответserver_errorУсловиеВозвращённый ответ указывает, что операция или результат требуют проверкиСледующий шагСохраните исходный возвращённый ID операции или задачи, заголовки запроса и ответ; продолжайте поддерживаемые операции чтения исходной операции. Не отправляйте запрос создания повторно.

Псевдонимы

Псевдонимы моделей

Ailoot Ultra microsoft/mai-voice-2.1-flash

Псевдонимы путей метода

Используйте пути методов, указанные выше.

Связанные ID для вызова

microsoft/mai-voice-2.1-flash

FAQ · Microsoft AI: MAI-Voice-2.1-Flash
Какие входные данные и результаты доступны?

POST /v1/audio/speech · microsoft/mai-voice-2.1-flash: text → audio

Какие поля использует запрос?

POST /v1/audio/speech · microsoft/mai-voice-2.1-flash: model, input, voice, response_format

Подробнее

Подключите Ailoot к Claude Code, OpenCode, Hermes или своему приложению.

Компания и портфель её проектов

Компания и портфель её проектов: миллионы клиентов; продажи на миллиарды ежемесячно.

Покупайте токены со скидкой.

Скидка по подписке для регулярной работы. Промокоды — до 50% на покупку токенов.

Подписка
Выберите тариф со скидкой для своих регулярных запросов.
Промокод до 50%
Введите код при покупке. Цена пересчитается с учётом действующей акции.
Расходы в истории
Модель, токены и сумма сохраняются для каждого запроса.

Выбрать подписку · Посмотреть цены моделей

Подключайте API к продукту, который вы продаёте.

SaaS, приложения и боты — по оферте и лицензионному договору Ailoot. Для перепродажи запросите реселлерскую лицензию.

Коммерческое приложение
Встраивайте генерацию текста, картинок, видео и звука в платные функции своего сервиса.
Лицензия для реселлера
Пришлите описание проекта и схему доступа. Запросите письменные условия использования и перепродажи.
Документы на сайте
Оферта, лицензионный договор и политика обработки данных доступны до подключения.

Запросить реселлерскую лицензию · Оферта и лицензионный договор