{
  "aboutHtml": "<p>Drama 3 — модель Fish Audio для озвучивания сценария с выразительным исполнением. Она создаёт речевое аудио из переданных слов и даёт автору сценария управление подачей. Строка может содержать указание на эмоцию, локальное изменение исполнения или инструкцию по произношению, поэтому ввод включает и произносимое содержимое, и то, как оно должно звучать.</p><h4>Напишите слова и направляйте исполнение</h4><p>Перед добавлением указаний по подаче подготовьте точные слова, которые должен услышать слушатель. Ясно записывайте важные имена, даты и инструкции в сценарии и задавайте нужный ритм предложений пунктуацией. Затем поместите указание обычными словами в квадратных скобках перед строкой, к которой оно относится. Опишите желаемую эмоцию или подачу конкретно: например, сдержанное объявление, напряжённый обмен репликами или тёплое объяснение.</p><p>Drama 3 также поддерживает локальное управление внутри строки. Встроенные инструкции могут вводить звуки и паузы, а парные теги подачи — воздействовать на отдельные слова. Чётко задавайте область каждой инструкции: указание для одной фразы не должно случайно стать указанием для всей сцены. Перед синтезом прочитайте сценарий один раз ради смысла и один раз ради исполнения.</p><h4>Сцены, языки и произношение</h4><p>Опубликованная модель поддерживает нескольких говорящих в одном запросе. Организуйте диалог в ясные реплики и задайте каждой цель: вопрос, перебивание, объяснение или ответ. В уроке или объясняющем ролике тот же подход может отделить рассказчика от цитируемого персонажа без превращения материала в один неразличимый монолог.</p><p>Drama 3 поддерживает более 80 языков и может менять язык внутри предложения, сохраняя голос. Подготовьте многоязычные фрагменты на тех языках, на которых они должны звучать, не предполагая, что английская инструкция обеспечивает перевод. Определите, как должны звучать иностранные имена и заимствованные термины, и используйте управление фонемами модели, когда произношение требует точного указания.</p><h4>Полезные аудиоматериалы</h4><p>Модель подходит для диалогов персонажей, озвученных уроков, коротких объяснений, объявлений о продуктах и голосовых ответов по сценарию. Сохраняйте содержание и решения об исполнении вместе: учебному фрагменту нужны понятные термины и осмысленные паузы; сцене с персонажами — чётко разделённые реплики и единый драматический замысел. Это авторские решения, которые можно проверить до генерации аудио.</p><p>После синтеза сравните произнесённые слова с готовым сценарием. На слух проверьте пропущенные фразы, неуместные паузы, неясные смены говорящих и произношение защищённых имён. Сохраняйте сценарий и указания по подаче вместе с аудио, чтобы исправление могло затронуть нужную строку. При подготовке правки храните итоговое произносимое содержимое и решения об исполнении каждой строки вместе.</p><h4>Возможности</h4><ul><li>Синтез речи по готовому сценарию с заданной подачей.</li><li>Указания обычными словами в квадратных скобках перед репликой.</li><li>Встроенные звуки и паузы, парные теги подачи для отдельных слов.</li><li>Сцены с несколькими говорящими и более 80 языков озвучивания.</li><li>Управление фонемами для имён и специальной терминологии.</li></ul><h4>Сценарии использования</h4><ul><li><strong>Диалог персонажей</strong> — Сценарий с чётко разделёнными репликами говорящих и указаниями по исполнению. Результат: Озвученная сцена с намеренными изменениями подачи.</li><li><strong>Озвученное объяснение</strong> — Готовый урок с отмеченными терминами и паузами. Результат: Речевое аудио, которое можно сверить с текстом урока.</li><li><strong>Многоязычное объявление</strong> — Итоговый текст на нужных языках с сохранёнными решениями о произношении. Результат: Озвученный фрагмент с управляемыми переходами между языками.</li><li><strong>Голосовой ответ по сценарию</strong> — Краткий ответ с явно заданным тоном и словами для произнесения. Результат: Речевой фрагмент для повторного использования окружающим приложением.</li></ul><h4>Ограничения</h4><ul><li><strong>Ввод и результат</strong> — Опубликованная модель принимает текст и возвращает речевое аудио.</li><li><strong>Область действия указаний</strong> — Привязывайте указание к нужной реплике или фразе и правильно ограничивайте область парных тегов подачи.</li><li><strong>Единица проверки</strong> — Сохраняйте точный сценарий и указания вместе с аудио; проверяйте произношение и смены говорящих на уровне реплик.</li></ul>",
  "aboutText": "Drama 3 — модель Fish Audio для озвучивания сценария с выразительным исполнением. Она создаёт речевое аудио из переданных слов и даёт автору сценария управление подачей. Строка может содержать указание на эмоцию, локальное изменение исполнения или инструкцию по произношению, поэтому ввод включает и произносимое содержимое, и то, как оно должно звучать.\n\n### Напишите слова и направляйте исполнение\n\nПеред добавлением указаний по подаче подготовьте точные слова, которые должен услышать слушатель. Ясно записывайте важные имена, даты и инструкции в сценарии и задавайте нужный ритм предложений пунктуацией. Затем поместите указание обычными словами в квадратных скобках перед строкой, к которой оно относится. Опишите желаемую эмоцию или подачу конкретно: например, сдержанное объявление, напряжённый обмен репликами или тёплое объяснение.\n\nDrama 3 также поддерживает локальное управление внутри строки. Встроенные инструкции могут вводить звуки и паузы, а парные теги подачи — воздействовать на отдельные слова. Чётко задавайте область каждой инструкции: указание для одной фразы не должно случайно стать указанием для всей сцены. Перед синтезом прочитайте сценарий один раз ради смысла и один раз ради исполнения.\n\n### Сцены, языки и произношение\n\nОпубликованная модель поддерживает нескольких говорящих в одном запросе. Организуйте диалог в ясные реплики и задайте каждой цель: вопрос, перебивание, объяснение или ответ. В уроке или объясняющем ролике тот же подход может отделить рассказчика от цитируемого персонажа без превращения материала в один неразличимый монолог.\n\nDrama 3 поддерживает более 80 языков и может менять язык внутри предложения, сохраняя голос. Подготовьте многоязычные фрагменты на тех языках, на которых они должны звучать, не предполагая, что английская инструкция обеспечивает перевод. Определите, как должны звучать иностранные имена и заимствованные термины, и используйте управление фонемами модели, когда произношение требует точного указания.\n\n### Полезные аудиоматериалы\n\nМодель подходит для диалогов персонажей, озвученных уроков, коротких объяснений, объявлений о продуктах и голосовых ответов по сценарию. Сохраняйте содержание и решения об исполнении вместе: учебному фрагменту нужны понятные термины и осмысленные паузы; сцене с персонажами — чётко разделённые реплики и единый драматический замысел. Это авторские решения, которые можно проверить до генерации аудио.\n\nПосле синтеза сравните произнесённые слова с готовым сценарием. На слух проверьте пропущенные фразы, неуместные паузы, неясные смены говорящих и произношение защищённых имён. Сохраняйте сценарий и указания по подаче вместе с аудио, чтобы исправление могло затронуть нужную строку. При подготовке правки храните итоговое произносимое содержимое и решения об исполнении каждой строки вместе.\n\n### Возможности\n\n- Синтез речи по готовому сценарию с заданной подачей.\n- Указания обычными словами в квадратных скобках перед репликой.\n- Встроенные звуки и паузы, парные теги подачи для отдельных слов.\n- Сцены с несколькими говорящими и более 80 языков озвучивания.\n- Управление фонемами для имён и специальной терминологии.\n\n### Сценарии использования\n\n- **Диалог персонажей** — Сценарий с чётко разделёнными репликами говорящих и указаниями по исполнению. Результат: Озвученная сцена с намеренными изменениями подачи.\n- **Озвученное объяснение** — Готовый урок с отмеченными терминами и паузами. Результат: Речевое аудио, которое можно сверить с текстом урока.\n- **Многоязычное объявление** — Итоговый текст на нужных языках с сохранёнными решениями о произношении. Результат: Озвученный фрагмент с управляемыми переходами между языками.\n- **Голосовой ответ по сценарию** — Краткий ответ с явно заданным тоном и словами для произнесения. Результат: Речевой фрагмент для повторного использования окружающим приложением.\n\n### Ограничения\n\n- **Ввод и результат** — Опубликованная модель принимает текст и возвращает речевое аудио.\n- **Область действия указаний** — Привязывайте указание к нужной реплике или фразе и правильно ограничивайте область парных тегов подачи.\n- **Единица проверки** — Сохраняйте точный сценарий и указания вместе с аудио; проверяйте произношение и смены говорящих на уровне реплик.\n",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "4506238365649489bcda12e869858b76ca8a5c26c8d5752e660ec0635f57f350",
    "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\">•</span><h2 id=\"sheet-title\">Fish Audio: Drama 3</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Закрыть\">×</button></div><div class=\"idline\"><span>Fish Audio /</span><code>fish-audio/drama-3</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|speech|/v1/audio/speech|fish-audio%2Fdrama-3\">Озвучка</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\">Drama 3 превращает письменный сценарий в речь с заданной подачей. Направляйте эмоции и исполнение обычными словами, добавляйте паузы и звуки, задавайте произношение и создавайте сцены с несколькими говорящими. Опубликованный процесс синтеза поддерживает более 80 языков, включая смену языка внутри предложения.</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>Drama 3 — модель Fish Audio для озвучивания сценария с выразительным исполнением. Она создаёт речевое аудио из переданных слов и даёт автору сценария управление подачей. Строка может содержать указание на эмоцию, локальное изменение исполнения или инструкцию по произношению, поэтому ввод включает и произносимое содержимое, и то, как оно должно звучать.</p><h4>Напишите слова и направляйте исполнение</h4><p>Перед добавлением указаний по подаче подготовьте точные слова, которые должен услышать слушатель. Ясно записывайте важные имена, даты и инструкции в сценарии и задавайте нужный ритм предложений пунктуацией. Затем поместите указание обычными словами в квадратных скобках перед строкой, к которой оно относится. Опишите желаемую эмоцию или подачу конкретно: например, сдержанное объявление, напряжённый обмен репликами или тёплое объяснение.</p><p>Drama 3 также поддерживает локальное управление внутри строки. Встроенные инструкции могут вводить звуки и паузы, а парные теги подачи — воздействовать на отдельные слова. Чётко задавайте область каждой инструкции: указание для одной фразы не должно случайно стать указанием для всей сцены. Перед синтезом прочитайте сценарий один раз ради смысла и один раз ради исполнения.</p><h4>Сцены, языки и произношение</h4><p>Опубликованная модель поддерживает нескольких говорящих в одном запросе. Организуйте диалог в ясные реплики и задайте каждой цель: вопрос, перебивание, объяснение или ответ. В уроке или объясняющем ролике тот же подход может отделить рассказчика от цитируемого персонажа без превращения материала в один неразличимый монолог.</p><p>Drama 3 поддерживает более 80 языков и может менять язык внутри предложения, сохраняя голос. Подготовьте многоязычные фрагменты на тех языках, на которых они должны звучать, не предполагая, что английская инструкция обеспечивает перевод. Определите, как должны звучать иностранные имена и заимствованные термины, и используйте управление фонемами модели, когда произношение требует точного указания.</p><h4>Полезные аудиоматериалы</h4><p>Модель подходит для диалогов персонажей, озвученных уроков, коротких объяснений, объявлений о продуктах и голосовых ответов по сценарию. Сохраняйте содержание и решения об исполнении вместе: учебному фрагменту нужны понятные термины и осмысленные паузы; сцене с персонажами — чётко разделённые реплики и единый драматический замысел. Это авторские решения, которые можно проверить до генерации аудио.</p><p>После синтеза сравните произнесённые слова с готовым сценарием. На слух проверьте пропущенные фразы, неуместные паузы, неясные смены говорящих и произношение защищённых имён. Сохраняйте сценарий и указания по подаче вместе с аудио, чтобы исправление могло затронуть нужную строку. При подготовке правки храните итоговое произносимое содержимое и решения об исполнении каждой строки вместе.</p><h4>Возможности</h4><ul><li>Синтез речи по готовому сценарию с заданной подачей.</li><li>Указания обычными словами в квадратных скобках перед репликой.</li><li>Встроенные звуки и паузы, парные теги подачи для отдельных слов.</li><li>Сцены с несколькими говорящими и более 80 языков озвучивания.</li><li>Управление фонемами для имён и специальной терминологии.</li></ul><h4>Сценарии использования</h4><ul><li><strong>Диалог персонажей</strong> — Сценарий с чётко разделёнными репликами говорящих и указаниями по исполнению. Результат: Озвученная сцена с намеренными изменениями подачи.</li><li><strong>Озвученное объяснение</strong> — Готовый урок с отмеченными терминами и паузами. Результат: Речевое аудио, которое можно сверить с текстом урока.</li><li><strong>Многоязычное объявление</strong> — Итоговый текст на нужных языках с сохранёнными решениями о произношении. Результат: Озвученный фрагмент с управляемыми переходами между языками.</li><li><strong>Голосовой ответ по сценарию</strong> — Краткий ответ с явно заданным тоном и словами для произнесения. Результат: Речевой фрагмент для повторного использования окружающим приложением.</li></ul><h4>Ограничения</h4><ul><li><strong>Ввод и результат</strong> — Опубликованная модель принимает текст и возвращает речевое аудио.</li><li><strong>Область действия указаний</strong> — Привязывайте указание к нужной реплике или фразе и правильно ограничивайте область парных тегов подачи.</li><li><strong>Единица проверки</strong> — Сохраняйте точный сценарий и указания вместе с аудио; проверяйте произношение и смены говорящих на уровне реплик.</li></ul></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/speech</code></summary><dl class=\"method-capabilities\"><div><dt>Входные данные</dt><dd><code>text</code></dd></div><div><dt>Результат</dt><dd><code>audio</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>fish-audio/drama-3</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</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>Минимальная длина: 1</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\">voice</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>Минимальная длина: 1</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\">response_format</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>mp3, pcm</div></td><td data-cell-label=\"По умолчанию\" data-default=\"known\"><span class=\"card-cell-label\">По умолчанию</span>pcm</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">provider</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, voice</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>text</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>Выберите фактический поддерживаемый ID голоса; конкретный голос или значение по умолчанию для этой модели не выдумываются.</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 или запись в медиатеке</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>входной байт UTF-8</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Расчётная единица\"><span class=\"card-cell-label\">Расчётная единица</span>за входной байт UTF-8</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Вход · входной байт UTF-8</span> <b>$0.00002</b> <span class=\"price-unit\">за входной байт UTF-8</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-1352-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1352-panel-0\" aria-selected=\"true\" tabindex=\"0\">Используйте реальные входные данные и сохраните полный результат</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-1352-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1352-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_INPUT_TEXT:?Set the actual documented input value}&quot;\nexport AILOOT_INPUT_TEXT\n: &quot;${AILOOT_VOICE:?Set the actual documented input value}&quot;\nexport AILOOT_VOICE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\nrequest={&#39;model&#39;: &#39;fish-audio/drama-3&#39;, &#39;input&#39;: &#39;${ACTUAL_INPUT_TEXT}&#39;, &#39;voice&#39;: &#39;${ACTUAL_SUPPORTED_VOICE}&#39;}\nrequest[&#39;input&#39;]=os.environ[&#39;AILOOT_INPUT_TEXT&#39;]\nrequest[&#39;voice&#39;]=os.environ[&#39;AILOOT_VOICE&#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/speech \\\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 response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\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\">Полные двоичные аудиоданные или исходный ответ audio_url, заголовки и каждый ресурс, принадлежащий Ailoot.</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><details class=\"card-about\"><summary>Чтение другого содержимого</summary><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Варианты кода\"><button class=\"cg-tab\" id=\"model-code-1353-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1353-panel-0\" aria-selected=\"true\" tabindex=\"0\">Читать существующие материалы, принадлежащие вам</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-1353-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1353-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n</code></pre></div></div></div></details><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 для сверки. Читайте только фактически возвращённые значения task_id/asset_id или собственную медиатеку; никогда не составляйте URL задачи из ID операции и никогда не отправляйте запрос создания повторно.</p></div></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=fish-audio%2Fdrama-3&amp;route=Ultra&amp;caller=fish-audio%2Fdrama-3&amp;fmt=speech\"><code>fish-audio/drama-3</code></a></span></p><h4>Псевдонимы путей метода</h4><p class=\"note-s\">Используйте пути методов, указанные выше.</p><h4>Связанные ID для вызова</h4><p class=\"note-s\"><a href=\"#m=fish-audio%2Fdrama-3&amp;route=Ultra&amp;caller=fish-audio%2Fdrama-3&amp;fmt=speech\"><code>fish-audio/drama-3</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "fish-audio/drama-3",
        "fmt": "speech",
        "http": "POST",
        "path": "/v1/audio/speech",
        "request_model_id": "fish-audio/drama-3",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|speech|/v1/audio/speech|fish-audio%2Fdrama-3",
      "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.",
            "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 URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Сохраните возвращённый X-Client-Request-ID для сверки. Читайте только фактически возвращённые значения task_id/asset_id или собственную медиатеку; никогда не составляйте URL задачи из ID операции и никогда не отправляйте запрос создания повторно."
            },
            "outputs": {
              "all_results": "Сохраняйте полный ответ и заголовки, все фактические результаты, исходные возвращённые идентификаторы и все поля использования. Восстанавливайте исходную операцию без повторной отправки запроса создания.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Полные двоичные аудиоданные или исходный ответ audio_url, заголовки и каждый ресурс, принадлежащий Ailoot."
            },
            "parameters": [
              {
                "enum": [
                  "fish-audio/drama-3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/drama-3"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "fish-audio/drama-3",
                "voice": "${ACTUAL_SUPPORTED_VOICE}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Выберите фактический поддерживаемый ID голоса; конкретный голос или значение по умолчанию для этой модели не выдумываются."
            ],
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "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 URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Фактически возвращённый task_id или запись в медиатеке",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "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": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "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 UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\n: \"${AILOOT_VOICE:?Set the actual documented input value}\"\nexport AILOOT_VOICE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/drama-3', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': '${ACTUAL_SUPPORTED_VOICE}'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\nrequest['voice']=os.environ['AILOOT_VOICE']\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/speech \\\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 response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "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": [
          "text"
        ],
        "label": "Речь",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "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_utf8_byte": 2e-05
          }
        },
        "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 UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/drama-3",
        "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.00002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 byte",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    }
  ],
  "model_id": "fish-audio/drama-3",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "759b4e11c6d6a3e3315e7d569f81a9b3e9d06c1ad8a5d220c9c0ee44a3717c06",
    "input_html_sha256": "45c346a2604baed51a10e4884a3f66ec947e10959eec5df4b8f6f298f59c8a5e",
    "private_audit_sha256": "25470f5126f96fe29feb5be6ba6f790fba472718acbe6540065ee77e405a740e",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ru/fish-audio-drama-3/",
    "description": "Drama 3 превращает письменный сценарий в речь с заданной подачей. Направляйте эмоции и исполнение обычными словами, добавляйте паузы и звуки, задавайте произношение и создавайте сцены с несколькими говорящими. Опубликованный процесс синтеза поддерживает более 80 языков, включая смену языка внутри предложения.",
    "locale": "ru",
    "md_url": "https://ailoot.ai/models/ru/fish-audio-drama-3/index.md",
    "title": "Fish Audio: Drama 3 — Ailoot",
    "url": "https://ailoot.ai/models/ru/fish-audio-drama-3/"
  },
  "rawModel": {
    "about": "Drama 3 — модель Fish Audio для озвучивания сценария с выразительным исполнением. Она создаёт речевое аудио из переданных слов и даёт автору сценария управление подачей. Строка может содержать указание на эмоцию, локальное изменение исполнения или инструкцию по произношению, поэтому ввод включает и произносимое содержимое, и то, как оно должно звучать.\n\n### Напишите слова и направляйте исполнение\n\nПеред добавлением указаний по подаче подготовьте точные слова, которые должен услышать слушатель. Ясно записывайте важные имена, даты и инструкции в сценарии и задавайте нужный ритм предложений пунктуацией. Затем поместите указание обычными словами в квадратных скобках перед строкой, к которой оно относится. Опишите желаемую эмоцию или подачу конкретно: например, сдержанное объявление, напряжённый обмен репликами или тёплое объяснение.\n\nDrama 3 также поддерживает локальное управление внутри строки. Встроенные инструкции могут вводить звуки и паузы, а парные теги подачи — воздействовать на отдельные слова. Чётко задавайте область каждой инструкции: указание для одной фразы не должно случайно стать указанием для всей сцены. Перед синтезом прочитайте сценарий один раз ради смысла и один раз ради исполнения.\n\n### Сцены, языки и произношение\n\nОпубликованная модель поддерживает нескольких говорящих в одном запросе. Организуйте диалог в ясные реплики и задайте каждой цель: вопрос, перебивание, объяснение или ответ. В уроке или объясняющем ролике тот же подход может отделить рассказчика от цитируемого персонажа без превращения материала в один неразличимый монолог.\n\nDrama 3 поддерживает более 80 языков и может менять язык внутри предложения, сохраняя голос. Подготовьте многоязычные фрагменты на тех языках, на которых они должны звучать, не предполагая, что английская инструкция обеспечивает перевод. Определите, как должны звучать иностранные имена и заимствованные термины, и используйте управление фонемами модели, когда произношение требует точного указания.\n\n### Полезные аудиоматериалы\n\nМодель подходит для диалогов персонажей, озвученных уроков, коротких объяснений, объявлений о продуктах и голосовых ответов по сценарию. Сохраняйте содержание и решения об исполнении вместе: учебному фрагменту нужны понятные термины и осмысленные паузы; сцене с персонажами — чётко разделённые реплики и единый драматический замысел. Это авторские решения, которые можно проверить до генерации аудио.\n\nПосле синтеза сравните произнесённые слова с готовым сценарием. На слух проверьте пропущенные фразы, неуместные паузы, неясные смены говорящих и произношение защищённых имён. Сохраняйте сценарий и указания по подаче вместе с аудио, чтобы исправление могло затронуть нужную строку. При подготовке правки храните итоговое произносимое содержимое и решения об исполнении каждой строки вместе.\n\n### Возможности\n\n- Синтез речи по готовому сценарию с заданной подачей.\n- Указания обычными словами в квадратных скобках перед репликой.\n- Встроенные звуки и паузы, парные теги подачи для отдельных слов.\n- Сцены с несколькими говорящими и более 80 языков озвучивания.\n- Управление фонемами для имён и специальной терминологии.\n\n### Сценарии использования\n\n- **Диалог персонажей** — Сценарий с чётко разделёнными репликами говорящих и указаниями по исполнению. Результат: Озвученная сцена с намеренными изменениями подачи.\n- **Озвученное объяснение** — Готовый урок с отмеченными терминами и паузами. Результат: Речевое аудио, которое можно сверить с текстом урока.\n- **Многоязычное объявление** — Итоговый текст на нужных языках с сохранёнными решениями о произношении. Результат: Озвученный фрагмент с управляемыми переходами между языками.\n- **Голосовой ответ по сценарию** — Краткий ответ с явно заданным тоном и словами для произнесения. Результат: Речевой фрагмент для повторного использования окружающим приложением.\n\n### Ограничения\n\n- **Ввод и результат** — Опубликованная модель принимает текст и возвращает речевое аудио.\n- **Область действия указаний** — Привязывайте указание к нужной реплике или фразе и правильно ограничивайте область парных тегов подачи.\n- **Единица проверки** — Сохраняйте точный сценарий и указания вместе с аудио; проверяйте произношение и смены говорящих на уровне реплик.\n",
    "alias_of": null,
    "aliases": [],
    "author": "Fish Audio",
    "capabilities": {
      "context_length": 0,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "speech"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 byte",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ],
        "summary": "Полная информация о ценах конфигурации — в подробностях."
      }
    ],
    "ctx": null,
    "formats": [
      "speech"
    ],
    "id": "fish-audio/drama-3",
    "input": [
      "text"
    ],
    "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.",
            "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 URL; never construct token"
                }
              ],
              "mode": "synchronous_result_then_owned_library",
              "operation_id_is_not_task_id": true,
              "status": [
                {
                  "http": "GET",
                  "id_source": "actual returned task_id or media library record",
                  "path": "/v1/media/tasks/{task_id}"
                }
              ],
              "unknown": "Сохраните возвращённый X-Client-Request-ID для сверки. Читайте только фактически возвращённые значения task_id/asset_id или собственную медиатеку; никогда не составляйте URL задачи из ID операции и никогда не отправляйте запрос создания повторно."
            },
            "outputs": {
              "all_results": "Сохраняйте полный ответ и заголовки, все фактические результаты, исходные возвращённые идентификаторы и все поля использования. Восстанавливайте исходную операцию без повторной отправки запроса создания.",
              "family": "audio",
              "formats": [
                "mp3",
                "pcm"
              ],
              "result": "Полные двоичные аудиоданные или исходный ответ audio_url, заголовки и каждый ресурс, принадлежащий Ailoot."
            },
            "parameters": [
              {
                "enum": [
                  "fish-audio/drama-3"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "input",
                "required": true,
                "type": "string"
              },
              {
                "min_length": 1,
                "name": "voice",
                "required": true,
                "type": "string"
              },
              {
                "default": "pcm",
                "default_known": true,
                "enum": [
                  "mp3",
                  "pcm"
                ],
                "enum_known": true,
                "name": "response_format",
                "required": false,
                "type": "string"
              },
              {
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "request_schema": {
              "properties": {
                "input": {
                  "minLength": 1,
                  "type": "string"
                },
                "model": {
                  "enum": [
                    "fish-audio/drama-3"
                  ],
                  "type": "string"
                },
                "provider": {
                  "description": "Documented speech data policy and provider-specific options.",
                  "properties": {
                    "data_collection": {
                      "enum": [
                        "allow",
                        "deny",
                        null
                      ],
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "options": {
                      "type": "object"
                    },
                    "zdr": {
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": "object"
                },
                "response_format": {
                  "default": "pcm",
                  "enum": [
                    "mp3",
                    "pcm"
                  ],
                  "type": "string"
                },
                "voice": {
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input",
                "voice"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "${ACTUAL_INPUT_TEXT}",
                "model": "fish-audio/drama-3",
                "voice": "${ACTUAL_SUPPORTED_VOICE}"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "content_type": "application/json",
            "material_conditions": [
              "Выберите фактический поддерживаемый ID голоса; конкретный голос или значение по умолчанию для этой модели не выдумываются."
            ],
            "material_types": [
              "text"
            ],
            "required": [
              "model",
              "input",
              "voice"
            ]
          },
          "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 URL; never construct token"
              }
            ],
            "mode": "synchronous_result_then_owned_library",
            "operation_id_is_not_task_id": true,
            "status": [
              {
                "http": "GET",
                "id_source": "Фактически возвращённый task_id или запись в медиатеке",
                "path": "/v1/media/tasks/{task_id}"
              }
            ],
            "unknown": "Keep the returned X-Client-Request-ID for reconciliation. Read only actual returned task_id/asset_id values or the owned media library; never build a task URL from the operation ID and never resubmit creation."
          },
          "method": {
            "http": "POST",
            "path": "/v1/audio/speech"
          },
          "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": "audio",
            "formats": [
              "mp3",
              "pcm"
            ],
            "result": "Complete binary audio or original audio_url response, headers and every owned asset."
          }
        },
        "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 UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_INPUT_TEXT:?Set the actual documented input value}\"\nexport AILOOT_INPUT_TEXT\n: \"${AILOOT_VOICE:?Set the actual documented input value}\"\nexport AILOOT_VOICE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\nrequest={'model': 'fish-audio/drama-3', 'input': '${ACTUAL_INPUT_TEXT}', 'voice': '${ACTUAL_SUPPORTED_VOICE}'}\nrequest['input']=os.environ['AILOOT_INPUT_TEXT']\nrequest['voice']=os.environ['AILOOT_VOICE']\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/speech \\\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 response and headers, every actual output, original returned identifiers and all usage fields. Recover the original operation without submitting creation again.\n",
            "label": "Use actual input and retain the complete result",
            "language": "bash"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -o owned-assets.json\n# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.\n",
            "label": "Read existing owned assets",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "speech",
        "hints": [
          "Use the exact caller model ID and documented input representation.",
          "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": [
          "text"
        ],
        "label": "Речь",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "native_endpoint": "audio_speech",
        "out": null,
        "output": [
          "audio"
        ],
        "path": "/v1/audio/speech",
        "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_utf8_byte": 2e-05
          }
        },
        "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 UTF-8 byte"
            },
            "label": "input UTF-8 byte",
            "units": [
              {
                "amount": "0.00002",
                "amount_unit": "usd_per_exact_native_unit",
                "billing_input": true,
                "estimate_only": false,
                "key": "audio_input_utf8_byte",
                "label": "input UTF-8 byte",
                "native_amount_usd_per_unit": "0.00002",
                "native_quantity": 1,
                "public_unit_label": "per input UTF-8 byte",
                "quantity": 1,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "audio_input_utf8_byte"
              }
            ]
          }
        ],
        "request_model_id": "fish-audio/drama-3",
        "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.00002",
            "amount_unit": "usd_per_exact_native_unit",
            "billing_input": true,
            "estimate_only": false,
            "key": "audio_input_utf8_byte",
            "label": "input UTF-8 byte",
            "native_amount_usd_per_unit": "0.00002",
            "native_quantity": 1,
            "public_unit_label": "per input UTF-8 byte",
            "quantity": 1,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "audio_input_utf8_byte"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "fish-audio/drama-3",
        "request_model_id": "fish-audio/drama-3",
        "route_label": "Ultra"
      }
    ],
    "name": "Fish Audio: Drama 3",
    "price": {
      "in": null,
      "in_label": null,
      "out": null,
      "out_label": null,
      "sort_in": null,
      "sort_out": null,
      "varies": true
    },
    "short": "Drama 3 превращает письменный сценарий в речь с заданной подачей. Направляйте эмоции и исполнение обычными словами, добавляйте паузы и звуки, задавайте произношение и создавайте сцены с несколькими говорящими. Опубликованный процесс синтеза поддерживает более 80 языков, включая смену языка внутри предложения."
  },
  "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": "Drama 3 превращает письменный сценарий в речь с заданной подачей. Направляйте эмоции и исполнение обычными словами, добавляйте паузы и звуки, задавайте произношение и создавайте сцены с несколькими говорящими. Опубликованный процесс синтеза поддерживает более 80 языков, включая смену языка внутри предложения.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "4f2c553023654f2bf08749ff2712fd8851c5454110bb14ef27c5e413e69dbdb8",
    "renderer_sha256": "aa692ffec412026bdeaf316df24a58e6c5083045e5246f6033f898d132afa5ff"
  },
  "sourceRevision": "93846cb491101cfe9c819b8c3f4c498e50e616215d4786c6c41c3230f707734e"
}
