Palatine Speech позволяет определить эмоциональную окраску речи в аудио и видео.
Сервис агрегирует вероятности по классам тональности (Very Negative, Negative, Neutral, Positive, Very Positive) и выдаёт результат в удобном JSON.
Классы всегда отсортированы по убыванию вероятности: первый элемент — наиболее вероятная тональность.
Создание задачи
POST /analyze_file — отправьте аудио/видео файл
Получение task_id
API вернёт task_id для отслеживания
Polling статуса
GET /task_status/ — опрашивайте до получения результата
Завершение
POST /task_done/ — освободите ресурсы
Анализ тональности через polling API
Все запросы требуют авторизации через токен в заголовке: Authorization: Bearer <ваш_токен>
Отправьте аудио/видео файл на эндпоинт POST /sentiment_analysis/analyze_file. import requests
API_URL = "https://api.palatine.ru/api/v1/sentiment_analysis/analyze_file"
TOKEN = "<YOUR_TOKEN>"
headers = { "Authorization" : f "Bearer { TOKEN } " }
files = { "file" : open ( "call.mp3" , "rb" )}
response = requests.post( API_URL , files = files, headers = headers)
print (response.json())
curl -X POST "https://api.palatine.ru/api/v1/sentiment_analysis/analyze_file" \
-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/sentiment_analysis/task_status/ { task_id } "
headers = { "Authorization" : f "Bearer { TOKEN } " }
response = requests.get( API_URL , headers = headers)
print (response.json())
curl "https://api.palatine.ru/api/v1/sentiment_analysis/task_status/{task_id}" \
-H "Authorization: Bearer <YOUR_TOKEN>"
Статусы задачи:
success — задача выполнена успешно
pending — задача ещё в процессе выполнения
error — при выполнении задачи произошла ошибка
Пример успешного ответа: {
"id" : "b9fcc4dd-0fb8-4900-b7f7-e6ac2a90cbe5" ,
"created_at" : "2025-08-26T20:47:17.856937Z" ,
"data" : {
"sentiment" : [
{ "label" : "Very Positive" , "score" : 0.85 },
{ "label" : "Positive" , "score" : 0.08 },
{ "label" : "Neutral" , "score" : 0.04 },
{ "label" : "Negative" , "score" : 0.02 },
{ "label" : "Very Negative" , "score" : 0.01 }
]
},
"status" : "success" ,
"error" : null
}
Список sentiment отсортирован по убыванию вероятности — первый элемент соответствует наиболее вероятной тональности. Значения score представляют уверенность модели для каждого класса.
После получения результата пометьте задачу завершённой, чтобы освободить ресурсы. import requests
task_id = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
API_URL = f "https://api.palatine.ru/api/v1/sentiment_analysis/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/sentiment_analysis/task_done/{task_id}" \
-H "Authorization: Bearer <YOUR_TOKEN>"
HTTP код Описание Решение 401 Неверный или отсутствующий токен Проверьте токен авторизации 404 Задача не найдена Проверьте task_id или создайте новую задачу 500 Внутренняя ошибка сервера Повторите запрос или обратитесь в поддержку
Ошибки в поле error ответа: Сообщение Причина Решение No recognizable speech В аудио нет распознаваемой речи Используйте файл с чёткой речью Not enough balance Недостаточно средств на балансе Пополните баланс