Бывает обычная жизненная ситуация: вы отправляете голосовое сообщение в Telegram своему ИИ-ассистенту, ждёте нормальный ответ, а в ответ получаете что-то странное.
Вы сказали по-русски:
«Проверь, пожалуйста, настройки OpenClaw, Telegram и распознавания речи».
А система услышала что-то вроде:
«Open club telegram proxy sensation reach…»
Сначала кажется: «Ну всё, Telegram опять сжал голосовое», «ИИ не понимает русский», «локальное распознавание речи — игрушка, а не рабочий инструмент».
Но в нашем случае проблема оказалась не в Telegram. И даже не в самой идее локального распознавания речи.
Проблема была в маршруте STT — speech-to-text, то есть в том, как голосовое сообщение превращается в текст.
Что именно пошло не так
В OpenClaw голосовые сообщения из Telegram расшифровывались локально через whisper.cpp.
На первый взгляд, всё выглядело правильно: голосовое пришло, система его обработала, текст появился. Но качество русского распознавания было нестабильным. Иногда текст был просто с ошибками, а иногда русская речь превращалась почти в английскую фонетическую кашу.
Фактическая схема была слабой:
whisper.cpp работал в авто-режиме, использовалась модель base, язык жёстко не фиксировался как русский, а словарной подсказки с важными терминами вообще не было.
То есть система сама пыталась угадать язык, сама пыталась понять контекст, при этом работала на небольшой модели. Для коротких, сжатых и шумных Telegram voice notes это плохая комбинация.
Почему это типичная проблема
Это не редкий случай и не уникальная поломка OpenClaw.
Локальный Whisper действительно может ошибаться на русском, особенно если используется маленькая модель уровня tiny или base, включено автоопределение языка, запись короткая, человек говорит быстро, звук сжат, вокруг шум, а в речи есть англоязычные названия, бренды, технические термины и имена.
Telegram-голосовые как раз часто такие: короткие, сжатые, записанные «на ходу», без студийного микрофона. И если в них звучат слова вроде OpenClaw, proxy, Telegram, STT, TTS, синтез речи, распознавание речи — маленькая модель может начать «достраивать» их как английские слова.
Важно: whisper.cpp официально поддерживает запуск через whisper-cli, выбор модели через -m, указание языка через -l LANG и initial prompt через --prompt; в документации также указано, что auto используется для автоопределения языка. (Hugging Face)
В чём была главная ошибка
Главная ошибка — оставить всё на auto.
Автоопределение языка удобно, когда вы не знаете, на каком языке будет запись. Но если вы точно знаете, что пользователь говорит по-русски, лучше не заставлять модель угадывать.
В нашем случае нужно было не спрашивать у системы: «Какой это язык?», а прямо сказать:
«Это русский. Распознавай как русский».
Вторая ошибка — использовать слишком маленькую модель.
Модель base быстрее и легче, но за скорость приходится платить точностью. В официальной документации whisper.cpp указаны разные модели: tiny, base, small, medium, large, а также их требования к памяти. Например, base занимает около 142 MiB на диске, а small — около 466 MiB, то есть она заметно тяжелее, но и потенциально качественнее для сложной речи. (GitHub)
Третья ошибка — отсутствие словарной подсказки.
Если ассистент работает в конкретной предметной области, ему нужно заранее подсказать важные слова: названия сервисов, брендов, терминов, имён, проектов. Иначе он будет распознавать их «как услышал».
Конкретное решение
Мы заменили слабую схему на более надёжную.
Было:
whisper-cli -m models/ggml-base.bin -f voice.wav -l auto
Стало:
whisper-cli \
-m models/ggml-small.bin \
-f voice.wav \
-l ru \
--prompt "OpenClaw, Telegram, прокси, синтез речи, распознавание речи, голосовые сообщения, локальный Whisper, STT, TTS" \
-nt \
-otxt
Что здесь важно:
-m models/ggml-small.bin — используем модель small, а не base.
-l ru — жёстко указываем русский язык.
--prompt — добавляем словарную подсказку с важными словами.
-nt — убираем таймкоды, если нужен просто текст.
-otxt — сохраняем результат в текстовый файл.
Перед этим голосовое лучше привести к нормальному WAV-формату:
ffmpeg -i voice.ogg -ar 16000 -ac 1 -c:a pcm_s16le voice.wav
В документации whisper.cpp отдельно показан пример конвертации аудио через ffmpeg в 16 kHz mono WAV перед запуском распознавания. (GitHub)
Что нужно зафиксировать в OpenClaw
В самой логике OpenClaw важно не оставлять STT-маршрут неопределённым.
Плохая логика:
STT route: auto
model: base
language: auto
prompt: empty
Хорошая логика:
STT route: local
engine: whisper.cpp
model: ggml-small.bin
language: ru
prompt: OpenClaw, Telegram, прокси, синтез речи, распознавание речи, STT, TTS
Смысл простой: если вы хотите стабильное распознавание русских голосовых, не надо отдавать ключевые решения на автоопределение. Надо явно сказать системе, каким движком пользоваться, какую модель брать, какой язык распознавать и какие слова считать важными.
Почему prompt реально помогает
Многие думают, что prompt нужен только для ChatGPT или больших языковых моделей. Но в распознавании речи подсказка тоже полезна.
Она не «гарантирует» стопроцентное попадание, но помогает модели выбрать более вероятный вариант среди похожих по звучанию слов.
Например, если в вашей теме часто встречаются слова:
OpenClaw, Telegram, прокси, синтез речи, распознавание речи, голосовые агенты, локальный Whisper, voice notes, STT, TTS,
то эти слова стоит положить в prompt.
Для другой сферы prompt будет другим. Например, для юридического бота туда можно добавить: договор, акт, счёт, УПД, контрагент, ИНН, КПП. Для медицинского ассистента — названия процедур, препаратов и клиник. Для образовательного бота — курс, модуль, задание, ученик, преподаватель, компетенции.
Что изменилось после настройки
После перехода на ggml-small.bin, указания -l ru и добавления prompt распознавание стало заметно стабильнее.
Русская речь перестала так часто «проваливаться» в английскую фонетику. Технические термины начали распознаваться ближе к реальности. Голосовые сообщения стали пригодны для дальнейшей обработки агентом: анализа, ответа, запуска сценариев и автоматизации.
Да, локальное распознавание всё равно не становится магией. Плохой микрофон, шум, очень короткие сообщения и нечёткая дикция могут портить результат. Но базовая проблема была решена не покупкой нового сервиса, а правильной настройкой уже имеющегося инструмента.
Мини-чеклист для тех, у кого такая же проблема
Проверьте четыре вещи.
Первое: какая модель используется. Если стоит tiny или base, для русского языка лучше попробовать small, medium или выше.
Второе: указан ли язык. Для русских голосовых лучше ставить ru, а не auto.
Третье: есть ли prompt. Добавьте туда имена, бренды, термины, названия проектов и типичные слова вашей предметной области.
Четвёртое: какой маршрут STT используется. Если система может выбирать между разными способами распознавания, лучше явно зафиксировать нужный маршрут, а не оставлять всё на автоматический выбор.
Главный вывод
Фраза «локальная расшифровка голосовых плохо работает» часто звучит как приговор. Но на практике это не всегда проблема технологии.
Очень часто причина проще: взяли слишком маленькую модель, оставили автоопределение языка, не дали словарную подсказку и ожидали качества, как у большого облачного сервиса.
В нашем случае OpenClaw в Telegram начал лучше понимать русские голосовые после трёх простых шагов:
перешли с base на small;
принудительно указали русский язык;
добавили prompt с важными словами.
И это хороший урок для всех, кто собирает локальных ИИ-агентов: качество зависит не только от модели, но и от маршрута, настроек и контекста.
Локальный ИИ может работать хорошо. Но его надо не просто включить — его надо настроить под вашу реальную речь, ваши задачи и ваши термины.
Если у вас тоже были странные ошибки с распознаванием голосовых, напишите в комментариях: какая модель стояла, какой язык был указан и какие слова система коверкала чаще всего. Соберём вместе полезный список лайфхаков по русскому STT для Telegram, OpenClaw и локальных ИИ-агентов.
Подписывайтесь на канал — здесь разбираем нейросети не на уровне «вау, ИИ всё изменит», а на уровне реальных настроек, ошибок, решений и рабочих сценариев. Сохраняйте статью, делитесь с теми, кто собирает Telegram-ботов и ИИ-ассистентов, и приносите свои кейсы: самые интересные разберём отдельно.