Локальный speech-to-text сервер: как разработчики заменили SpeechKit и решили проблему казахского и узбекского языков
После расторжения партнёрства с Yandex Kazakhstan команда разработчиков создала полностью локальную систему речевой аналитики телефонных разговоров, работающую на одном сервере внутри контура заказчика. Решение на базе Whisper, Qwen2.5 и собственного слоя оркестрации не только обеспечивает безопасность данных, но и значительно улучшает распознавание казахского и узбекского языков по сравнению с облачным SpeechKit.
В конце 2025 года Yandex Kazakhstan разорвал партнёрское соглашение с командой, которая несколько лет использовала SpeechKit для распознавания речи и YandexGPT для смысловой оценки диалогов в своей речевой аналитике. Формальная причина — наличие у партнёра собственного продукта, пусть даже построенного на технологиях Yandex. Это событие подтолкнуло разработчиков к пересмотру архитектуры: они решили создать полностью локальное решение для распознавания речи, которое не зависит от облачных провайдеров и работает внутри инфраструктуры заказчика. Новая система ориентирована в первую очередь на компании, работающие с телефонными разговорами на смеси русского с казахским или узбекским языками, и уже показала лучшие результаты, чем SpeechKit, именно на этих языковых парах.
Ключевая особенность проекта — полная автономность: аудиозаписи и расшифровки не покидают периметр заказчика, что критично для соблюдения законодательства о персональных данных. В Казахстане закон № 94-V требует хранить персональные данные на территории республики, а для банков действует режим банковской тайны. В Узбекистане с 2026 года обязательная локализация распространена на биометрические и генетические данные, а также на данные пользователей телекоммуникационных услуг, однако для остальных категорий трансграничная передача допускается при выполнении условий закона, подзаконные акты по которым пока отсутствуют. Таким образом, локальное решение выводит компанию из зоны неопределённости и снимает юридические риски. Кроме того, средний и крупный бизнес всё чаще прямо требует, чтобы записи не покидали контролируемую инфраструктуру, а облачный ASR тарифицируется за минуту, что на больших объёмах делает собственный сервер экономически выгоднее.
Технически система представляет собой три процесса, работающих на одном сервере: Python/FastAPI с faster-whisper для распознавания речи, Ollama с моделью Qwen2.5 для последующей смысловой оценки и собственный ASR Service на TypeScript (Node.js, Fastify), который выступает оркестратором. Именно последний слой превращает набор библиотек в готовый сервис: он предоставляет единый HTTP API с авторизацией по токену и валидацией запросов по JSON-схеме, управляет очередью заданий в памяти и прогоняет каждое задание через фиксированную машину состояний. Задания проходят путь от draft до done, включая промежуточные состояния new, wave_ready, winner, refine и error. Переходами занимаются три независимых цикла-свитчера, каждый из которых работает на своём интервале и защищён флагом от повторного входа, что обеспечивает параллелизм в однопоточном Node.js без использования воркеров и внешних очередей.
Входные данные — стереозапись разговора с Asterisk, где менеджер и клиент находятся в разных каналах, что избавляет от необходимости диаризации. Однако качество связи оставляет желать лучшего: узкая полоса 8 кГц, mp3 64 кбит/с, joint stereo, менеджер часто говорит в трубку, а не в гарнитуру. К этому добавляется смешанная речь с переключением между русским и казахским или узбекским, а также разговорная лексика с заимствованиями. Облачные провайдеры, включая SpeechKit, показывают приемлемый результат на русском, но заметно проседают на казахском и узбекском. Локальная система, напротив, продемонстрировала значительно лучшее качество распознавания именно этих языков, хотя и в ущерб производительности. Разработчики отмечают, что готовых решений под такую комбинацию языков и условий нет, поэтому им пришлось построить собственный слой поверх Whisper и локальных LLM, включающий очередь заданий, ансамбль языковых проходов, фильтрацию галлюцинаций и формулу выбора лучшего результата.
Контекст проекта выходит за рамки одной компании. На рынке облачного распознавания речи существует несколько игроков, и команда, изучив альтернативы, отметила Gladia как решение, которое по качеству превосходит SpeechKit. Однако даже лучшие облачные сервисы не решают проблему передачи данных за пределы контура и не всегда хорошо справляются с языками народов Центральной Азии. В то же время локальные решения на базе Whisper и других открытых моделей набирают популярность благодаря росту доступной вычислительной мощности и оптимизациям вроде faster-whisper. Российский рынок также проявляет интерес к подобным системам: в условиях ужесточения требований к хранению персональных данных и импортозамещения локальные speech-to-text серверы становятся всё более востребованными. Разработчики подчёркивают, что их продукт — это не просто библиотека, а полноценный сервис с API, журналированием, страницей состояния и автоматической очисткой временных файлов.
По сравнению с альтернативами локальный сервер выигрывает в безопасности и качестве распознавания казахского и узбекского языков, но может уступать облачным решениям в скорости обработки и простоте масштабирования. Например, Whisper и локальные LLM обрабатывают один файл по запросу, тогда как предлагаемая система выстраивает очередь и управляет состояниями, что позволяет эффективно использовать ресурсы даже на одной видеокарте. Вопрос производительности остаётся открытым: чем больше языков и чем сложнее аудио, тем выше нагрузка. Тем не менее, для компаний, работающих с чувствительными данными и многоязычной речью, такой компромисс может быть оправдан. В дальнейшем команда планирует развивать систему, возможно, добавляя поддержку новых языков и улучшая алгоритмы выбора лучшего результата.
Перспективы локальных speech-to-text решений выглядят многообещающими. Рост вычислительных мощностей и появление всё более качественных открытых моделей позволяют создавать сервисы, не уступающие облачным аналогам, но при этом полностью контролируемые заказчиком. Открытые вопросы касаются масштабируемости, поддержки множества одновременных потоков и стоимости владения. Однако уже сейчас ясно, что отказ от облачных провайдеров в пользу локальных систем — это не только вопрос безопасности, но и возможность получить лучшее качество для специфических языковых пар. История команды, потерявшей партнёра, но нашедшей более гибкое и эффективное решение, иллюстрирует общий тренд на суверенизацию ИИ-инфраструктуры в корпоративном сегменте.