{
  "aboutHtml": "<p>Muse Voice Transcribe 1.0 — модель восприятия аудио от Meta для расшифровки речи, определения границ высказываний и отнесения реплик к говорящим. Она входит в семейство Muse Spark и объединяет распознавание, диаризацию и определение конца реплики внутри модели. Результат — распознанный текст с временными отметками и сведениями о говорящих, доступными в выбранном режиме.</p><p>Модель обрабатывает аудио фрагментами по 80 миллисекунд и решает, продолжать ли слушать или выдать текст. Адаптивная задержка позволяет дождаться дополнительного аудио, если слово трудно определить. По мере поступления речи формируется промежуточный текст, затем — завершённые результаты расшифровки. Рассматривайте промежуточную гипотезу и завершённую реплику как разные этапы прослушивания.</p><p>Выберите один из трёх режимов. Push-to-talk используется по умолчанию для одного управляемого высказывания, например голосового запроса или короткой диктовки. В режиме endpointing модель определяет границы речевых реплик и возвращает одну завершённую расшифровку для каждого обнаруженного сегмента. Диаризация относит распознанную речь к меткам говорящих и предназначена для записей с несколькими участниками, а не для самого быстрого обмена голосовыми командами.</p><p>Для готовой записи сценарий расшифровки файла возвращает полный текст за один запрос. По умолчанию результат представляет собой JSON с расшифровкой и длительностью аудио; в режимах endpointing и диаризации он содержит массив turns. Каждая реплика может включать идентификатор, начало и конец в миллисекундах и распознанный текст. Метки говорящих присутствуют в режиме диаризации. Push-to-talk выдаёт полную расшифровку без обнаруженных реплик в этом массиве. Интерфейс производителя для готовых файлов также может возвращать обычный текст или поток событий расшифровки. В обычном тексте обнаруженные реплики располагаются на отдельных строках и могут содержать метки говорящих; поток событий завершается после последнего события без отдельного итогового JSON. Режим промежуточных результатов delta возвращает приращения текста, а итоговое событие расшифровки содержит полную формулировку.</p><p>Подготовьте файл RIFF/WAVE с монофоническим 16-битным целочисленным PCM-аудио с частотой 16 или 24 кГц. Собственная частота модели — 24 кГц, интерфейс также принимает 16 кГц. Перед отправкой преобразуйте другие контейнеры или кодировки в поддерживаемый формат WAV. Сценарий расшифровки файла допускает аудио до 10 минут и общий размер тела запроса до 32 МБ. Сохраняйте связь исходной записи и её преобразований с полученной расшифровкой для последующей проверки прослушиванием.</p><p>Для живого аудио используется поток монофонического PCM без контейнера, с 16-битными знаковыми отсчётами в порядке little-endian, частотой 16 или 24 кГц и подачей примерно в реальном времени. Документированное окно сеанса — 60 минут. Meta описывает поддержку моделью аудиоввода длительностью более часа; документированные ограничения файла и живого сеанса при этом остаются отдельными границами интерфейсов. Выбирайте файловый или живой сценарий в зависимости от того, завершена ли запись или ещё ведётся, и связывайте результаты разных сеансов с соответствующими входными сегментами.</p><p>Muse Voice Transcribe обучена более чем на 70 языках, при этом документированный интерфейс распознавания перечисляет 25 поддерживаемых языков. Среди них английский, французский, немецкий, испанский, арабский, китайский путунхуа, хинди, японский, корейский, итальянский и португальский. Модель распознаёт переключение языков внутри предложений и между ними. Языковая подсказка может перечислить ожидаемые в аудио языки, но она направляет распознавание, а не заставляет выдавать всю расшифровку на одном языке.</p><p>Словарные подсказки помогают с терминами продукта, аббревиатурами, именами или названиями мест, важными для записи. Передайте реальные слова и варианты написания, которые ожидаете услышать. Список ключевых слов влияет на распознавание, но не гарантирует точного написания, поэтому сверяйте значимые термины с аудио. Языковые подсказки и ключевые слова выбираются в начале расшифровки; задавайте их под конкретную запись, не меняя их смысл во время сеанса.</p><p>Модель поддерживает диаризацию разговоров с более чем 20 говорящими. Метки вроде A и B обозначают говорящих в пределах одной расшифровки. Это не проверенные имена; метка также не подтверждает, что в другом сеансе обозначен тот же человек. Для задачи анализа исходной встречи запросите реплики с метками говорящих, сохраните запись и используйте метки для организации обсуждения, прежде чем сопоставлять реальные имена участников средствами окружающего рабочего процесса.</p><p>Промежуточные расшифровки живой речи могут меняться по мере поступления аудио. В накопительном режиме каждый промежуточный результат заменяет предыдущую гипотезу, а не добавляет ещё одну её копию. Обнаруженный конец речи отмечает границу, а результат завершённой реплики даёт окончательный текст, который может отличаться от последнего промежуточного. Сохраняйте связь перекрывающихся реплик с их идентификаторами и обработайте завершённые результаты, прежде чем считать расшифровку законченной. Когда живой ввод заканчивается, передайте сигнал окончания ввода и продолжайте принимать данные, пока источник потока не завершит выдачу ожидающих результатов. Немедленное закрытие соединения может привести к их потере; обнаруженная речевая граница завершает реплику, а не весь сеанс.</p><p>Временные отметки задаются на уровне реплик. Этот вариант не выдаёт отметок отдельных слов или оценок уверенности; ход обработки аудио не является временной отметкой конкретного слова. Обнаружение звуковых событий, определение эмоций и переформатирование расшифровки также не входят в документированный состав вывода. Используйте возвращённые интервалы реплик для временной шкалы говорящих или проверки сегментов и сохраняйте распознанные слова, если отдельный этап редактирования позже создаёт более аккуратные заметки.</p><p>Полезные результаты — завершённая диктовка, расшифровка голосового запроса, разговор с разделением по говорящим или временная шкала высказываний. Сверяйте имена, числа и технические термины с исходной записью, сохраняйте связи с режимом и временными отметками и оставляйте полные реплики доступными для проверки. Расшифровка устанавливает, что распознано в аудио; ответ на произнесённый вопрос, его перевод или преобразование в протокол встречи относятся к последующему этапу приложения.</p>",
  "aboutText": "Muse Voice Transcribe 1.0 — модель восприятия аудио от Meta для расшифровки речи, определения границ высказываний и отнесения реплик к говорящим. Она входит в семейство Muse Spark и объединяет распознавание, диаризацию и определение конца реплики внутри модели. Результат — распознанный текст с временными отметками и сведениями о говорящих, доступными в выбранном режиме.\n\nМодель обрабатывает аудио фрагментами по 80 миллисекунд и решает, продолжать ли слушать или выдать текст. Адаптивная задержка позволяет дождаться дополнительного аудио, если слово трудно определить. По мере поступления речи формируется промежуточный текст, затем — завершённые результаты расшифровки. Рассматривайте промежуточную гипотезу и завершённую реплику как разные этапы прослушивания.\n\nВыберите один из трёх режимов. Push-to-talk используется по умолчанию для одного управляемого высказывания, например голосового запроса или короткой диктовки. В режиме endpointing модель определяет границы речевых реплик и возвращает одну завершённую расшифровку для каждого обнаруженного сегмента. Диаризация относит распознанную речь к меткам говорящих и предназначена для записей с несколькими участниками, а не для самого быстрого обмена голосовыми командами.\n\nДля готовой записи сценарий расшифровки файла возвращает полный текст за один запрос. По умолчанию результат представляет собой JSON с расшифровкой и длительностью аудио; в режимах endpointing и диаризации он содержит массив turns. Каждая реплика может включать идентификатор, начало и конец в миллисекундах и распознанный текст. Метки говорящих присутствуют в режиме диаризации. Push-to-talk выдаёт полную расшифровку без обнаруженных реплик в этом массиве. Интерфейс производителя для готовых файлов также может возвращать обычный текст или поток событий расшифровки. В обычном тексте обнаруженные реплики располагаются на отдельных строках и могут содержать метки говорящих; поток событий завершается после последнего события без отдельного итогового JSON. Режим промежуточных результатов delta возвращает приращения текста, а итоговое событие расшифровки содержит полную формулировку.\n\nПодготовьте файл RIFF/WAVE с монофоническим 16-битным целочисленным PCM-аудио с частотой 16 или 24 кГц. Собственная частота модели — 24 кГц, интерфейс также принимает 16 кГц. Перед отправкой преобразуйте другие контейнеры или кодировки в поддерживаемый формат WAV. Сценарий расшифровки файла допускает аудио до 10 минут и общий размер тела запроса до 32 МБ. Сохраняйте связь исходной записи и её преобразований с полученной расшифровкой для последующей проверки прослушиванием.\n\nДля живого аудио используется поток монофонического PCM без контейнера, с 16-битными знаковыми отсчётами в порядке little-endian, частотой 16 или 24 кГц и подачей примерно в реальном времени. Документированное окно сеанса — 60 минут. Meta описывает поддержку моделью аудиоввода длительностью более часа; документированные ограничения файла и живого сеанса при этом остаются отдельными границами интерфейсов. Выбирайте файловый или живой сценарий в зависимости от того, завершена ли запись или ещё ведётся, и связывайте результаты разных сеансов с соответствующими входными сегментами.\n\nMuse Voice Transcribe обучена более чем на 70 языках, при этом документированный интерфейс распознавания перечисляет 25 поддерживаемых языков. Среди них английский, французский, немецкий, испанский, арабский, китайский путунхуа, хинди, японский, корейский, итальянский и португальский. Модель распознаёт переключение языков внутри предложений и между ними. Языковая подсказка может перечислить ожидаемые в аудио языки, но она направляет распознавание, а не заставляет выдавать всю расшифровку на одном языке.\n\nСловарные подсказки помогают с терминами продукта, аббревиатурами, именами или названиями мест, важными для записи. Передайте реальные слова и варианты написания, которые ожидаете услышать. Список ключевых слов влияет на распознавание, но не гарантирует точного написания, поэтому сверяйте значимые термины с аудио. Языковые подсказки и ключевые слова выбираются в начале расшифровки; задавайте их под конкретную запись, не меняя их смысл во время сеанса.\n\nМодель поддерживает диаризацию разговоров с более чем 20 говорящими. Метки вроде A и B обозначают говорящих в пределах одной расшифровки. Это не проверенные имена; метка также не подтверждает, что в другом сеансе обозначен тот же человек. Для задачи анализа исходной встречи запросите реплики с метками говорящих, сохраните запись и используйте метки для организации обсуждения, прежде чем сопоставлять реальные имена участников средствами окружающего рабочего процесса.\n\nПромежуточные расшифровки живой речи могут меняться по мере поступления аудио. В накопительном режиме каждый промежуточный результат заменяет предыдущую гипотезу, а не добавляет ещё одну её копию. Обнаруженный конец речи отмечает границу, а результат завершённой реплики даёт окончательный текст, который может отличаться от последнего промежуточного. Сохраняйте связь перекрывающихся реплик с их идентификаторами и обработайте завершённые результаты, прежде чем считать расшифровку законченной. Когда живой ввод заканчивается, передайте сигнал окончания ввода и продолжайте принимать данные, пока источник потока не завершит выдачу ожидающих результатов. Немедленное закрытие соединения может привести к их потере; обнаруженная речевая граница завершает реплику, а не весь сеанс.\n\nВременные отметки задаются на уровне реплик. Этот вариант не выдаёт отметок отдельных слов или оценок уверенности; ход обработки аудио не является временной отметкой конкретного слова. Обнаружение звуковых событий, определение эмоций и переформатирование расшифровки также не входят в документированный состав вывода. Используйте возвращённые интервалы реплик для временной шкалы говорящих или проверки сегментов и сохраняйте распознанные слова, если отдельный этап редактирования позже создаёт более аккуратные заметки.\n\nПолезные результаты — завершённая диктовка, расшифровка голосового запроса, разговор с разделением по говорящим или временная шкала высказываний. Сверяйте имена, числа и технические термины с исходной записью, сохраняйте связи с режимом и временными отметками и оставляйте полные реплики доступными для проверки. Расшифровка устанавливает, что распознано в аудио; ответ на произнесённый вопрос, его перевод или преобразование в протокол встречи относятся к последующему этапу приложения.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "443d9a7db2de835bb344c4727fc95aed70a72bb0d17c4e34bc03661a996baa14",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ru",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">M</span><h2 id=\"sheet-title\">Meta: Muse Voice Transcribe 1.0</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Закрыть\">×</button></div><div class=\"idline\"><span>Meta /</span><code>meta/muse-voice-transcribe-1.0</code><button type=\"button\" id=\"copy-id\">Скопировать ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Разделы карточки модели\"><button type=\"button\" data-card-jump=\"overview\">Начало</button><button type=\"button\" data-card-jump=\"methods\">Входные данные и методы</button><button type=\"button\" data-card-jump=\"pricing\">Тарифы</button><button type=\"button\" data-card-jump=\"examples\">Примеры</button><button type=\"button\" data-card-jump=\"results\">Результаты</button><button type=\"button\" data-card-jump=\"aliases\">Псевдонимы</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Методы API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|transcriptions|/v1/audio/transcriptions|meta%2Fmuse-voice-transcribe-1.0\">Распознавание</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Начало</h3><p class=\"mdesc-full\">Muse Voice Transcribe 1.0 — модель Meta для преобразования речи в текст: диктовки, определения речевых реплик и расшифровок с разделением по говорящим. Она поддерживает подсказки о языке и словаре, переключение языков и временные отметки на уровне реплик. Для готовой записи и живого аудио предусмотрены отдельные сценарии.</p><dl class=\"card-io\" data-card-io><div><dt>Допустимые входные данные</dt><dd>Аудио</dd></div><div><dt>Результаты</dt><dd>Текст</dd></div></dl><details class=\"card-about\"><summary>О модели</summary><p class=\"note-s\" data-model-method-boundary>Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.</p><div class=\"mabout\" id=\"m-about\"><p>Muse Voice Transcribe 1.0 — модель восприятия аудио от Meta для расшифровки речи, определения границ высказываний и отнесения реплик к говорящим. Она входит в семейство Muse Spark и объединяет распознавание, диаризацию и определение конца реплики внутри модели. Результат — распознанный текст с временными отметками и сведениями о говорящих, доступными в выбранном режиме.</p><p>Модель обрабатывает аудио фрагментами по 80 миллисекунд и решает, продолжать ли слушать или выдать текст. Адаптивная задержка позволяет дождаться дополнительного аудио, если слово трудно определить. По мере поступления речи формируется промежуточный текст, затем — завершённые результаты расшифровки. Рассматривайте промежуточную гипотезу и завершённую реплику как разные этапы прослушивания.</p><p>Выберите один из трёх режимов. Push-to-talk используется по умолчанию для одного управляемого высказывания, например голосового запроса или короткой диктовки. В режиме endpointing модель определяет границы речевых реплик и возвращает одну завершённую расшифровку для каждого обнаруженного сегмента. Диаризация относит распознанную речь к меткам говорящих и предназначена для записей с несколькими участниками, а не для самого быстрого обмена голосовыми командами.</p><p>Для готовой записи сценарий расшифровки файла возвращает полный текст за один запрос. По умолчанию результат представляет собой JSON с расшифровкой и длительностью аудио; в режимах endpointing и диаризации он содержит массив turns. Каждая реплика может включать идентификатор, начало и конец в миллисекундах и распознанный текст. Метки говорящих присутствуют в режиме диаризации. Push-to-talk выдаёт полную расшифровку без обнаруженных реплик в этом массиве. Интерфейс производителя для готовых файлов также может возвращать обычный текст или поток событий расшифровки. В обычном тексте обнаруженные реплики располагаются на отдельных строках и могут содержать метки говорящих; поток событий завершается после последнего события без отдельного итогового JSON. Режим промежуточных результатов delta возвращает приращения текста, а итоговое событие расшифровки содержит полную формулировку.</p><p>Подготовьте файл RIFF/WAVE с монофоническим 16-битным целочисленным PCM-аудио с частотой 16 или 24 кГц. Собственная частота модели — 24 кГц, интерфейс также принимает 16 кГц. Перед отправкой преобразуйте другие контейнеры или кодировки в поддерживаемый формат WAV. Сценарий расшифровки файла допускает аудио до 10 минут и общий размер тела запроса до 32 МБ. Сохраняйте связь исходной записи и её преобразований с полученной расшифровкой для последующей проверки прослушиванием.</p><p>Для живого аудио используется поток монофонического PCM без контейнера, с 16-битными знаковыми отсчётами в порядке little-endian, частотой 16 или 24 кГц и подачей примерно в реальном времени. Документированное окно сеанса — 60 минут. Meta описывает поддержку моделью аудиоввода длительностью более часа; документированные ограничения файла и живого сеанса при этом остаются отдельными границами интерфейсов. Выбирайте файловый или живой сценарий в зависимости от того, завершена ли запись или ещё ведётся, и связывайте результаты разных сеансов с соответствующими входными сегментами.</p><p>Muse Voice Transcribe обучена более чем на 70 языках, при этом документированный интерфейс распознавания перечисляет 25 поддерживаемых языков. Среди них английский, французский, немецкий, испанский, арабский, китайский путунхуа, хинди, японский, корейский, итальянский и португальский. Модель распознаёт переключение языков внутри предложений и между ними. Языковая подсказка может перечислить ожидаемые в аудио языки, но она направляет распознавание, а не заставляет выдавать всю расшифровку на одном языке.</p><p>Словарные подсказки помогают с терминами продукта, аббревиатурами, именами или названиями мест, важными для записи. Передайте реальные слова и варианты написания, которые ожидаете услышать. Список ключевых слов влияет на распознавание, но не гарантирует точного написания, поэтому сверяйте значимые термины с аудио. Языковые подсказки и ключевые слова выбираются в начале расшифровки; задавайте их под конкретную запись, не меняя их смысл во время сеанса.</p><p>Модель поддерживает диаризацию разговоров с более чем 20 говорящими. Метки вроде A и B обозначают говорящих в пределах одной расшифровки. Это не проверенные имена; метка также не подтверждает, что в другом сеансе обозначен тот же человек. Для задачи анализа исходной встречи запросите реплики с метками говорящих, сохраните запись и используйте метки для организации обсуждения, прежде чем сопоставлять реальные имена участников средствами окружающего рабочего процесса.</p><p>Промежуточные расшифровки живой речи могут меняться по мере поступления аудио. В накопительном режиме каждый промежуточный результат заменяет предыдущую гипотезу, а не добавляет ещё одну её копию. Обнаруженный конец речи отмечает границу, а результат завершённой реплики даёт окончательный текст, который может отличаться от последнего промежуточного. Сохраняйте связь перекрывающихся реплик с их идентификаторами и обработайте завершённые результаты, прежде чем считать расшифровку законченной. Когда живой ввод заканчивается, передайте сигнал окончания ввода и продолжайте принимать данные, пока источник потока не завершит выдачу ожидающих результатов. Немедленное закрытие соединения может привести к их потере; обнаруженная речевая граница завершает реплику, а не весь сеанс.</p><p>Временные отметки задаются на уровне реплик. Этот вариант не выдаёт отметок отдельных слов или оценок уверенности; ход обработки аудио не является временной отметкой конкретного слова. Обнаружение звуковых событий, определение эмоций и переформатирование расшифровки также не входят в документированный состав вывода. Используйте возвращённые интервалы реплик для временной шкалы говорящих или проверки сегментов и сохраняйте распознанные слова, если отдельный этап редактирования позже создаёт более аккуратные заметки.</p><p>Полезные результаты — завершённая диктовка, расшифровка голосового запроса, разговор с разделением по говорящим или временная шкала высказываний. Сверяйте имена, числа и технические термины с исходной записью, сохраняйте связи с режимом и временными отметками и оставляйте полные реплики доступными для проверки. Расшифровка устанавливает, что распознано в аудио; ответ на произнесённый вопрос, его перевод или преобразование в протокол встречи относятся к последующему этапу приложения.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Доступно в Ailoot · входные данные и методы</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Распознавание речи</b> <code>POST /v1/audio/transcriptions</code></summary><dl class=\"method-capabilities\"><div><dt>Входные данные</dt><dd><code>audio</code></dd></div><div><dt>Результат</dt><dd><code>text</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Поле</th><th>Тип</th><th>Требование</th><th>Значения и ограничения</th><th>По умолчанию</th></tr></thead><tbody><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>meta/muse-voice-transcribe-1.0</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">input_audio</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>object</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Параметры и жизненный цикл метода</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Параметр</th><th>Контракт</th></tr></thead><tbody><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>content_type</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>application/json</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>required</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>model, input_audio</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>material_types</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>audio</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>material_conditions</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>Пример читает ваш реальный непустой файл PCM WAV, кодирует все байты файла в base64 и передаёт wav в input_audio.format.</td></tr></tbody></table></div><p>Жизненный цикл: <code>synchronous_result_then_owned_library</code></p><p class=\"note-s\"><code>GET /v1/media/tasks/{task_id}</code> · точный task_id из существующей записи медиаресурса, принадлежащего Ailoot</p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}/content</code></p><p class=\"note-s\"><code>GET /v1/media/assets</code></p><p class=\"note-s\"><code>GET /v1/media/assets/{asset_id}</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Тарифы</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.</p><dl data-price-conditions><dt>Быстрый режим</dt><dd>Не указано <span class=\"note-s\">При выборе быстрого режима</span></dd><dt>Режим flex</dt><dd>Не указано <span class=\"note-s\">При выборе режима flex</span></dd><dt>Максимальная интенсивность рассуждений</dt><dd>Не указано <span class=\"note-s\">При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ставки Ailoot</h4><h4>Цены по конфигурациям</h4><p class=\"note-s\">Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Конфигурация</th><th>Шкала ставок</th><th>Расчётная единица</th><th>Плата</th></tr></thead><tbody><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Базовые тарифы на токены</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>Базовая ставка</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>—</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Вход · Входные токены</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Выход · Выходные токены</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Чтение кэша</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш, 1 час</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>секунда входного аудио</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>за секунду входного аудио</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Вход · секунда входного аудио</span> <b>$0.0001</b> <span class=\"price-unit\">за секунду входного аудио</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. <a href=\"/docs/ru/billing/reserve/\">Как работают резервирование и расчёт →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Примеры запросов</h3><h4>Ailoot Ultra · Распознавание речи</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Варианты кода\"><button class=\"cg-tab\" id=\"model-code-1834-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1834-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · реальный файл WAV и полный исходный результат</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Скопировать код\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1834-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1834-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}&quot;\nexport AILOOT_AUDIO_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ[&#39;AILOOT_AUDIO_FILE&#39;]).read_bytes()\nif not (audio[:4] == b&#39;RIFF&#39; and audio[8:12] == b&#39;WAVE&#39;):\n    raise SystemExit(&#39;Supply your actual PCM WAV audio file&#39;)\nwith wave.open(io.BytesIO(audio), &#39;rb&#39;) as recording:\n    if recording.getcomptype() != &#39;NONE&#39; or recording.getnframes() &lt;= 0:\n        raise SystemExit(&#39;Supply a nonempty PCM WAV recording&#39;)\nrequest = {&#39;model&#39;: &#39;meta/muse-voice-transcribe-1.0&#39;, &#39;input_audio&#39;: {&#39;data&#39;: base64.b64encode(audio).decode(&#39;ascii&#39;), &#39;format&#39;: &#39;wav&#39;}}\nPath(&#39;request.json&#39;).write_text(json.dumps(request, ensure_ascii=False), encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Получить и сохранить результаты</h3><h4>Ailoot Ultra · Распознавание речи</h4><p class=\"note-s\">Полное исходное тело ответа, статус и переданные заголовки. Этот обработчик не добавляет универсальную структуру JSON, текстовое поле или оболочку задачи.</p><ul class=\"card-result-paths\"><li><code>GET /v1/media/tasks/{task_id}</code></li><li><code>GET /v1/media/assets/{asset_id}/content</code></li><li><code>GET /v1/media/assets</code></li><li><code>GET /v1/media/assets/{asset_id}</code></li></ul><div class=\"card-result-process\" data-all-results><h5>Сохраняйте все готовые результаты</h5><p class=\"note-s\">Сохраняйте каждый полностью полученный ответ, файл и элемент содержимого.</p><p class=\"note-s\">Сохраняйте полный ответ и заголовки, все фактические результаты, исходные возвращённые идентификаторы и все поля использования. Восстанавливайте исходную операцию без повторной отправки запроса создания.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Если нужно проверить исходный ответ</h5><p class=\"note-s\">Сохраните фактический X-Client-Request-ID и полный ответ. Читайте исходные ресурсы, принадлежащие Ailoot, по их точным подписанным URL содержимого; никогда не повторяйте создание с неопределённым исходом.</p></div><details class=\"card-about\" data-output-fields><summary>Поля ответа</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Поле</th><th>Тип</th></tr></thead><tbody><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">text (when present)</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span></td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">usage (when present)</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span></td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Ошибки и дальнейшие шаги</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Ответ</th><th>Условие</th><th>Следующий шаг</th></tr></thead><tbody><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Тело JSON или явно указанный канонический ID модели недопустимы.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните ответ и исправьте указанное поле запроса.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>401 · <code>authentication_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Недействительный ключ Ailoot API.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Используйте ваш авторизованный ключ Ailoot API.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>403 · <code>permission_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Группа ключа не допускает этот метод.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните возвращённые подробности ошибки.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>404 · <code>not_found_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>У выбранного метода нет допущенного маршрута.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните возвращённые подробности ошибки.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>422 · <code>price_unavailable</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Для принятого тарифа невозможно определить требуемое количество входных данных или его границу.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните ответ; используйте представление входных данных, требуемое принятым тарифом.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>503 · <code></code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Требуемое хранилище, маршрут, цена метода или резервирование недоступны.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните полный исходный ответ. Неопределённость резервирования не разрешает повторную отправку.</td></tr><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>502 · <code>server_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Исходный результат, использование или окончательный расчёт требуют проверки.</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Сохраните фактический ID запроса и исходный ответ. Читайте существующую запись ресурса, принадлежащего Ailoot; не повторяйте создание.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Псевдонимы</h3><h4>Псевдонимы моделей</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=meta%2Fmuse-voice-transcribe-1.0&amp;route=Ultra&amp;caller=meta%2Fmuse-voice-transcribe-1.0&amp;fmt=transcriptions\"><code>meta/muse-voice-transcribe-1.0</code></a></span></p><h4>Псевдонимы путей метода</h4><p class=\"note-s\">Используйте пути методов, указанные выше.</p><h4>Связанные ID для вызова</h4><p class=\"note-s\"><a href=\"#m=meta%2Fmuse-voice-transcribe-1.0&amp;route=Ultra&amp;caller=meta%2Fmuse-voice-transcribe-1.0&amp;fmt=transcriptions\"><code>meta/muse-voice-transcribe-1.0</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "meta/muse-voice-transcribe-1.0",
        "fmt": "transcriptions",
        "http": "POST",
        "path": "/v1/audio/transcriptions",
        "request_model_id": "meta/muse-voice-transcribe-1.0",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|transcriptions|/v1/audio/transcriptions|meta%2Fmuse-voice-transcribe-1.0",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "Тело JSON или явно указанный канонический ID модели недопустимы.",
                "http_status": 400,
                "recovery": "Сохраните ответ и исправьте указанное поле запроса.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Недействительный ключ Ailoot API.",
                "http_status": 401,
                "recovery": "Используйте ваш авторизованный ключ Ailoot API.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Группа ключа не допускает этот метод.",
                "http_status": 403,
                "recovery": "Сохраните возвращённые подробности ошибки.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "У выбранного метода нет допущенного маршрута.",
                "http_status": 404,
                "recovery": "Сохраните возвращённые подробности ошибки.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Для принятого тарифа невозможно определить требуемое количество входных данных или его границу.",
                "http_status": 422,
                "recovery": "Сохраните ответ; используйте представление входных данных, требуемое принятым тарифом.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Требуемое хранилище, маршрут, цена метода или резервирование недоступны.",
                "http_status": 503,
                "recovery": "Сохраните полный исходный ответ. Неопределённость резервирования не разрешает повторную отправку.",
                "type": null
              },
              {
                "code": null,
                "condition": "Исходный результат, использование или окончательный расчёт требуют проверки.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Сохраните фактический ID запроса и исходный ответ. Читайте существующую запись ресурса, принадлежащего Ailoot; не повторяйте создание.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Сохраните фактический X-Client-Request-ID и полный ответ. Читайте исходные ресурсы, принадлежащие Ailoot, по их точным подписанным URL содержимого; никогда не повторяйте создание с неопределённым исходом."
            },
            "outputs": {
              "all_results": "Сохраняйте полный ответ и заголовки, все фактические результаты, исходные возвращённые идентификаторы и все поля использования. Восстанавливайте исходную операцию без повторной отправки запроса создания.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Полное исходное тело ответа, статус и переданные заголовки. Этот обработчик не добавляет универсальную структуру JSON, текстовое поле или оболочку задачи."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "meta/muse-voice-transcribe-1.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "meta/muse-voice-transcribe-1.0"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "meta/muse-voice-transcribe-1.0"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Пример читает ваш реальный непустой файл PCM WAV, кодирует все байты файла в base64 и передаёт wav в input_audio.format."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "точный task_id из существующей записи медиаресурса, принадлежащего Ailoot",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0001",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0001",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'meta/muse-voice-transcribe-1.0', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.0001
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0001",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0001",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "meta/muse-voice-transcribe-1.0",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0001",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0001",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    }
  ],
  "model_id": "meta/muse-voice-transcribe-1.0",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "05481973e42a3725940f6bba85f1091aa01147e401ea673f003883f44d599174",
    "input_html_sha256": "b941097bcf2e5d7b09449b831d44274367c8bad71ca6dbe97736acccb628a09e",
    "private_audit_sha256": "fd91ce7d5f1e8905e50869bc4c9589c405bddf5ae79b5f2c1b674f1a3bfa25b7",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ru/meta-muse-voice-transcribe-1-0/",
    "description": "Muse Voice Transcribe 1.0 — модель Meta для преобразования речи в текст: диктовки, определения речевых реплик и расшифровок с разделением по говорящим. Она поддерживает подсказки о языке и словаре, переключение языков и временные отметки на уровне реплик. Для готовой записи и живого аудио предусмотрены отдельные сценарии.",
    "locale": "ru",
    "md_url": "https://ailoot.ai/models/ru/meta-muse-voice-transcribe-1-0/index.md",
    "title": "Meta: Muse Voice Transcribe 1.0 — Ailoot",
    "url": "https://ailoot.ai/models/ru/meta-muse-voice-transcribe-1-0/"
  },
  "rawModel": {
    "about": "Muse Voice Transcribe 1.0 — модель восприятия аудио от Meta для расшифровки речи, определения границ высказываний и отнесения реплик к говорящим. Она входит в семейство Muse Spark и объединяет распознавание, диаризацию и определение конца реплики внутри модели. Результат — распознанный текст с временными отметками и сведениями о говорящих, доступными в выбранном режиме.\n\nМодель обрабатывает аудио фрагментами по 80 миллисекунд и решает, продолжать ли слушать или выдать текст. Адаптивная задержка позволяет дождаться дополнительного аудио, если слово трудно определить. По мере поступления речи формируется промежуточный текст, затем — завершённые результаты расшифровки. Рассматривайте промежуточную гипотезу и завершённую реплику как разные этапы прослушивания.\n\nВыберите один из трёх режимов. Push-to-talk используется по умолчанию для одного управляемого высказывания, например голосового запроса или короткой диктовки. В режиме endpointing модель определяет границы речевых реплик и возвращает одну завершённую расшифровку для каждого обнаруженного сегмента. Диаризация относит распознанную речь к меткам говорящих и предназначена для записей с несколькими участниками, а не для самого быстрого обмена голосовыми командами.\n\nДля готовой записи сценарий расшифровки файла возвращает полный текст за один запрос. По умолчанию результат представляет собой JSON с расшифровкой и длительностью аудио; в режимах endpointing и диаризации он содержит массив turns. Каждая реплика может включать идентификатор, начало и конец в миллисекундах и распознанный текст. Метки говорящих присутствуют в режиме диаризации. Push-to-talk выдаёт полную расшифровку без обнаруженных реплик в этом массиве. Интерфейс производителя для готовых файлов также может возвращать обычный текст или поток событий расшифровки. В обычном тексте обнаруженные реплики располагаются на отдельных строках и могут содержать метки говорящих; поток событий завершается после последнего события без отдельного итогового JSON. Режим промежуточных результатов delta возвращает приращения текста, а итоговое событие расшифровки содержит полную формулировку.\n\nПодготовьте файл RIFF/WAVE с монофоническим 16-битным целочисленным PCM-аудио с частотой 16 или 24 кГц. Собственная частота модели — 24 кГц, интерфейс также принимает 16 кГц. Перед отправкой преобразуйте другие контейнеры или кодировки в поддерживаемый формат WAV. Сценарий расшифровки файла допускает аудио до 10 минут и общий размер тела запроса до 32 МБ. Сохраняйте связь исходной записи и её преобразований с полученной расшифровкой для последующей проверки прослушиванием.\n\nДля живого аудио используется поток монофонического PCM без контейнера, с 16-битными знаковыми отсчётами в порядке little-endian, частотой 16 или 24 кГц и подачей примерно в реальном времени. Документированное окно сеанса — 60 минут. Meta описывает поддержку моделью аудиоввода длительностью более часа; документированные ограничения файла и живого сеанса при этом остаются отдельными границами интерфейсов. Выбирайте файловый или живой сценарий в зависимости от того, завершена ли запись или ещё ведётся, и связывайте результаты разных сеансов с соответствующими входными сегментами.\n\nMuse Voice Transcribe обучена более чем на 70 языках, при этом документированный интерфейс распознавания перечисляет 25 поддерживаемых языков. Среди них английский, французский, немецкий, испанский, арабский, китайский путунхуа, хинди, японский, корейский, итальянский и португальский. Модель распознаёт переключение языков внутри предложений и между ними. Языковая подсказка может перечислить ожидаемые в аудио языки, но она направляет распознавание, а не заставляет выдавать всю расшифровку на одном языке.\n\nСловарные подсказки помогают с терминами продукта, аббревиатурами, именами или названиями мест, важными для записи. Передайте реальные слова и варианты написания, которые ожидаете услышать. Список ключевых слов влияет на распознавание, но не гарантирует точного написания, поэтому сверяйте значимые термины с аудио. Языковые подсказки и ключевые слова выбираются в начале расшифровки; задавайте их под конкретную запись, не меняя их смысл во время сеанса.\n\nМодель поддерживает диаризацию разговоров с более чем 20 говорящими. Метки вроде A и B обозначают говорящих в пределах одной расшифровки. Это не проверенные имена; метка также не подтверждает, что в другом сеансе обозначен тот же человек. Для задачи анализа исходной встречи запросите реплики с метками говорящих, сохраните запись и используйте метки для организации обсуждения, прежде чем сопоставлять реальные имена участников средствами окружающего рабочего процесса.\n\nПромежуточные расшифровки живой речи могут меняться по мере поступления аудио. В накопительном режиме каждый промежуточный результат заменяет предыдущую гипотезу, а не добавляет ещё одну её копию. Обнаруженный конец речи отмечает границу, а результат завершённой реплики даёт окончательный текст, который может отличаться от последнего промежуточного. Сохраняйте связь перекрывающихся реплик с их идентификаторами и обработайте завершённые результаты, прежде чем считать расшифровку законченной. Когда живой ввод заканчивается, передайте сигнал окончания ввода и продолжайте принимать данные, пока источник потока не завершит выдачу ожидающих результатов. Немедленное закрытие соединения может привести к их потере; обнаруженная речевая граница завершает реплику, а не весь сеанс.\n\nВременные отметки задаются на уровне реплик. Этот вариант не выдаёт отметок отдельных слов или оценок уверенности; ход обработки аудио не является временной отметкой конкретного слова. Обнаружение звуковых событий, определение эмоций и переформатирование расшифровки также не входят в документированный состав вывода. Используйте возвращённые интервалы реплик для временной шкалы говорящих или проверки сегментов и сохраняйте распознанные слова, если отдельный этап редактирования позже создаёт более аккуратные заметки.\n\nПолезные результаты — завершённая диктовка, расшифровка голосового запроса, разговор с разделением по говорящим или временная шкала высказываний. Сверяйте имена, числа и технические термины с исходной записью, сохраняйте связи с режимом и временными отметками и оставляйте полные реплики доступными для проверки. Расшифровка устанавливает, что распознано в аудио; ответ на произнесённый вопрос, его перевод или преобразование в протокол встречи относятся к последующему этапу приложения.",
    "alias_of": null,
    "aliases": [],
    "author": "Meta",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "audio"
      ],
      "manufacturer_output": [
        "transcription"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0001",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0001",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ],
        "summary": "Полная информация о ценах конфигурации — в подробностях."
      }
    ],
    "ctx": null,
    "formats": [
      "transcriptions"
    ],
    "id": "meta/muse-voice-transcribe-1.0",
    "input": [
      "audio"
    ],
    "kind": "audio",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "errors": [
              {
                "code": null,
                "condition": "Тело JSON или явно указанный канонический ID модели недопустимы.",
                "http_status": 400,
                "recovery": "Сохраните ответ и исправьте указанное поле запроса.",
                "type": "invalid_request_error"
              },
              {
                "code": null,
                "condition": "Недействительный ключ Ailoot API.",
                "http_status": 401,
                "recovery": "Используйте ваш авторизованный ключ Ailoot API.",
                "type": "authentication_error"
              },
              {
                "code": null,
                "condition": "Группа ключа не допускает этот метод.",
                "http_status": 403,
                "recovery": "Сохраните возвращённые подробности ошибки.",
                "type": "permission_error"
              },
              {
                "code": null,
                "condition": "У выбранного метода нет допущенного маршрута.",
                "http_status": 404,
                "recovery": "Сохраните возвращённые подробности ошибки.",
                "type": "not_found_error"
              },
              {
                "code": null,
                "condition": "Для принятого тарифа невозможно определить требуемое количество входных данных или его границу.",
                "http_status": 422,
                "recovery": "Сохраните ответ; используйте представление входных данных, требуемое принятым тарифом.",
                "type": "price_unavailable"
              },
              {
                "code": null,
                "condition": "Требуемое хранилище, маршрут, цена метода или резервирование недоступны.",
                "http_status": 503,
                "recovery": "Сохраните полный исходный ответ. Неопределённость резервирования не разрешает повторную отправку.",
                "type": null
              },
              {
                "code": null,
                "condition": "Исходный результат, использование или окончательный расчёт требуют проверки.",
                "http_status": 502,
                "operation_id_source": "actual X-Client-Request-ID",
                "recovery": "Сохраните фактический ID запроса и исходный ответ. Читайте существующую запись ресурса, принадлежащего Ailoot; не повторяйте создание.",
                "response_headers": {
                  "x-should-retry": "false"
                },
                "type": "server_error"
              }
            ],
            "lifecycle": {
              "assets": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets"
                },
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}"
                }
              ],
              "content": [
                {
                  "http": "GET",
                  "path": "/v1/media/assets/{asset_id}/content",
                  "url_source": "exact returned signed content URL"
                }
              ],
              "dedicated_method_polling_or_cancel": false,
              "mode": "synchronous_result_then_owned_library",
              "original_POST_adds_task_envelope": false,
              "status": [
                {
                  "http": "GET",
                  "id_source": "exact task_id from an existing owned media record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Сохраните фактический X-Client-Request-ID и полный ответ. Читайте исходные ресурсы, принадлежащие Ailoot, по их точным подписанным URL содержимого; никогда не повторяйте создание с неопределённым исходом."
            },
            "outputs": {
              "all_results": "Сохраняйте полный ответ и заголовки, все фактические результаты, исходные возвращённые идентификаторы и все поля использования. Восстанавливайте исходную операцию без повторной отправки запроса создания.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "text (when present)",
                  "type": null
                },
                {
                  "description": null,
                  "name": "usage (when present)",
                  "type": null
                }
              ],
              "result": "Полное исходное тело ответа, статус и переданные заголовки. Этот обработчик не добавляет универсальную структуру JSON, текстовое поле или оболочку задачи."
            },
            "parameters": [
              {
                "default_known": false,
                "enum": [
                  "meta/muse-voice-transcribe-1.0"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "default_known": false,
                "enum_known": false,
                "name": "input_audio",
                "required": true,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input_audio": {
                  "properties": {
                    "data": {
                      "contentEncoding": "base64",
                      "type": "string"
                    },
                    "format": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "data",
                    "format"
                  ],
                  "type": "object"
                },
                "model": {
                  "enum": [
                    "meta/muse-voice-transcribe-1.0"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input_audio"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": true,
              "body": {
                "input_audio": {
                  "data": "${BASE64_ACTUAL_WAV_BYTES}",
                  "format": "wav"
                },
                "model": "meta/muse-voice-transcribe-1.0"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Пример читает ваш реальный непустой файл PCM WAV, кодирует все байты файла в base64 и передаёт wav в input_audio.format."
            ],
            "material_types": [
              "audio"
            ],
            "required": [
              "model",
              "input_audio"
            ]
          },
          "lifecycle": {
            "assets": [
              {
                "http": "GET",
                "path": "/v1/media/assets"
              },
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}"
              }
            ],
            "content": [
              {
                "http": "GET",
                "path": "/v1/media/assets/{asset_id}/content",
                "url_source": "exact returned signed content URL"
              }
            ],
            "dedicated_method_polling_or_cancel": false,
            "mode": "synchronous_result_then_owned_library",
            "original_POST_adds_task_envelope": false,
            "status": [
              {
                "http": "GET",
                "id_source": "точный task_id из существующей записи медиаресурса, принадлежащего Ailoot",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Retain the actual X-Client-Request-ID and complete response. Read the original owned assets and their exact signed content URLs; never resubmit an uncertain creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/transcriptions"
          },
          "output": {
            "all_results": "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.",
            "family": "text",
            "fields": [
              {
                "description": null,
                "name": "text (when present)",
                "type": null
              },
              {
                "description": null,
                "name": "usage (when present)",
                "type": null
              }
            ],
            "result": "Complete original response body, status and forwarded headers. No universal JSON shape, text field or task envelope is added by this handler."
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0001",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0001",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_AUDIO_FILE:?Set the path to your actual PCM WAV recording}\"\nexport AILOOT_AUDIO_FILE\npython3 - <<'PY_REQUEST'\nimport base64, io, json, os, wave\nfrom pathlib import Path\naudio = Path(os.environ['AILOOT_AUDIO_FILE']).read_bytes()\nif not (audio[:4] == b'RIFF' and audio[8:12] == b'WAVE'):\n    raise SystemExit('Supply your actual PCM WAV audio file')\nwith wave.open(io.BytesIO(audio), 'rb') as recording:\n    if recording.getcomptype() != 'NONE' or recording.getnframes() <= 0:\n        raise SystemExit('Supply a nonempty PCM WAV recording')\nrequest = {'model': 'meta/muse-voice-transcribe-1.0', 'input_audio': {'data': base64.b64encode(audio).decode('ascii'), 'format': 'wav'}}\nPath('request.json').write_text(json.dumps(request, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/transcriptions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o response.bin\n# Retain the complete original response, headers and actual X-Client-Request-ID.\n# Read existing owned records for recovery; do not resubmit an uncertain operation.\n",
            "label": "curl · actual WAV file and complete original result",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "transcriptions",
        "hints": [
          "The example reads your actual nonempty PCM WAV file, encodes the complete file bytes as base64 and sends input_audio.format as wav.",
          "The format value in the example is the documented recipe; no model-specific format list, limit or default is asserted.",
          "Retain the complete response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again."
        ],
        "http": "POST",
        "in": null,
        "input": [
          "audio"
        ],
        "label": "Распознавание речи",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_transcriptions",
        "out": null,
        "output": [
          "text"
        ],
        "path": "/v1/audio/transcriptions",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "per_request",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null,
          "unit_prices": {
            "audio_input_second": 0.0001
          }
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "quoted_unit": "per input audio second"
            },
            "label": "input audio second",
            "units": [
              {
                "amount": "0.0001",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_second",
                "label": "input audio second",
                "native_amount_usd_per_unit": "0.0001",
                "native_quantity": 1,
                "public_unit_label": "per input audio second",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_second"
              }
            ]
          }
        ],
        "request_model_id": "meta/muse-voice-transcribe-1.0",
        "route_label": "Ultra",
        "status_reads": [
          "GET /v1/media/tasks/{task_id}"
        ],
        "tiers": [],
        "units": [
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          },
          {
            "amount": "0.0001",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_second",
            "label": "input audio second",
            "native_amount_usd_per_unit": "0.0001",
            "native_quantity": 1,
            "public_unit_label": "per input audio second",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_second"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "meta/muse-voice-transcribe-1.0",
        "request_model_id": "meta/muse-voice-transcribe-1.0",
        "route_label": "Ultra"
      }
    ],
    "name": "Meta: Muse Voice Transcribe 1.0",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Muse Voice Transcribe 1.0 — модель Meta для преобразования речи в текст: диктовки, определения речевых реплик и расшифровок с разделением по говорящим. Она поддерживает подсказки о языке и словаре, переключение языков и временные отметки на уровне реплик. Для готовой записи и живого аудио предусмотрены отдельные сценарии."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Muse Voice Transcribe 1.0 — модель Meta для преобразования речи в текст: диктовки, определения речевых реплик и расшифровок с разделением по говорящим. Она поддерживает подсказки о языке и словаре, переключение языков и временные отметки на уровне реплик. Для готовой записи и живого аудио предусмотрены отдельные сценарии.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "727810638aeb71c3511dd3f2ea84d04aa8473ba61dd976c80192f8b1174f1a44",
    "renderer_sha256": "aa692ffec412026bdeaf316df24a58e6c5083045e5246f6033f898d132afa5ff"
  },
  "sourceRevision": "5c516dee13fcd9953daef986260c19e00c679defa4908e1d4b05f5fcdcf94402"
}
