- AI
- Backend
- API
- Streaming
- Интеграция
Потоковое распознавание речи
В чат-продуктах скорость критична. Пользователь не хочет записывать сообщение, ждать полной загрузки файла и только потом получать распознавание.
Наша задача — убрать эти промежуточные технические шаги и дать результат быстрее.

Этот кейс особенно релевантен продуктам с голосовым вводом, чат-сценариями, мобильными клиентами и высокой чувствительностью к задержке между действием пользователя и результатом.
Особенно для:
- Чатов и ассистентов
- Сервисов заметок
- CRM-систем с голосовым вводом
- Любых продуктов, где голос должен быстро превращаться в текст
Проблема
Раньше сценарий был длиннее и тяжелее: аудио сначала нужно было загрузить в файловое хранилище, получить идентификатор файла и только потом отправить запись на распознавание.
Это добавляло лишний шаг, усложняло интеграцию на клиенте и увеличивало время ожидания для пользователя.
Проблема была не только в количестве действий. Пользовательский опыт страдал из-за того, что распознавание начиналось только после полной загрузки записи.
Даже если само распознавание происходило быстро, человек все равно ждал слишком долго между нажатием «стоп» и появлением текста.
Контекст проекта
Решение было реализовано в виде эндпоинта POST /chat/transcribe/stream. Его задача — принимать голосовую запись из мобильного приложения и возвращать распознанный текст.
Это не отдельный вспомогательный сервис, а часть пользовательского сценария чата, где важна не только точность распознавания, но и скорость ответа после завершения записи.
Что нужно было решить
Нужно было построить сценарий, в котором:
- Приложение отправляет аудио напрямую на один адрес
- Загрузка может начинаться еще во время записи
- Сервер принимает данные порциями
- Распознавание запускается сразу после полной доставки записи
- Текст возвращается быстрее за счет исключения промежуточного хранилища
Решение
Мы реализовали потоковый эндпоинт, который принимает аудио напрямую из мобильного приложения.
Клиент начинает отправлять запись частями еще во время записи, а сервер накапливает полученные данные и подготавливает их к распознаванию.
Когда запись полностью доходит, сервис запускает распознавание и возвращает готовый текст.
Ключевое улучшение здесь не в «живой» расшифровке по словам, а в сокращении ожидания после завершения записи.
К моменту, когда пользователь нажимает «стоп», большая часть файла уже находится на сервере. Это делает переход от голоса к тексту заметно быстрее.
Как мы это реализовали

Основная сложность была не в самом распознавании, а в надежной доставке и подготовке аудио.
Разные устройства и платформы отдают запись в разных форматах, а движок распознавания требует конкретный вход: WAV, 16-bit, 16 kHz, mono.
Поэтому внутри решения нужно было:
- Корректно принимать streaming-данные по HTTP
- Обрабатывать разные входные аудиоформаты с мобильных платформ
- Конвертировать аудио в формат, нужный Whisper
- Делать это без лишних промежуточных этапов и без тяжелого дискового пайплайна
- Обеспечивать стабильность длинных соединений и учитывать риски proxy timeout
Ограничения решения
Важно понимать, что это не real-time streaming-распознавание, где текст появляется по словам.
Текст возвращается только после полной доставки записи на сервер. Также есть ограничение: до 25 МБ на одну загрузку.
Результат
В результате получился более короткий и быстрый сценарий: приложение записывает голос и параллельно отправляет данные на сервер, поэтому пользователь получает текст почти сразу после остановки записи.
Для продукта это заметное UX-улучшение: голосовой ввод ощущается как быстрый и естественный инструмент общения, а не как тяжелая операция с долгим ожиданием.
Для команды разработки это переход от разрозненного процесса с файловым хранилищем к более прямому и управляемому контуру обработки аудио.

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