• AI
  • Backend
  • API
  • Streaming
  • Интеграция

Потоковое распознавание речи

Как мы сократили ожидание между голосовой записью и получением текста в чат-сервисе

В чат-продуктах скорость критична. Пользователь не хочет записывать сообщение, ждать полной загрузки файла и только потом получать распознавание.

Наша задача — убрать эти промежуточные технические шаги и дать результат быстрее.

Голосовой ввод на смартфоне
Для кого релевантен этот кейс:

Этот кейс особенно релевантен продуктам с голосовым вводом, чат-сценариями, мобильными клиентами и высокой чувствительностью к задержке между действием пользователя и результатом.

Особенно для:

  • Чатов и ассистентов
  • Сервисов заметок
  • CRM-систем с голосовым вводом
  • Любых продуктов, где голос должен быстро превращаться в текст

Проблема

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

Это добавляло лишний шаг, усложняло интеграцию на клиенте и увеличивало время ожидания для пользователя.

Проблема была не только в количестве действий. Пользовательский опыт страдал из-за того, что распознавание начиналось только после полной загрузки записи.

Даже если само распознавание происходило быстро, человек все равно ждал слишком долго между нажатием «стоп» и появлением текста.

Контекст проекта

Решение было реализовано в виде эндпоинта POST /chat/transcribe/stream. Его задача — принимать голосовую запись из мобильного приложения и возвращать распознанный текст.

Это не отдельный вспомогательный сервис, а часть пользовательского сценария чата, где важна не только точность распознавания, но и скорость ответа после завершения записи.

Что нужно было решить

Нужно было построить сценарий, в котором:

  • Приложение отправляет аудио напрямую на один адрес
  • Загрузка может начинаться еще во время записи
  • Сервер принимает данные порциями
  • Распознавание запускается сразу после полной доставки записи
  • Текст возвращается быстрее за счет исключения промежуточного хранилища

Решение

Мы реализовали потоковый эндпоинт, который принимает аудио напрямую из мобильного приложения.

Клиент начинает отправлять запись частями еще во время записи, а сервер накапливает полученные данные и подготавливает их к распознаванию.

Когда запись полностью доходит, сервис запускает распознавание и возвращает готовый текст.

Ключевое улучшение здесь не в «живой» расшифровке по словам, а в сокращении ожидания после завершения записи.

К моменту, когда пользователь нажимает «стоп», большая часть файла уже находится на сервере. Это делает переход от голоса к тексту заметно быстрее.

Как мы это реализовали

Разработчик тестирует speech-to-text API

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

Разные устройства и платформы отдают запись в разных форматах, а движок распознавания требует конкретный вход: WAV, 16-bit, 16 kHz, mono.

Поэтому внутри решения нужно было:

  • Корректно принимать streaming-данные по HTTP
  • Обрабатывать разные входные аудиоформаты с мобильных платформ
  • Конвертировать аудио в формат, нужный Whisper
  • Делать это без лишних промежуточных этапов и без тяжелого дискового пайплайна
  • Обеспечивать стабильность длинных соединений и учитывать риски proxy timeout
Именно сочетание потоковой доставки, подготовки аудио и передачи в движок распознавания стало основной инженерной ценностью этого кейса.

Ограничения решения

Важно понимать, что это не real-time streaming-распознавание, где текст появляется по словам.

Текст возвращается только после полной доставки записи на сервер. Также есть ограничение: до 25 МБ на одну загрузку.

Результат

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

Для продукта это заметное UX-улучшение: голосовой ввод ощущается как быстрый и естественный инструмент общения, а не как тяжелая операция с долгим ожиданием.

Для команды разработки это переход от разрозненного процесса с файловым хранилищем к более прямому и управляемому контуру обработки аудио.

Чат-приложение с транскрипцией голосового сообщения

Вашему продукту нужен быстрый и удобный голосовой ввод, который не заставляет пользователей ждать?

Мы поможем реализовать потоковую обработку аудио, сократить задержки и сделать переход от голоса к тексту максимально быстрым.

Обсудим ваш проект?