Skip to main content
К транскрипции можно подключить три опции анализа разговора: Отдельных эндпоинтов нет — опции передаются в обычный запрос транскрипции. Анализ выполняют собственные модели Palatine. Без опций запрос и ответ не меняются.

Где доступны

На /transcribe/do_transcribe прочие параметры (model, diarization_model, num_speakers, …) по-прежнему передаются только в query — полями формы принимаются лишь roles, emotions и profanity_filter. На /audio/transcriptions все параметры, как и раньше, — поля формы.
roles и emotions работают только вместе с диаризацией: укажите diarization_model (см. Разметка говорящих). Без неё запрос вернёт 422.

Параметры

roles — роли говорящих

Ограничения: не больше 10 ролей; имя роли — непустое, до 64 символов, имена не должны повторяться (без учёта регистра); описание — до 500 символов. Переводы строк, табуляция и другие управляющие символы в именах и описаниях не допускаются. Нарушение любого ограничения — 422. Если говорящего не удаётся уверенно отнести ни к одной роли из списка, его роль — null.

emotions — эмоции реплик

Логическое значение: true / false (также 1/0, yes/no, on/off). Каждой реплике назначается одна из эмоций: neutral, positive, sad, angry.
Эмоции определяются только для русской речи. Для записей на другом языке поле emotion будет null, а опция не тарифицируется. Очень короткие реплики (около секунды речи) по возможности объединяются с соседними репликами того же говорящего; если объединить не с чем — emotion: null.

profanity_filter — фильтр мата

Значения не зависят от регистра; любое другое значение — 422.
  • Эвфемизмы и смягчённые формы («блин», «хрен» и т. п.) не маскируются ни на одном уровне.
  • В слове сохраняются первая и последняя буквы, вся середина заменяется на * (слово из шести букв превратится в Х****Х, где Х — исходные первая и последняя буквы). Схема маски одна для обоих уровней — уровень определяет только, какие слова маскируются. Маска необратима — исходный текст не сохраняется.
  • Маскируется весь текст результата: text, segments[].text, words[].word, а у обычной транскрипции (без диаризации) — и segments[].words; поле segments[].tokens очищается. Маска сохраняется и в выгрузках (/download_as_file, форматы srt/vtt и др.).
  • Фильтр работает и без диаризации — с обычной транскрипцией.

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

Результат асинхронной задачи — через GET /api/v1/transcribe/task_status/{task_id} (см. Polling API).
На синхронном /audio/transcriptions опции roles и emotions увеличивают время ответа. Для длинных записей используйте асинхронный /transcribe/do_transcribe.

Формат ответа

В примере ниже Х*** — условное обозначение замаскированного слова (уровень soft). Поля опций появляются в ответе, только если опция запрошена (тогда поле есть всегда, при неудаче — со значением null). Поле speaker в сегментах ролью не заменяется.
Без диаризации (profanity_filter на обычной транскрипции) ответ имеет прежний формат: текст маскируется, в included_processing появляется profanity_filter; флагов profanity у сегментов и сводки speakers нет.

Коды в warnings

Сбой ролей или эмоций не валит задачу: транскрипция возвращается, соответствующие поля равны null, в warnings — причина.

Тарификация

Каждая опция тарифицируется отдельно и поминутно — дополнительно к транскрипции и диаризации:
  • Сумма по каждой опции округляется вверх до копейки, минимум — 0,01 ₽ за опцию. Например, 15 с записи: фильтр мата — 0,01 ₽, роли — 0,02 ₽; 61 с записи: роли — 0,05 ₽.
  • Списывается только выполнившаяся опция (та, что есть в included_processing). Если роли или эмоции не определились (см. warnings), за них ничего не списывается.
  • Перед запуском обработки проверяется, что баланса хватает на всё запрошенное, включая опции.

Ошибки

Проверки выполняются по порядку, до создания задачи и без списаний:
  1. Значения опций (и roles/emotions на /do_transcribe_by_url) — иначе 422.
  2. Подключена ли опция для аккаунта — иначе 403 feature_disabled.
  3. Для roles/emotions указан diarization_model — иначе 422.
Поэтому если опция не подключена, запрос с roles/emotions без диаризации вернёт 403, а не 422.
Значение false у опции (emotions=false, profanity_filter=false) равносильно её отсутствию и ошибок не вызывает.