Whistle от Cactus Compute — компактная модель распознавания речи

Whistle — открытая модель Cactus Compute весом 16,9 МБ для локального распознавания речи на CPU. Семь языков, метки времени слов и Python API.

Whistle — модель распознавания речи, которую Cactus Compute представила 2 октября 2026 года. Она преобразует короткие аудиозаписи в текст и рассчитана на устройства, где важны небольшой размер модели и работа без отдельной видеокарты. Файл весит 16,9 МБ, а обработка выполняется на процессоре в том же движке C++, что и модель Needle.

Whistle предназначена прежде всего для разработчиков: её можно встроить в приложение через Python API или C-интерфейс, запустить из командной строки либо проверить в браузерном демонстрационном окне Cactus. Это не готовая программа для диктовки и не облачный сервис.

Что умеет Whistle

Распознаёт речь на семи языках

Модель принимает монофонический звук с частотой 16 кГц, обрабатывая за один проход запись длиной до 30 секунд. Whistle распознаёт английский, немецкий, французский, испанский, итальянский, нидерландский и польский языки. Язык можно определить автоматически или указать вручную. Русского в поддерживаемом списке пока нет.

Возвращает временные метки и учитывает нужные слова

Для каждого распознанного слова Whistle может вернуть время начала и окончания, а также оценку вероятности. Эти данные подходят, например, для подсветки слов в субтитрах, перехода к нужному фрагменту записи или редактирования аудио по словам.

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

Обрабатывает тишину и аудио без текста

Перед декодированием движок проверяет уровень сигнала. Если в записи тишина или ровный фоновый шум, Whistle возвращает пустой результат вместо выдуманной фразы. Отдельно можно получить аудиовектор — компактное представление звука для сопоставления и поиска без расшифровки в текст.

Размер, скорость и точность

Файл Whistle занимает 16,9 МБ против 145,3 МБ у Whisper Base — примерно в 8,6 раза меньше. В тесте на десятисекундной записи на процессоре Apple M4 Pro время до первого токена составило 11,1 мс у Whistle и 73,2 мс у Whisper Base. Это задержка до начала выдачи текста, а не время полной обработки записи. Скорость декодирования после первого токена в том же тесте составила 1 319 и 266 токенов в секунду соответственно; этот показатель не включает работу аудиокодировщика.

В опубликованных Cactus результатах Whistle показала меньшую долю ошибок, чем Whisper Base, на LibriSpeech test-clean и test-other, среднем наборе FLEURS, SPGISpeech и Earnings-22. Например, на test-clean указаны 4,31% против 4,9%, а на test-other — 10,49% против 11,0%. Чем ниже WER — доля слов, распознанных с ошибкой, — тем точнее транскрипция.

Это преимущество не распространяется на все тесты: в сравнении Cactus Whisper Base лучше на TED-LIUM, AMI и среднем результате MLS. Поэтому Whistle стоит оценивать на собственных записях и языках, а не по одному общему рейтингу. Условия тестов и пояснения к наборам опубликованы в официальном описании модели.

Локальная работа и совместимые платформы

Whistle запускается на CPU, не требует GPU и после загрузки модели обрабатывает аудио на устройстве. В браузерной демонстрации запись не отправляется на сервер; при первом запуске браузер скачивает файл модели. Для приложений Cactus выпускает готовые сборки движка для 17 целевых платформ: среди них macOS, Linux, Windows, Android, iOS, watchOS, tvOS, WebAssembly и WASI, а также системы на базе ARM, RISC-V и MIPS.

Веса модели доступны по лицензии Apache 2.0. Whistle использует тот же контейнер модели и движок, что и Needle, поэтому разработчику проще объединить распознавание речи с локальным вызовом функций. Например, приложение может принять короткую голосовую команду, распознать её и передать текст модели Needle для выбора действия.

Как попробовать

Запуск через Python

Для записи WAV с частотой 16 кГц достаточно установить пакет и вызвать функцию транскрибации:

pip install cactus-needle
import needle

result = needle.transcribe("clip.wav")
print(result["text"])

Для других частот дискретизации и захвата звука с микрофона понадобится дополнительный пакет: pip install "cactus-needle[mic]". Команда needle whistle playground открывает распознавание с микрофона в терминале, а needle whistle compare запускает один и тот же файл через Whistle, Whisper и Moonshine с выводом времени обработки.

Кому подойдёт модель

Whistle может быть полезна разработчикам мобильных и настольных приложений, носимой электроники, устройств умного дома и робототехники, если им нужно распознавать короткие фразы локально и на обычном процессоре. Для русскоязычной расшифровки эта модель пока не подходит; из компактных решений для сравнения можно посмотреть Phonon-2.

Демонстрация и инструкция находятся в официальном анонсе Cactus. Веса опубликованы на Hugging Face, исходный код и движок — в репозитории GitHub. Данные тестов и замечания о сравнении с Whisper также приведены в публикации Cactus Compute.