Перейти к содержанию
суббота, 17 октября 2026 г.

ИИ Вестник

Главные новости о развитии искусственного интеллекта в России

Свой ASR против облака: как обычный CPU справляется с живыми субтитрами на русском

Источник: Все публикации в потоке Разработка
Developer monitoring live Russian subtitles on a desktop CPU server setup.
Generated by Sourceful Riverflow (RouterAI)

Разработчик сервиса онлайн-встреч один на один сравнил облачное распознавание речи в реальном времени с открытыми моделями на сервере без видеокарты. Главный вывод оказался не про модели, а про железо: устаревший Xeon без AVX2 обходится в разы дороже современного, а число ядер в тарифе хостера ничего не говорит о реальной ёмкости. Замеры проводились на двух машинах с разными методиками, поэтому строго сопоставима только стоимость одного чанка акустической модели.

Автор сервиса для онлайн-встреч один на один с расшифровкой 121ai.online поставил перед собой практическую задачу: получить живые субтитры на русском языке для созвонов, где аудио не должно покидать сервер в России, а часов общения может быть много. Облачный Deepgram он использует сейчас, но хотел понять, можно ли с него уйти, не потеряв в задержке и предсказуемости цены. Для этого он развернул тестовый стенд и прогнал один и тот же код на двух серверах, сравнив облачное распознавание в реальном времени с открытыми моделями T-one, GigaAM и Vosk на обычном CPU. Требования к распознаванию были сформулированы жёстко: фраза должна появляться не позже чем через две секунды после того, как её договорили, по 95-му перцентилю, а стоимость часа должна оставаться предсказуемой.

Ключевой результат касается не столько качества моделей, сколько стоимости вычислений на конкретном железе. Один чанк акустической модели на ядре Xeon 2013 года без поддержки AVX2 обходится в 2,5 раза дороже, чем на современном Xeon с AVX2, а под полной нагрузкой разрыв доходит до пяти раз. В пересчёте на дорожки это означает примерно 32 против 5, хотя автор оговаривает, что цифру нужно читать с поправкой на методику. Машина A представляла собой Xeon с AVX2, 8 vCPU и 15 ГБ RAM, где измерялась только акустическая модель через onnxruntime с батчем одинаковых чанков и жадным декодером. Машина B — Xeon E5-2680 v2 2013 года на 2,8 ГГц, 6 vCPU под KVM и 11,6 ГБ RAM, где из векторных расширений были только SSE4.2 и AVX, без AVX2 и FMA, и где измерялся полный пайплайн: акустика, сплиттер по паузам и декодер для двух дорожек.

Методика на второй машине предполагала, что раз в 300 миллисекунд все активные дорожки получают очередной чанк, а измеряется время акустики, время декода, их сумма и отставание от расписания. Машина держит N дорожек, если 95-й перцентиль времени тика меньше 300 миллисекунд, а накопленное отставание к концу минуты не превышает секунды; на каждую точку отводилось 60 секунд замера после шести секунд прогрева. Сравнивались два режима работы: batch, где один вызов модели обслуживает все дорожки через onnxruntime с тремя потоками, и threads, где каждая дорожка живёт в своём рабочем потоке Python с одним потоком onnxruntime. Аудио для нагрузки бралось из пакета T-one — образцы колл-центра с частотой 8 кГц, зацикленные для создания постоянной нагрузки. Автор отдельно подчёркивает, что методики на двух машинах разные, поэтому строго сопоставима лишь цена одного чанка при том же коде и той же модели, а оценка ёмкости в дорожках на первой машине, скорее всего, завышена, поскольку полный пайплайн там не гонялся.

В контексте выбора моделей автор перечисляет, что обещают разработчики, и предупреждает, что цифры WER получены на разных наборах и сравнивать их между строками нельзя. T-one показывает 8,63 на call-center, 6,20 на прочей телефонии и 5,32 на Common Voice, тогда как Whisper large-v3 в той же таблице авторов даёт на call-center 19,39. GigaAM-v3 RNNT в среднем показывает 8,3 по десяти наборам и 9,5 на call-center, а её end-to-end вариант с пунктуацией — 11,2. Vosk ru-0.42 даёт 36,0 на openstt calls и 19,5 на youtube, а small-модель на Golos crowd — 11,79. Для Deepgram публичных цифр WER по русскому языку автор не нашёл вовсе. Из облаков в сравнении участвовал только Deepgram, поскольку для замеров бралось то, что доступно сразу, без договора и согласований; внутри России при схожих требованиях он советует присмотреться к Yandex SpeechKit.

Часть кандидатов отпала по объективным причинам. Chrome Web Speech с processLocally работает только в Chrome и только на машине пользователя, это другой класс решения. Экспериментальный Google AI Edge Foresight распознаёт всё локально, но работает только на Mac с Apple Silicon и на практике понимает только английский. Сторонний Embedding Gemma Transcribe сводит распознавание к поиску ближайшего слова в словаре примерно из 229 тысяч английских слов, поэтому русского там нет и быть не может. Whistle от Cactus Compute с моделью на 17 МБ работает на CPU и в WASM, но русского языка в ней нет: пять русских фраз из пяти превратились в псевдопольский и псевдонемецкий, плюс телеметрия включена по умолчанию. Направление локального распознавания автор считает перспективным для приватных заметок на ноутбуке, но для русской речи на сервере пока не вариантом.

Для российского рынка вывод статьи имеет практическое значение: считать окупаемость собственного ASR по числу ядер в тарифе хостера бессмысленно, поскольку решающую роль играют векторные расширения и поколение процессора. Это особенно важно для команд, которые рассматривают отказ от зарубежных облачных API из-за требований к хранению данных внутри страны, но не готовы покупать GPU. Автор открыл код стенда в репозиториях на GitHub и GitVerse, и самым полезным его элементом называет не бенчмарк, а зонд acoustic.py, который зависит только от onnxruntime, ставится за минуту и за ещё одну отвечает, сколько стоит один чанк на конкретном сервере. Такой инструмент позволяет провести собственный замер до того, как принимать решение о миграции, и сопоставить его с ценой облачного часа.

Сравнение с альтернативами остаётся неполным: публичных данных по WER Deepgram для русского нет, а методики замеров на двух машинах различаются, поэтому ёмкость в дорожках на современном Xeon требует отдельной проверки полным пайплайном. Открытыми остаются вопросы о том, как поведёт себя выбранная конфигурация при реальном разнообразии речи, а не на зацикленных образцах колл-центра, и насколько устойчивой окажется задержка при пиковой нагрузке. Тем не менее главный тезис сформулирован достаточно ясно: перед отказом от облачного распознавания стоит измерить стоимость чанка на своём железе, а не ориентироваться на количество ядер, и уже по результатам решать, тянет ли обычный CPU живые субтитры в звонке.

Читайте также