Этот 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": {
    "result": {
      "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
}

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/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": {
    "result": {
      "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/transcribe/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 <ваш_токен>

Токен можно получить в системе управления пользователями вашей платформы.