Этот API предоставляет удобный способ для автоматической транскрибации и диаризации аудио через облако Palatine Speech.
Поддерживаются такие задачи, как перевод аудио и видео в текст с таймкодами (транскрибация), а так же
сегментация по спикерам (диаризация), создание субтитров в формате SRT и VTT.
Загрузка файла
POST /do_transcribe — отправьте аудио/видео файл
Получение task_id
API вернёт task_id для отслеживания
Polling статуса
GET /task_status/ — опрашивайте до получения результата
Скачивание результата (если нужен файл)
GET /download_as_file/ — экспорт в SRT, VTT, CSV, XLSX
Завершение
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)
curl -X POST "https://api.palatine.ru/api/v1/audio/transcriptions" \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-F "[email protected] " \
-F "model=palatine_large_highspeed"
Доступные модели:
Модель Описание 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())
curl -X POST "https://api.palatine.ru/api/v1/transcribe/do_transcribe?model=palatine_large_highspeed&fast_inference=true" \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-F "[email protected] "
Пример ответа: {
"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())
curl "https://api.palatine.ru/api/v1/transcribe/task_status/{task_id}?response_format=json" \
-H "Authorization: Bearer <YOUR_TOKEN>"
Статусы задачи:
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)
curl "https://api.palatine.ru/api/v1/transcribe/download_as_file/{task_id}?file_format=srt" \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-o transcription.srt
Форматы файлов: Формат Описание 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())
curl -X POST "https://api.palatine.ru/api/v1/transcribe/task_done/{task_id}" \
-H "Authorization: Bearer <YOUR_TOKEN>"
HTTP код Описание Решение 401 Неверный или отсутствующий токен Проверьте токен авторизации 404 Задача не найдена Проверьте task_id или создайте новую задачу 409 Задача ещё в обработке Дождитесь завершения, повторите запрос позже 500 Внутренняя ошибка сервера Повторите запрос или обратитесь в поддержку