Автор Handy выпустил библиотеку transcribe.cpp — движок для распознавания речи на базе ggml. Причина простая: распространять кросс-платформенные ASR-приложения оказалось «ужасно». Фактически есть только whisper.cpp и ONNX. Можно воткнуть MLX для устройств Apple, но придётся тащить два движка и адаптировать модели под каждый. Случайные библиотеки с неизвестными авторами и без тестов вызывают только вопросы: кто будет поддерживать, быстрее ли это ONNX, можно ли вообще встроить в приложение?
transcribe.cpp решает именно эти проблемы. Движок ускоряется через Vulkan, Metal, CUDA и TinyBLAS — автор считает поддержку Vulkan минимальным требованием для любого локального софта. На данный момент поддерживается 16 семейств ASR-моделей (более 60 штук), скоро добавят ещё. Каждую модель численно сверяют с эталонной реализацией и прогоняют через WER-тесты на тысячах фраз — результаты публикуют в репозитории и на Hugging Face.
Библиотека почти полностью совместима с whisper.cpp: те же популярные .bin файлы, Handy переехал безболезненно. Прямо из коробки идут биндинги для Python, JavaScript/TypeScript, Rust и ObjC/Swift — автор считает это обязательным для реального распространения. Работает на Mac, Windows и Linux.
Проект поддержали Mozilla AI (их программа BiR), Modal (дали кредиты на WER-тесты и проверку CUDA), Blacksmith (помог с CI/CD) и Hugging Face. Сам ggml, по словам автора, «делает распространение локального инференса простым и возможным».
Локальное распознавание, уверен автор, — не мечта, а факт: даже RK3566 тянет модели быстрее реального времени на своём слабом CPU. Потребление — единицы ватт. transcribe.cpp — шаг к тому, чтобы запускать инференс локально было проще, а отправить голос в облако — не обязательно.