Сегодня (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

Комментарии (17)