Вчера я написал API-сервер для Vocalinux. Сегодня нашёл audio.cpp с тем же API
10 сентября я опубликовал разбор локального API-сервера на 220 строк, который подключил GigaAM к Vocalinux через OpenAI-совместимый интерфейс. Утром 11 сентября обнаружился audio.cpp: универсальный C++-движок со встроенным /v1/audio/transcriptions, готовым сервером и десятками аудиомоделей. Совпадение выглядит почти издевательски точным, но вчерашнее решение не устарело — audio.cpp пока не поддерживает GigaAM.
1. Между релизом audio.cpp и моей статьёй прошло три дня
Версия audio.cpp 0.7.3 вышла 7 сентября 2026 года. Статья о связке Vocalinux, transcribe.cpp и GigaAM была опубликована 10 сентября, а новый проект попался на глаза ещё через сутки. Получилась редкая ситуация: практическое решение было собрано буквально рядом по времени с развитием более общего инструмента, о котором автор решения ещё не знал.
Сам audio.cpp тоже появился совсем недавно: первая волна релизов началась 25 июня 2026 года. Уже к версии 0.7 от 26 августа проект заявлял 62 семейства и более 85 вариантов моделей — не только распознавание речи, но и TTS, клонирование голоса, VAD, диаризацию, разделение дорожек, генерацию музыки и редактирование аудио. Для сравнения, вчерашний transcribe.cpp описывался как движок для 16 семейств и 60+ вариантов, то есть audio.cpp сразу метит не в ещё один STT-бэкенд, а в роль общего локального аудиостека.
2. Vocalinux можно подключить к audio.cpp без самописного адаптера
Совпало не только назначение, но и формат подключения. Vocalinux записывает WAV в формате 16 кГц, mono, PCM 16 bit и отправляет multipart-запрос на POST /v1/audio/transcriptions. Сервер audio.cpp принимает тот же multipart-формат: обязательные поля file и model, необязательное поле language, ответ с ключом text.
Vocalinux
-> POST 127.0.0.1:8080/v1/audio/transcriptions
-> audiocpp_server
-> Qwen3-ASR GGUF
-> Vulkan / Intel Iris Xe
Это означает, что отдельный Python-адаптер для поддерживаемой модели не нужен вообще. В настройках Vocalinux достаточно выбрать Remote Server, указать адрес http://127.0.0.1:8080, endpoint OpenAI/FunASR и идентификатор модели qwen3-asr. На схеме исчезают примерно 220 строк собственного сервера, Python bindings и ручная передача вызова в libtranscribe.so.
3. Главная оговорка: файл GigaAM на 261 МБ перенести нельзя
Первое желание — заменить вчерашний сервис на audiocpp_server, указать путь к gigaam-v3-e2e-rnnt-Q8_0.gguf и закончить настройку. Но повторяется тот же урок, что и с whisper.cpp: формат GGUF не является универсальным интерфейсом к архитектуре модели. В актуальных таблицах audio.cpp 0.7.3 GigaAM отсутствует, поэтому существующий файл размером 261 МБ этот движок не загрузит.
| Вариант для Vocalinux | Модель | Размер весов | Что требуется |
|---|---|---|---|
| Текущая рабочая связка | GigaAM v3 E2E-RNNT Q8_0 | 261 МБ | transcribe.cpp + API-адаптер |
| Прямое подключение audio.cpp | Qwen3-ASR 0.6B Q8_0 | 1,15 ГБ | только audiocpp_server |
| Будущий идеальный вариант | GigaAM в audio.cpp | пока неизвестно | новый model port |
Официальный Q8-пакет Qwen3-ASR 0.6B занимает 1,15 ГБ, то есть примерно в 4,4 раза больше GigaAM. Зато модель понимает 30 языков, включая русский, и умеет streaming-режим. Для короткой русской диктовки компактная GigaAM остаётся сильным кандидатом; для смешанной речи и технических терминов Qwen3-ASR выглядит интереснее, но это надо измерить на одинаковом звуке.
Практический вывод: audio.cpp уже может заменить самописный API-сервер, но только вместе с заменой модели. Для сохранения GigaAM рабочая связка из предыдущего эксперимента с Vocalinux пока остаётся актуальной.
4. В моей системе audio.cpp логично поставить вторым бэкендом
Самая безопасная адаптация — не ломать сервис GigaAM на порту 8765, а поднять audio.cpp рядом на порту 8080. Vocalinux хранит URL и идентификатор remote-модели в конфигурации, поэтому переключение между двумя вариантами не требует патча приложения. GigaAM остаётся ежедневным русским диктовщиком, audio.cpp становится экспериментальным полигоном.
{
"host": "127.0.0.1",
"port": 8080,
"backend": "vulkan",
"lazy_load": false,
"models": [{
"id": "qwen3-asr",
"family": "qwen3_asr",
"path": "/opt/audio.cpp/models/qwen3-asr-0.6b-q8_0.gguf",
"task": "asr",
"mode": "offline"
}]
}
Для Linux проект предлагает отдельную Vulkan-сборку, а официальные релизы содержат готовые Ubuntu x64 binaries с CPU и Vulkan. На Debian надёжнее начать со сборки только нужного семейства: scripts/build_linux.sh --backend vulkan --model-set custom --models qwen3_asr --target audiocpp_server. Требование проекта — GCC 13 или новее, CMake и Vulkan SDK; это немного тяжелее вчерашней сборки, зато на выходе получается готовый API-сервер без собственного Python-кода.
5. Первый честный тест — 50 фраз, а не четыре красивые демозаписи
audio.cpp заявляет впечатляющие цифры: отдельные TTS-пути работают в 1,8–8 раз быстрее Python reference, а Q8 на некоторых моделях уменьшает peak VRAM до 37%. Эти измерения относятся к конкретным CUDA-моделям и ничего не доказывают для Qwen3-ASR на Intel Iris Xe через Vulkan. Повторять рекламную цифру как результат диктовки было бы неправильно.
Для Vocalinux нужен свой небольшой корпус из 50 одинаковых WAV-файлов: 25 фраз на русском, 15 со смесью русского и английского, 10 с названиями библиотек, командами и фрагментами кода. Каждый файл следует прогнать через GigaAM и Qwen3-ASR не менее 5 раз после одного холодного запуска. Сравнивать надо WER, потерянную пунктуацию, задержку первого и прогретого запроса, RSS процесса и занятую видеопамять.
Вчерашний воспроизводимый ориентир уже есть: 11 секунд аудио GigaAM обработала за 1,2247 секунды, то есть примерно в 9 раз быстрее реального времени, а сервис с моделью занимал около 329 МБ RAM. Именно эти две цифры превращают следующий эксперимент из обзора README в нормальное сравнение. Если Qwen3 окажется точнее на смешанной речи, но потребует в 4–5 раз больше памяти, выбор будет зависеть от сценария, а не от количества моделей на главной странице.
6. audio.cpp может объединить распознавание, синтез и обработку звука
Для Vocalinux сейчас важен один endpoint, но audio.cpp умеет больше. Тот же сервер предоставляет /v1/audio/speech для синтеза, подробный transcription endpoint с временными метками и speaker labels, а также экспериментальные JSON pipelines. В версии 0.7.3 появился /v1/audio/transcriptions/details, а основной список уже включает VAD, диаризацию до 4 спикеров, source separation и принудительное выравнивание текста со звуком.
Это хорошо сочетается с другими локальными аудиоэкспериментами в разделе «Эксперименты с ИИ». Например, ACE-Step 1.5 уже рассматривался как локальная альтернатива облачной генерации музыки; теперь его семейство тоже присутствует в общей экосистеме audio.cpp. Вместо отдельного окружения под каждый опыт постепенно вырисовывается один C++ runtime, один model manager и один API.
Но слово «один» пока требует звёздочки. Инференс и встроенный WebUI действительно работают без Python, однако некоторые операции подготовки и конвертации моделей всё ещё могут вызывать Python model manager. Кроме того, авторы прямо называют CUDA оптимизированным путём, а Vulkan, Metal, HIP и CPU — вариантами переносимости и тестирования, где скорость и покрытие моделей могут быть ниже.
7. Локальный API надо оставить локальным
audio.cpp не превращает речевой сервер в безопасный облачный сервис автоматически. Для одного ноутбука адрес 127.0.0.1 правильнее, чем 0.0.0.0: порт 8080 тогда недоступен другим устройствам сети. Vocalinux ждёт ответ не более 30 секунд, поэтому модель желательно прогреть до первой диктовки или отключить lazy loading.
Если сервер позже переедет на отдельный компьютер, документация Vocalinux рекомендует HTTPS и API key даже для мобильных клиентов в локальной сети. WAV содержит исходную речь, а не безобидные токены; перехват такого запроса раскрывает всё произнесённое. Для домашнего эксперимента достаточно loopback-интерфейса, для LAN уже нужен reverse proxy с аутентификацией.
Выходит, вчерашний вечер я потратил не зря
Можно было полезть в код Vocalinux и намертво привязать его к GigaAM. Вместо этого я оставил приложение в покое и подключил новый движок через обычный HTTP API. Появление audio.cpp ещё раз подтверждает, что подход был правильным: Vocalinux не зависит от конкретного движка, а за одним и тем же endpoint можно поставить другой локальный сервер.
Пока GigaAM продолжит работать на порту 8765, а Qwen3-ASR можно поднять через audio.cpp на 8080 и сравнить их на 50 фразах с тем же Intel Iris Xe. Если в audio.cpp однажды появится поддержка GigaAM, 220 строк Python действительно станут не нужны. Но вчера они решили реальную задачу, а найденный через сутки проект показал, что вся схема была собрана в правильном направлении.
Как проверялось: даты релизов, список моделей, форматы API, build options и ограничения бэкендов сверены 11 сентября 2026 года с официальными репозиториями audio.cpp и Vocalinux и с пакетом GGUF на Hugging Face. Установка audio.cpp на Intel Iris Xe и сравнение 50 фраз описаны как план следующего теста; результаты им не приписываются.