Сегодня (12 апреля) в проект llama.cpp залили PR, который добавляет новый функционал - работа с audio.
Речь идёт о поддержке моделей Gemma4, которые умеют распознавать речь:
https://huggingface.co/google/gemma-4-E4B-it
Total Parameters 4.5B effective (8B with embeddings)
https://huggingface.co/google/gemma-4-E2B-it
Total Parameters 2.3B effective (5.1B with embeddings)
Обе модели поддерживают:
режим LLM (большая языковая модель), поддерживается режим thinking (размышления)
распознавание изображений: объектов, фотографий, документов, скриншотов экрана, рукописного текста.
распознавание видео
распознавание речи (ASR) и распознавание речи с переводом (speech-to-translated-text translation)
работа с кодом
поддерживается 35+ языков (включая русский).
контекст 128k
Так как в этой статье речь идёт о работе с llama.cpp, то требуется формат GGUF (кванты), который можно взять вот тут:
https://huggingface.co/ggml-org/gemma-4-E4B-it-GGUF
https://huggingface.co/ggml-org/gemma-4-E2B-it-GGUF
Так как поддержка добавлена только сегодня, то этот функционал ещё не работает в опубликованном контейнере докера (будет завтра). Я компилировал из исходников и запускал у себя на RTX 4090D:
./build/bin/llama-server --host 0.0.0.0 --port 8080 \ --ctx-size 128000 \ -b 1024 -ub 1024 \ -hf ggml-org/gemma-4-E4B-it-GGUF:Q8_0 ggml_cuda_init: found 1 CUDA devices (Total VRAM: 48508 MiB): Device 0: NVIDIA GeForce RTX 4090 D, compute capability 8.9, VMM: yes main: n_parallel is set to auto, using n_parallel = 4 and kv_unified = true build_info: b8783-3cbf6a2cf system_info: n_threads = 12 (n_threads_batch = 12) / 12 | CUDA : ARCHS = 890 | USE_GRAPHS = 1 | PEER_MAX_BATCH_SIZE = 128 | CPU : SSE3 = 1 | SSSE3 = 1 | AVX = 1 | AVX_VNNI = 1 | AVX2 = 1 | F16C = 1 | FMA = 1 | BMI2 = 1 | AVX512 = 1 | AVX512_VBMI = 1 | AVX512_VNNI = 1 | AVX512_BF16 = 1 | AMX_INT8 = 1 | LLAMAFILE = 1 | OPENMP = 1 | REPACK = 1 |
C параметрами по умолчанию движок работает нестабильно, падает:
https://github.com/ggml-org/llama.cpp/issues/21816 Gemma 4 E4B audio assert error
Нужно добавлять `-b 1024 -ub 1024`, как в примере у меня выше.
Я использовал квант Q8_0 - используется 10 GB VRAM.

Так как поддержку только добавили, то выглядит это немного "сыровато". Модель не всегда понимает промпты. Так что будет интересно получить обратную связь.
У Гугла, в описании модели даны рекомендации:
Audio поддерживается длиною 30 секунд.
Audio supports a maximum length of 30 seconds.
Я тестировал - бывает успешно обрабатываются и более длительные отрывки, а бывает что и нет
Рекомендуемый формат промптов:
Для распознавания речи (Audio Speech Recognition / ASR):
Transcribe the following speech segment in {LANGUAGE} into {LANGUAGE} text. Follow these specific instructions for formatting the answer: Only output the transcription, with no newlines. When transcribing numbers, write the digits, i.e. write 1.7 and not one point seven, and write 3 instead of three.
Для перевода речи на другой язык (Automatic Speech Translation / AST):
Transcribe the following speech segment in {SOURCE_LANGUAGE}, then translate it into {TARGET_LANGUAGE}.
When formatting the answer, first output the transcription in {SOURCE_LANGUAGE}, then one newline, then output the string '{TARGET_LANGUAGE}: ', then the translation in {TARGET_LANGUAGE}.
На Reddit народ пишет, что вроде бы ещё поддерживается модель Voxtral, но я до неё ещё не добрался.
В этот же день (12 апреля) замёрджили поддержку распознавания речи для моделей Qwen3:
https://huggingface.co/Qwen/Qwen3-ASR-1.7B (GGUF)
https://huggingface.co/ggml-org/Qwen3-Omni-30B-A3B-Thinking-GGUF
https://huggingface.co/ggml-org/Qwen3-Omni-30B-A3B-Instruct-GGUF