[Документация Yandex Cloud](../../index.md) > [Yandex SpeechKit Hybrid](../index.md) > [Распознавание речи](index.md) > Тестирование производительности

# Тестирование производительности для распознавания речи

Чтобы оценить производительность сервиса распознавания речи вашей инсталляции SpeechKit Hybrid, используйте [контейнер с утилитой тестирования](#test-order-asr). Эта утилита выполняет синтетические тесты на основе подготовленного набора аудиофайлов.

## Тесты и ожидаемые результаты {#test-asr-description}

{% note info %}

Результаты тестирования зависят от конфигурации вашего оборудования и требований к скорости ответа системы.

{% endnote %}

Сервис SpeechKit предназначен для распознавания речи в режиме реального времени. При этом информация передается в двух потоках данных — от пользователя к серверу и от сервера к пользователю. Утилита тестирования использует эти потоки, имитируя реальную нагрузку на сервис. Число одновременно активных каналов в потоке задается параметром `CONNECTIONS` в [настройках утилиты](#test-order-asr). В лог контейнера записываются метрики потоковой обработки аудиоданных сервисом.

Распознавание речи происходит порциями до момента окончания потока данных. Промежуточные результаты распознавания каждой порции аудио (части фразы) отправляются пользователю с задержкой. Полный результат распознавания возвращается в потоке от сервиса к пользователю после получения последней порции аудио (также с задержкой).

<q>Отзывчивость</q> сервиса описывает метрика `q99` — квантиль уровня `0.99` времени ответа сервиса на последний фрагмент данных (время ответа в 99% случаев меньше или равно величине квантиля). Например, пользователь закончил отправлять аудиопоток в момент времени `T0`, ответ получил в момент времени `T1`. Время отклика `T1-T0` — характеристика того, насколько обработка всей сессии отстала от реального времени.

Пример фрагмента лога тестирования со значением квантиля `q99`:

```text
INFO: 2021-09-22 13:48:25.677 +0000 load_test.cpp:110 Last chunk latency
INFO: 2021-09-22 13:48:25.677 +0000 load_test.cpp:119 q=0.99: 200ms
```

Контейнеры SpeechKit Hybrid рассчитаны на то, чтобы поддерживать [указанное количество каналов для двух рекомендованных конфигураций сервера](../system-requirements.md#hardware). При таких характеристиках величина `q99` не превышает 600 мс. Увеличивайте `CONNECTIONS` до тех пор, пока значение метрики `q99` не выйдет за этот порог. Результаты тестирования помогут оценить производительность вашей инсталляции и то, насколько увеличение числа активных каналов влияет на задержку ответа сервиса.

## Порядок проведения тестирования {#test-order-asr}

1. Скачайте контейнер с тестами:

   ```bash
   docker pull cr.yandexcloud.kz/${REGISTRY_ID}/stt-tools
   ```

1. Запустите контейнер `stt-tools`:

   ```bash
   docker run -it --network=host \
      --env ENVOY_HOST="0.0.0.0" \
      --env ENVOY_PORT=8080 \
      --env CONNECTIONS=10 \
      stt-tools
   ```

   Где:

   * `ENVOY_HOST` — IP-адрес сервиса распознавания. Если тесты запускаются на том же сервере, что и сервис распознавания, укажите значение `0.0.0.0`.
   * `ENVOY_PORT` — порт сервиса распознавания (по умолчанию `8080`).
   * `CONNECTIONS` — количество одновременно активных каналов.

1. Результаты теста будут доступны в логах контейнера:

   ```bash
   docker logs stt-tools
   ```