Производительность
Замеры осуществлялись разными людьми с помощью нашего бенчмарка на разных устройствах и разных интернет-соединениях. Вот результаты:
Real-Time Factor
< 1 - скорость обработки быстрее real-time.
Данные измерения получены для формата linear16 (raw PCM) без декодирования.При использовании сжатых форматов (opus, ogg-opus, mp3, aac и др.) к задержке добавляется 50–100 мс на декодирование в зависимости от кодека.Фактические значения latency зависят от скорости вашего интернет-соединения и могут отличаться.
Важно Токен передаётся заголовкомAuthorization: Bearer <ваш_токен>либо query-параметромtoken. Если переданы оба, приоритет у заголовка.
Из браузера доступен только query-параметр: WebSocket API не позволяет задавать
заголовки. Учитывайте, что токен в URL попадает в историю браузера и журналы
промежуточных прокси — для серверных интеграций предпочтительнее заголовок.
Пример потоковой транскрибации
Подключение к WebSocket
Подключение к WebSocket
Установите WebSocket-соединение с указанием токена авторизации.URL для подключения:Либо без токена в URL — с заголовком, как в REST-части API:Параметры подключения:
Формат аудио для отправки:
- Поддерживаемые частоты: 8000, 16000, 22050, 32000, 44100, 48000 Hz
- Каналы: 1 (mono) или 2 (stereo)
- Рекомендуемый формат: linear16 (int16 PCM, little-endian)
Отправка аудио
Отправка аудио
Отправляйте аудиоданные как бинарные WebSocket-сообщения.
Совет Размер чанков может быть произвольным. Сервер буферизует данные и обрабатывает их блоками по 300ms.
Авторизация заголовком (PCM16, 16000 Hz)
Авторизация заголовком (PCM16, 16000 Hz)
Серверным интеграциям удобнее передавать токен заголовком — тем же, что и в
REST-части API. Пример для телефонного профиля: raw PCM16, mono, 16000 Hz.
Параметр
additional_headers доступен в библиотеке websockets начиная с версии
14.0. В более ранних версиях используйте extra_headers.Получение результатов
Получение результатов
Сервер отправляет промежуточные результаты по мере обработки аудио.Промежуточный результат (type: partial):
Финальное сообщение (type: final):При завершении сессии (отправка пустого сообщения или закрытие соединения):
Обработка ошибок
Обработка ошибок
При возникновении ошибок сервер отправляет сообщение с описанием проблемы.Сообщение об ошибке (type: error):Пример ошибки авторизации:Коды ошибок:
HTTP 403 при подключении — токен не передан или неактивен. Соединение
отклоняется на этапе рукопожатия, поэтому описания причины в ответе нет:
проверьте, что токен передан заголовком либо query-параметром, и что ключ
активен в личном кабинете.Коды закрытия WebSocket:
Полный пример с микрофоном
Полный пример с микрофоном
Пример потоковой транскрибации с микрофона в реальном времени.
Зависимости Для работы с микрофоном установите: pip install pyaudio websockets
Поддерживаемые кодеки
API поддерживает широкий спектр аудиокодеков. Для минимальной задержки рекомендуется использовать raw PCM форматы.Рекомендуемые форматы (минимальная задержка)
Рекомендуемые форматы (минимальная задержка)
Raw PCM форматы — без накладных расходов на декодирование:
Эти форматы обрабатываются напрямую без декодирования, что обеспечивает минимальную задержку.
Сжатые форматы
Сжатые форматы
Lossless:
Современные кодеки:
Lossy форматы:
Контейнерные форматы:
Телефонные кодеки
Телефонные кодеки
Для интеграции с телефонными системами поддерживаются узкополосные кодеки:
Телефонные кодеки оптимизированы для узкой полосы пропускания.
Рекомендуется использовать с
sample_rate=8000.Примеры интеграции с UI
Мы подготовили готовые примеры для интеграции потоковой транскрибации в ваше веб-приложение. Выберите пример для вашего фреймворка:Интеграция в браузер (JavaScript)
Интеграция в браузер (JavaScript)
Пример интеграции потоковой транскрибации в веб-приложение с использованием Web Audio API.HTML-разметка:
React компонент
React компонент
Готовый React-компонент для потоковой транскрибации.
Vue 3 компонент
Vue 3 компонент
Пример компонента для Vue 3 с Composition API.