Проблема фрагментации ASR-стека
Создатель проекта Cjpais (автор приложения Handy) столкнулся с критическими проблемами при распространении кроссплатформенных приложений с распознаванием речи. Существующий стек состоял из whisper.cpp и ONNX, что требовало поддержки двух разных движков и конвертации моделей. Попытки использовать MLX для Apple добавляли еще одну зависимость. Многие альтернативные библиотеки имели неизвестных авторов, отсутствие тестирования и не были оптимизированы для CPU/GPU, оставляя производительность на столе.
Решение: единый движок на базе ggml
Transcribe.cpp (версия v0.1.0) позиционируется как прямой, совместимый с whisper.cpp движок инференса, но с гораздо более широким охватом. Ключевые технические особенности:
- Поддержка моделей: 16 семейств ASR, более 60 конкретных моделей (все из репозитория handy-computer на Hugging Face).
- Аппаратное ускорение: Vulkan, Metal, CUDA и TinyBLAS. Поддержка GPU является базовым требованием для локального инференса.
- Точность: Каждая модель прошла численную валидацию относительно референсной реализации и полный цикл тестирования WER (Word Error Rate) на тысячах высказываний. Результаты публикуются в репозитории.
- Кроссплатформенность: Работает на Mac, Windows и Linux. Поддерживает потоковую (Streaming) и пакетную (Batch) транскрипцию.
Сравнение возможностей и экосистемы
Библиотека создана для решения проблемы «распределения» (distribution) локального AI. В отличие от многих демо-проектов, transcribe.cpp предоставляет официальные привязки (bindings) для популярных языков, что критично для интеграции в десктопные и мобильные приложения.
| Характеристика | Transcribe.cpp | Typical Alternatives (ONNX/Whisper.cpp) |
|---|---|---|
| Количество поддерживаемых моделей | 60+ (16 семейств) | 1-2 (Whisper, иногда другие) |
| Аппаратное ускорение | Vulkan, Metal, CUDA, TinyBLAS | Часто только CPU или ограниченный GPU |
| Валидация точности (WER) | Полная, опубликованные данные | Отсутствует или непрозрачна |
| Языковые привязки (Bindings) | Python, JS/TS, Rust, ObjC/Swift | Часто отсутствуют или требуют ручной настройки |
| Совместимость с .bin | Да (drop-in replacement для whisper.cpp) | Зависит от формата |
Производительность и доступность
Проект демонстрирует, что локальная транскрипция может быть эффективной даже на слабом железе. Тесты на процессоре Ryzen 4750U (Fedora + Vulkan) и чипе M4 Max показывают, что современные модели SOTA работают быстрее реального времени (faster than real-time) при потреблении энергии в несколько ватт. Отмечается, что даже на ARM-чипе RK3566 транскрипция возможна быстрее реального времени.
Поддержка и будущее
Проект получил поддержку от Mozilla AI (программа BiR), Modal (кредиты для тестирования CUDA) и Blacksmith (CI/CD). Автор подчеркивает, что transcribe.cpp — это не просто код, а инфраструктурный шаг к тому, чтобы локальный AI стал стандартом для десктопных приложений, избавляя пользователей от необходимости отправлять голос в облако.
Источник: Cjpais ↗
