Перейти к основному содержимому

HTTP API Voicee (0.17.0)

API Voicee - предоставляет программный доступ к услугам транскрибации, перевода, составления краткого содержания (саммари), субтитров и их перевода.

На данный момент в API доступна только транскрибация аудио в текст с разделением на параграфы и спикеров (диаризация). Мы поддерживаем только транскрибацию как по ссылке на файл так и с загрузкой файла во время запроса.

Наше API асинхронное - это значит, что одним запросом вы ставите задачу на транскрибацию и серией других запросов (polling) вы узнаете статус задачи и получаете ее результат. Мы стараемся, чтобы результат был готов в течение нескольких минут и работаем над улучшением этой метрики. Мы уже работаем над поддержкой сервер-сервер уведомлений о статусах задач (webhooks). Если вам важно получать уведомления в браузере или вы просто больше любите уведомления по websocket - напишите нам: мы готовы повысить приоритет этой задачи.

Для того чтобы облегчить интеграцию наше апи совместимо с клиентом сервиса replicate. Это означает что вы можете использовать их клиент для любой платформы для взаимодействия с нашим сервисом. Будьте внимательны: компания replicate не имеет никакого отношения к нашим сервисам и в случае неработоспособности вам стоит связываться с нашей поддержкой а не поддержкой сервиса replicate.

Authentication

Аутентификация происходит с помощью передачи api ключа, который вам выдал наш партнер в заголовке Authentication: Bearer ключ

bearerAuth

Security Scheme Type: HTTP
HTTP Authorization Scheme: bearer

Транскрибация файлов

Raw HTTP API

  1. Поставить обработку в очередь

    1. Если есть ссылка на аудио файл: можно отправить классический запрос с JSON в теле

      curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer tk-..." https://api.voicee.ru/v1/replicate/v1/models/voicee/transcribe/predictions -d '{"input": {"audio": "https://..."}}'
      
    2. Если вы хотите загрузить файл внутри запроса

      Мы поддерживаем загрузку файлов в 3 форматах: multipart/form-data, application/octet-stream и application/json. Ограничение на размер файла - 300MiB.

      multipart/form-data

      Описание формата можно посмотреть на википедии: https://ru.wikipedia.org/wiki/Multipart/form-data

      curl -X POST https://api.voicee.ru/v1/replicate/v1/models/voicee/transcribe/predictions -H "Authorization: Bearer tk-<token here>" -F "input.audio=@/path-to-file/audio.mp4"
      

      при этом /path-to-file/audio.mp4 - это путь к файлу на вашем компьютере, а собачка перед путем обязательна - она подсказывает утилите curl, что это файл.

      application/octet-stream

      Если у вас нет под рукой клиента, который уже поддерживает мультипарт запросы, возможно самым простым вариантом будет отправка файла как есть в теле запроса. При этом нашей модели понадобится подсказка в какой параметр подложить этот файл - ее следует передать в заголовке X-Voicee-Body-Field:

      curl https://api.voicee.ru/v1/replicate/v1/models/voicee/transcribe/predictions -H "Authorization: Bearer tk-<token here>" -H "X-Voicee-Body-Field: input.audio" -H "Content-Type: application/octet-stream" --data-binary "@/path-to-file/audio.mp4"
      

      application/json

      Мы не рекомендуем пользоваться этим вариантом т.к. по проводу будет передаваться втрое больше байт и в будущем мы возможно перестанем его поддерживать, но сегодня он работает. Передавать файлы можно в виде строк внутри JSON предварительно откодировав их в base64. Пример не приводим сознательно.

    В обоих случаях в ответ вы получите айди задачки и статус:

    {"id": "<prediction_id>", "status": "processing", ...}
    
  2. Узнать статус обработки и получить результат

    Опрашивать статус обработки можно по айди задачки:

    curl https://api.voicee.ru/v1/replicate/v1/predictions/<prediction_id> -H "Authorization: Bearer tk-<token here>"
    

    Конечными статусами являются failed и succeeded.

    Формат вывода

    Ответом основной нашей модели является сложный словарь с траснкриптом разделенным на сегменты. Иногда такая сложность не нужна и нужно получить просто текст Вывод можно контролировать с заголовком X-Voicee-Output-Transformers. Пример:

    X-Voicee-Output-Transformers: text?speakers=false&timestamps=false&pauses=false
    

Работа с Replicate клиентом

Рядом с обычным API мы публикуем replicate совместимый API, чтобы вы могли использовать готовые библиотеки для работы с нашим API на множестве языков.

Полный список библиотек можно посмотреть на странице библиотек.

API ключ - используйте тот же ключ, который используете для обычного API

При создании клиента укажите baseUrl = https://api.voicee.ru/

В качестве модели используйте voicee/transcribe

Пример для Python:

  1. Установите библиотеку
pip install 'replicate<0.32.0'
  1. Установите токен и базовый URL в переменные окружения
export REPLICATE_API_TOKEN=<ваш ключ>
export REPLICATE_BASE_URL=https://api.voicee.ru/

или, если у вас уже есть .env файл с переменными окружения - добавьте их в него:

REPLICATE_API_TOKEN=<ваш ключ>
REPLICATE_BASE_URL=https://api.voicee.ru/

или, вы можете указать эти настройки прямо в коде приложения:

from replicate import Client

client = Client(base_url='https://api.voicee.ru/', api_token='Ваш ключ')

# дальше используйте client.run(...) вместо replicate.run(...)
  1. Запустите транскрибацию
import replicate

audio_file_url = "https://example.com/audio.mp3"

result = replicate.models.run(
    "voicee/transcribe",
    input={"url": audio_file_url},
)

print(result)
# output example TBD

predictions

Запустить обработку файла

Начать новую обработку файла с учетом выбранной модели и предоставленных входных данных.

Authorizations:
bearerAuth
Request Body schema: application/json
object

Входные данные модели в виде JSON объекта. Схема входных данных зависит от выбранной модели.

version
string

ID модели, которую вы хотите использовать для обработки.

webhook
string

HTTPS URL для получения веб-хука об изменении статуса обработки файла.

webhook_events_filter
Array of arrays

По умолчанию мы отправляем запросы на ваш URL веб-хука при появлении новых логов или при завершении обработки файла.

Responses

Request samples

Content type
application/json
{
  • "input": {},
  • "version": "transcribe",
  • "webhook": "string",
  • "webhook_events_filter": [ ]
}

Получить информацию об обработке файла

Получить текущее состояние обработки файла.

Authorizations:
bearerAuth
path Parameters
prediction_id
required
string

ID обработки файла для получения информации.

Responses

Response samples

Content type
application/json
{}

Задача transcribe: входные параметры

url
required
string

Ссылка на аудиофайл, который нужно транскрибировать. TBD список поддерживаемых форматов.

output_format
string
Default: "text"
Enum: "text" "json_verbose" "txt_file_url"

Формат результата.

{}

Задача transcribe: выходные параметры

Any of
string (TranscribeOutputText)
Example
"string"