Главная / Статьи / audio.cpp: кроссплатформенное распознавание речи и TTS на чистом C++

audio.cpp: кроссплатформенное распознавание речи и TTS на чистом C++

Собираем audio.cpp с Metal, Vulkan или CUDA, ставим модели и запускаем транскрипцию Parakeet и клонирование голоса VoxCPM2 без среды Python.

833 слов

Python-библиотеки для работы с речью на Mac хороши, пока не нужно запустить тот же код где-то ещё. Хороший пример — mlx-audio. Она построена на фреймворке Apple MLX, быстро выполняет инференс на Apple Silicon и из коробки поддерживает десятки моделей распознавания и синтеза речи. Её ограничение — переносимость: она сделана под Mac. audio.cpp идёт противоположным путём. Это движок инференса речи с открытым исходным кодом, написанный на обычном C++ поверх среды ggml, с бэкендами Metal, Vulkan и CUDA для быстрого инференса на GPU.

Что он умеет

  • Запускает длинный список популярных открытых моделей ASR и TTS.
  • Работает на Windows, macOS и Linux.
  • Использует стек ggml, так что можно выбрать CUDA, HIP/ROCm, Vulkan, Metal или просто CPU.
  • Поддерживает JSON-пайплайны, чтобы связывать шаги в более крупные процессы.
  • Включает утилиты для шумоподавления, улучшения звука, ресемплинга и STFT/ISTFT.

Какие модели можно запустить

Для синтеза речи есть, среди прочих, Qwen3-TTS, VibeVoice, VoxCPM2, Fun-CosyVoice3, семейство IndexTTS-2, Higgs Audio v3, Fish Audio S2 Pro, Kokoro 82M, OmniVoice, Chatterbox, BreezeTTS 2 и Supertonic 3.

В распознавание речи входят два размера Qwen3-ASR (0.6B и 1.7B), Fun-ASR-Nano, Higgs Audio v3 STT, VibeVoice ASR в обычном и потоковом вариантах, Nemotron 3.5 ASR Streaming и Voxtral-Mini-4B-Realtime.

Генерацию музыки покрывают MiniMax Music 3, ACE-Step 1.5 Turbo, версии Small и Medium модели Stable Audio 3 и не только.

Локальная сборка

Сначала скачайте код:

git clone https://github.com/0xShug0/audio.cpp.git
cd audio.cpp

Затем соберите под тот бэкенд, который подходит вашему железу. На Linux с Vulkan:

scripts/build_linux.sh --backend vulkan --target audiocpp_cli --target audiocpp_server

На Linux с видеокартой NVIDIA вместо этого используйте CUDA: можно дать сборке самой определить архитектуру или указать конкретные:

scripts/build_linux.sh --backend cuda --cuda-arch native --target audiocpp_cli --target audiocpp_server
scripts/build_linux.sh --backend cuda --cuda-arch "86;89" --target audiocpp_cli --target audiocpp_server

На Mac используйте скрипт для Metal:

scripts/build_metal.sh --target audiocpp_cli

Когда сборка с Metal завершится, бинарник audiocpp_cli окажется в build/macos-metal-release/bin. Этот единственный CLI выполняет широкий набор задач, которые выбираются по имени:

  • Обнаружение и анализ: vad находит голосовую активность, spk отвечает за эмбеддинги и распознавание дикторов, align делает принудительное выравнивание, а diar разделяет говорящих.
  • Основная работа с речью: asr транскрибирует, tts синтезирует, clon клонирует голоса, а vdes их конструирует.
  • Преобразования: vc меняет голос, s2s переводит речь в речь, svc преобразует певческий голос, а sep разделяет источники.
  • Генерация и транскрипция: gen создаёт музыку или звук по тексту или аудио, а midi превращает аудио в символьные MIDI-события.

Как получить модели

Загрузками занимается встроенный Model Manager, и он понимает такие команды:

list                list installable packages
info                show one package or family default
sizes               check package download sizes without downloading files
installed           report locally installed packages without network access
uninstall           remove only the files belonging to one installed package
clean-partial       remove abandoned staging downloads for one package
install             install one Hugging Face or ModelScope snapshot package

Начните со списка доступного:

python3 tools/model_manager_v2.py list

Консоль выведет пакеты, которые можно установить. Чтобы попробовать оба направления, поставьте Parakeet-TDT-0.6B-v3 для распознавания и VoxCPM2 для синтеза:

# ASR
python3 tools/model_manager_v2.py install parakeet_tdt_q8_0
# TTS
python3 tools/model_manager_v2.py install voxcpm2_q8_0

Пробуем в деле

Для распознавания укажите CLI файл Parakeet в формате GGUF и WAV-файл:

build/macos-metal-release/bin/audiocpp_cli  \
  --task asr \
  --model models/Parakeet-TDT-0.6B-v3-GGUF/parakeet-tdt-0.6b-v3-q8_0.gguf \
  --audio lisa.wav

В ответ консоль покажет семейство модели, задачу, режим, временные метки на уровне слов с позициями сэмплов и уверенностью, а также итоговый текст транскрипта:

family=parakeet_tdt
task=asr
mode=offline
word_timestamps=[{"start_sample":0,"end_sample":14080,"word":"Breeze","confidence":0}, ...]
text_output=Breeze TTS2 is an open-weight text-to-speech model built for real-time interaction.

Для синтеза через VoxCPM2 простому клонированию голоса нужны строка текста и эталонная запись:

build/macos-metal-release/bin/audiocpp_cli \
  --task tts \
  --model models/VoxCPM2-GGUF \
  --text "audio.cpp is running VoxCPM2 locally." \
  --voice-ref lisa.wav \
  --out voxcpm2.wav

Более точное "ultimate"-клонирование дополнительно получает транскрипт эталонного фрагмента, и это помогает модели точнее попасть в голос:

build/macos-metal-release/bin/audiocpp_cli \
  --task tts \
  --model models/VoxCPM2-GGUF \
  --text "audio.cpp is running VoxCPM2 locally." \
  --voice-ref lisa.wav \
  --reference-text "Breeze TTS 2 is an open-weight text-to-speech model built for real-time interaction." \
  --out voxcpm2.wav

Стоит ли на него смотреть?

По сравнению с mlx-audio audio.cpp легче. Ему не нужны ни среда Python, ни груда сторонних пакетов. Если вы делаете кроссплатформенные ИИ-функции, которые зависят от распознавания или синтеза речи, протестируйте его. Если нужна только транскрипция, присмотритесь к transcribe.cpp — родственному проекту, который охватывает 16 популярных открытых моделей ASR и больше 60 их вариантов.