Этот API предоставляет удобный способ для автоматической транскрибации и диаризации аудио через облако. Поддерживаются такие задачи, как перевод аудио в текст с таймкодами (транскрибация) и сегментация по спикерам (диаризация).

Быстрый старт

Все запросы выполняются по защищённым URL. Для большинства методов требуется авторизация через токен: Передавайте токен в заголовке:
Authorization: Bearer <ваш_токен>

Эндпоинты

1. Транскрибация (Transcription)


1.1. Транскрибировать аудио

Загрузите аудиофайл для получения текста. Пример запроса (Python, requests):
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}"}

response = requests.post(API_URL, files=files, headers=headers)
print(response.json())
Пример ответа:
{
  "status": "scheduled",
  "task_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}

1.2. Проверить статус задачи

Получить статус и результат задачи транскрибации. Пример запроса:
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}"}

response = requests.get(API_URL, headers=headers)
print(response.json())
Пример успешного ответа:
{
  "task_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // Уникальный идентификатор задачи
  "data": {
    "text": "Добро пожаловать!", // Полный распознанный текст
    "segments": [ // Список сегментов аудио с распознанным текстом
      {
        "id": 0, // Идентификатор сегмента
        "start": 0.0, // Время начала сегмента в секундах
        "end": 1.23, // Время окончания сегмента в секундах
        "text": "Добро пожаловать!", // Текст, распознанный в данном сегменте
        "tokens": [50257, 456], // Список токенов, соответствующих тексту сегмента
        "avg_logprob": -0.12, // Средний логарифмический уровень вероятности для токенов
        "compression_ratio": 1.0, // Коэффициент сжатия текста
        "no_speech_prob": 0.01, // Вероятность отсутствия речи в сегменте
        "temperature": 0.0 // Температура, использованная при генерации текста
      }
    ]
  },
  "task_status": True // Статус выполнения задачи (True - успешно завершена)
}

1.3. Отметить задачу как завершённую

Используется для ручного завершения задачи, если требуется. Пример запроса:
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())

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

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

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

with open("audio.mp3", "rb") as f:
	result = client.audio.transcriptions.create(file=f, model="palatine_audio")

print(result)

2. Диаризация (Diarization)

2.1. Диаризовать аудио

Отправьте аудиофайл для получения сегментов с определением спикеров. Пример запроса:
import requests

API_URL = "https://api.palatine.ru/api/v1/diarization/do_diarize"
files = {"file": open("audio.mp3", "rb")}
headers = {"Authorization": f"Bearer {TOKEN}"}

response = requests.post(API_URL, files=files, headers=headers)
print(response.json())
Пример ответа:
{
  "status": "scheduled",
  "task_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}

2.2. Проверить статус задачи диаризации

Пример запроса:
import requests

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

response = requests.get(API_URL, headers=headers)
print(response.json())
Пример ответа:
{
  "task_id": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
  "data": {
    "segments": [
      {
        "segment_id": 0,
        "speaker": "SPEAKER_01",
        "start": 0.0,
        "end": 2.5
      }
    ]
  },
  "task_status": True
}

2.3. Отметить задачу диаризации как завершённую

Пример запроса:
import requests

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

response = requests.post(API_URL, headers=headers)
print(response.json())

Ошибки

Все ответы с ошибкой возвращают соответствующий HTTP-код и объект с описанием ошибки:
{
  "detail": [
    {
      "loc": ["body", "file"],
      "msg": "field required",
      "type": "value_error.missing"
    }
  ]
}

Требования к авторизации

Большинство запросов требует заголовка:
Authorization: Bearer <ваш_токен>
Токен можно получить в системе управления пользователями вашей платформы.