Skip to main content
Этот API предоставляет удобный способ для автоматической транскрибации и диаризации аудио через облако Palatine Speech. Поддерживаются такие задачи, как перевод аудио и видео в текст с таймкодами (транскрибация), а так же сегментация по спикерам (диаризация), создание субтитров в формате SRT и VTT.
1

Загрузка файла

POST /do_transcribe — отправьте аудио/видео файл
2

Получение task_id

API вернёт task_id для отслеживания
3

Polling статуса

GET /task_status/ — опрашивайте до получения результата
4

Скачивание результата (если нужен файл)

GET /download_as_file/ — экспорт в SRT, VTT, CSV, XLSX
5

Завершение

POST /task_done/ — освободите ресурсы

Транскрибация в формате OpenAI

Для получения результата в структуре, совместимой с OpenAI API.
from openai import OpenAI

client = OpenAI(
    base_url="https://api.palatine.ru/api/v1",
    api_key="<YOUR_TOKEN>"
)

with open("audio.mp3", "rb") as f:
    result = client.audio.transcriptions.create(
        file=f,
        model="palatine_large_highspeed",
        # response_format="json" | "verbose_json" | "text" | "srt" | "vtt"
        # language="ru"  # опционально: указать язык аудио
    )

print(result)
Доступные модели:
МодельОписание
palatine_large_highspeedВысокая точность, рекомендуется по умолчанию
palatine_smallБыстрее, но менее точная
Подробнее можно узнать в документации OpenAI клиента.

Пример транскрибации с помощью polling API

Все запросы требуют авторизации через токен в заголовке: Authorization: Bearer <ваш_токен>
Загрузите аудиофайл для получения текста.
import requests

API_URL = "https://api.palatine.ru/api/v1/transcribe/do_transcribe"
TOKEN = "<YOUR_TOKEN>"

files = {"file": open("audio.mp3", "rb")}
headers = {"Authorization": f"Bearer {TOKEN}"}
params = {
    "model": "palatine_large_highspeed",  # или palatine_small
    "fast_inference": True  # ускоренный режим (по умолчанию включён)
}

response = requests.post(API_URL, files=files, headers=headers, params=params)
print(response.json())
Пример ответа:
{
  "status": "scheduled",
  "task_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}
Получить статус и результат задачи транскрибации.
import requests

task_id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
API_URL = f"https://api.palatine.ru/api/v1/transcribe/task_status/{task_id}"
headers = {"Authorization": f"Bearer {TOKEN}"}
params = {"response_format": "json"}  # или "srt", "vtt"

response = requests.get(API_URL, headers=headers, params=params)
print(response.json())
Статусы задачи:
  • success — задача выполнена успешно
  • pending — задача ещё в процессе выполнения
  • error — при выполнении задачи произошла ошибка
Пример успешного ответа:
{
  "id": "ea7040ab-edbf-407f-9123-dc8033185a08",
  "created_at": "2025-08-26T20:47:17.856937Z",
  "data": {
    "duration": 16.431,
    "language": "ru",
    "text": "Говорит Москва, передаем сообщение ТАСС...",
    "segments": [
      {
        "id": 1,
        "start": 0.0,
        "end": 13.712,
        "text": " Говорит Москва, передаем сообщение ТАСС..."
      }
    ]
  },
  "status": "success",
  "error": null
}
Параметр response_format поддерживает значения json, srt и vtt для получения результата в разных форматах.
Если задача успешно завершена, результат можно забрать в готовом файловом формате.
import requests

task_id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
API_URL = f"https://api.palatine.ru/api/v1/transcribe/download_as_file/{task_id}"
headers = {"Authorization": f"Bearer {TOKEN}"}
params = {
    "file_format": "srt",    # srt, vtt, txt, csv, xlsx
    "export_type": "segments"  # segments или words (для csv/xlsx)
}

response = requests.get(API_URL, headers=headers, params=params)
if response.ok:
    with open(f"transcription.{params['file_format']}", "wb") as f:
        f.write(response.content)
Форматы файлов:
ФорматОписание
srt, vttСубтитры с таймкодами
txtТолько текст
csv, xlsxТаблица (параметр export_type: segments или words)
После завершения работы с задачей её необходимо завершить.
import requests

task_id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
API_URL = f"https://api.palatine.ru/api/v1/transcribe/task_done/{task_id}"
headers = {"Authorization": f"Bearer {TOKEN}"}

response = requests.post(API_URL, headers=headers)
print(response.json())
HTTP кодОписаниеРешение
401Неверный или отсутствующий токенПроверьте токен авторизации
404Задача не найденаПроверьте task_id или создайте новую задачу
409Задача ещё в обработкеДождитесь завершения, повторите запрос позже
500Внутренняя ошибка сервераПовторите запрос или обратитесь в поддержку