Скачать для Windows
Нейросети • 14 мин чтения

Parakeet TDT-CTC 110M (GGUF): крошечная модель транскрибации, которая летает на обычном CPU

Разбираем модель tdt_ctc-110m-q8_0.gguf: сколько она весит в оригинале и в разных квантованиях, почему F16 оказывается и точнее, и быстрее Q4, как получить около ×30 от реального времени без видеокарты — и где у неё границы применимости.

Пока вокруг обсуждают модели на миллиарды параметров, которым для распознавания речи нужны видеокарты и десятки гигабайт памяти, существует класс решений, которые идут в противоположную сторону: делать меньше, быстрее и проще. Яркий пример — Parakeet TDT-CTC 110M от NVIDIA в формате GGUF. Это модель распознавания речи на сто с небольшим миллионов параметров, которая в сжатом виде занимает меньше четверти гигабайта, не требует видеокарты и на обычном процессоре обрабатывает аудио примерно в 30 раз быстрее реального времени. Час записи — за пару минут. В этой статье подробно разберём, что это за модель, как она устроена, сколько весит каждый из вариантов файла и почему практичнее всего оказывается именно F16.

110Mпараметров — «карманная» модель
267 МБвес в формате F16
~×30от реального времени на CPU
0 GPUвидеокарта не нужна

Что это за модель и откуда она взялась

Начнём с расшифровки названия, потому что в нём уже зашита половина информации. parakeet-tdt_ctc-110m — это гибридная модель автоматического распознавания речи (ASR), созданная командой NVIDIA NeMo совместно с Suno.ai. Название «Parakeet» (волнистый попугайчик) закрепилось за целым семейством моделей NVIDIA, в которое входят варианты на 110 миллионов, 0,6 и 1,1 миллиарда параметров. Версия на 110M — самая компактная в семействе и при этом обучена на внушительном объёме данных: по описанию NVIDIA, порядка 36 000 часов английской речи.

Важная особенность — модель сразу выдаёт текст с пунктуацией и заглавными буквами. Многие быстрые ASR-модели возвращают сплошной нижний регистр без знаков препинания, и текст приходится дополнительно прогонять через другую нейросеть. Здесь этого шага нет: на выходе уже читаемые предложения.

Сама по себе NVIDIA распространяет модель в «родном» формате NeMo — файле .nemo, для запуска которого нужен Python, PyTorch и сам фреймворк NeMo. Это удобно для исследователей, но тяжело для обычного приложения. Поэтому появился проект parakeet.cpp — переписанный на C++ движок инференса на базе библиотеки ggml (той же, на которой построен знаменитый whisper.cpp). Вместе с ним в репозитории mudler/parakeet-cpp-gguf на Hugging Face опубликованы готовые веса в формате GGUF — в том числе тот самый tdt_ctc-110m-q8_0.gguf.

Как она устроена: FastConformer, TDT и CTC

Чтобы понять, откуда берётся скорость, полезно заглянуть под капот. В основе модели три идеи, каждая из которых вносит свой вклад.

FastConformer: энкодер, который «сжимает» время

Звук превращается в последовательность коротких кадров, и чем длиннее запись, тем больше кадров приходится обрабатывать. Классический Conformer делает это с понижением частоты кадров в 4 раза, а FastConformer — в 8 раз. Каждый «шаг» энкодера в итоге соответствует 80 миллисекундам звука. Кадров в два раза меньше — вычислений в разы меньше, а качество при этом почти не страдает. Это первая и, пожалуй, главная причина высокой скорости.

TDT: декодер, который умеет «перепрыгивать» кадры

Обычные трансдьюсерные модели (RNN-T) на каждом шаге эмитируют либо токен, либо «пустой» символ и сдвигаются ровно на один кадр. TDT (Token-and-Duration Transducer) предсказывает не только сам токен, но и его длительность — то есть на сколько кадров можно сразу прыгнуть вперёд. На паузах и протяжённых звуках декодер пропускает десятки лишних шагов. Меньше шагов декодирования — выше скорость, причём без потери точности.

CTC: вторая «голова» для гибкости

Слово «гибрид» в названии означает, что у модели две выходные головы: TDT и CTC. По умолчанию используется TDT — она точнее. CTC-голова проще и даёт покадровые вероятности, что бывает полезно, например, для выравнивания текста по времени. Переключение между ними — это просто параметр запуска, веса энкодера общие.

Что важно запомнить

Энкодер с 8-кратным сжатием времени + декодер, перепрыгивающий через паузы, + отсутствие необходимости в тяжёлом Python-стеке. Именно эта связка превращает 110 миллионов параметров в скорость, которую раньше можно было получить только на GPU.

Вес модели: оригинал, F16, Q8_0 и Q4_K

Размер — один из главных аргументов в пользу этой модели. Для сравнения: оригинальный чекпоинт NVIDIA в формате .nemo занимает примерно 440–460 МБ (в каталоге NGC указано около 438 МБ, на Hugging Face файл показывается как 459 МБ). Версии GGUF заметно компактнее:

Файл Формат Размер К оригиналу (~459 МБ)
parakeet-tdt_ctc-110m.nemo Оригинал NVIDIA (NeMo) ~459 МБ 100%
tdt_ctc-110m-f16.gguf ★ F16 (рекомендуемый) 267,5 МБ ≈ 58%
tdt_ctc-110m-q8_0.gguf Q8_0 177,8 МБ ≈ 39%
tdt_ctc-110m-q4_k.gguf Q4_K 131,4 МБ ≈ 29%

Размеры указаны по данным репозитория mudler/parakeet-cpp-gguf. Кроме трёх строк из таблицы, там же лежат промежуточные q6_k и q5_k. Обратите внимание на показательную деталь: разница между F16 и Q4_K — всего около 136 МБ. На современном компьютере это ничто, а вот цена этой экономии, как мы увидим ниже, вполне ощутима.

Для самого маленького варианта в семействе это вообще рекордно скромные цифры. Для сравнения, старшие модели той же линейки весят заметно больше: 0,6B в формате F16 — около 1,4 ГБ, а 1,1B — почти 2,4 ГБ. Модель на 110M целиком помещается в оперативную память любого ноутбука, а загружается практически мгновенно.

F16 против Q4: почему «лёгкая» не значит «лучше»

Интуиция подсказывает: чем сильнее сжат файл, тем быстрее он работает. В больших языковых моделях это часто правда, потому что там узкое место — пропускная способность памяти. Но у маленькой модели распознавания речи картина другая, и на практике F16 оказывается лучше и быстрее Q4. Причин несколько.

А что с Q8_0?

Q8_0 — это «золотая середина»: 178 МБ, что составляет около 39% от оригинала, и при этом потеря качества практически незаметна. По данным бенчмарков автора parakeet.cpp, 8-битный вариант на CPU показывает один из лучших результатов по скорости относительно NeMo. Именно поэтому файл tdt_ctc-110m-q8_0.gguf так популярен: он заметно легче F16 и почти ничем ему не уступает. Но если вам нужен максимум точности и скорости на обычном компьютере — берите F16.

Скорость: около ×30 от реального времени на CPU

В распознавании речи скорость принято измерять показателем RTFx (real-time factor, «во сколько раз быстрее реального времени»). Если RTFx равен 30, то 30 минут аудио обрабатываются за одну минуту, а часовая запись — примерно за две. На обычном процессоре без видеокарты tdt_ctc-110m в наших замерах выходит именно на этот порядок — около ×30. Точное число зависит от процессора, числа потоков, длины файла и самой записи, но порядок величины остаётся стабильным.

Что значит ×30 на практике10 минут записи → около 20 секунд обработки 1 час лекции → около 2 минут 3 часа совещаний → около 6 минут 100 часов архива → около 3,5 часов в фоне

Для понимания масштаба: для моделей типа Whisper на CPU без видеокарты скорость обычно выходит заметно ниже, особенно у крупных версий. По данным самого проекта, 110M Parakeet быстрее whisper base.en и значительно быстрее large-v3-turbo на том же аудио (подробные методика и графики есть в BENCHMARK.md). Надо понимать, что сравнение здесь не совсем «в лоб»: Whisper многоязычный и умеет гораздо больше, а Parakeet 110M — узкоспециализированный английский инструмент. Но если вам нужна именно быстрая английская расшифровка, такая специализация — преимущество.

Что ещё влияет на скорость:

Отдельно стоит отметить расход памяти: по данным проекта, пиковое потребление RAM у движка примерно вдвое ниже, чем у родного рантайма NeMo, а у квантованных версий — ещё ниже. Для офисного ноутбука с 8 ГБ это принципиально.

Точность: что показывают бенчмарки

Скорость ничего не стоит, если текст получается мусорным. Поэтому посмотрим на метрику WER (Word Error Rate — доля ошибочно распознанных слов; чем меньше, тем лучше). В карточке NVIDIA приведены результаты оригинальной модели на стандартных наборах из Hugging Face Open ASR Leaderboard:

Тестовый набор Тип речи WER, %
LibriSpeech test-cleanЧистое чтение книг2,40
SPGI SpeechФинансовые выступления2,54
TED-LIUM v3Публичные лекции4,16
LibriSpeech test-otherСложные записи, акценты5,20
VoxPopuliВыступления в Европарламенте6,91
GigaSpeechПодкасты и видео10,52
Earnings-22Созвоны по отчётности12,42
AMIСовещания, много перебиваний15,88

Цифры показывают типичную картину для любой ASR-модели: на чистой речи ошибок единицы процентов, а на реальных совещаниях с перебиваниями и шумом (набор AMI) — заметно больше. Для модели на 110M это достойный результат: на чистой дикторской речи она не уступает куда более тяжёлым решениям.

Важный нюанс про квантование. Проект parakeet.cpp проверяет совпадение транскрипта с эталонным NeMo, и для F16 и Q8_0 расхождение на проверочной выборке нулевое. Сами авторы при этом честно оговариваются, что совпадение на тестовом наборе — не гарантия идентичного WER в любых условиях: на других голосах, в шуме и на других доменах результат может отличаться. Поэтому для ответственных задач разумно один раз прогнать на своих записях и сравнить версии между собой.

Таймкоды «из коробки»

Движок умеет выдавать пословные временные метки с оценкой уверенности модели — в секундах от начала записи. Шаг кадра — 0,08 секунды, поэтому точность привязки составляет доли секунды. Это удобно для субтитров и поиска по записи; подробнее о том, зачем нужны метки времени, мы писали в статье про перевод видео в текст с таймкодами.

Ограничения, о которых нужно знать заранее

Чтобы не было разочарований, давайте честно перечислим, чего эта модель не умеет. Такая прямота полезнее любых восторгов.

Главное ограничение: только английский язык

Модель parakeet-tdt_ctc-110m обучена на английской речи и транскрибирует только английский. Русскую речь она не распознает корректно. Если вам нужен русский язык, смотрите в сторону многоязычных моделей — например, Whisper или Parakeet TDT 0.6B v3, который поддерживает 25 европейских языков.

Где скачать: ссылки на Hugging Face и GitHub

Все ресурсы находятся в открытом доступе. Вот основные ссылки, которые пригодятся:

Лицензия на веса — CC-BY-4.0, то есть модель можно использовать, в том числе в коммерческих проектах, при условии указания авторства. Сам движок parakeet.cpp распространяется под лицензией MIT.

Как запустить за пять минут

Нужны три шага: скачать модель, привести аудио к нужному формату и запустить расшифровку. Ниже — минимальный пример для консоли.

Шаг 1. Скачиваем модель

Скачивание F16-версии# через Hugging Face CLI huggingface-cli download mudler/parakeet-cpp-gguf tdt_ctc-110m-f16.gguf --local-dir models/ # или напрямую, версией Q8_0 (178 МБ) curl -LO https://huggingface.co/mudler/parakeet-cpp-gguf/resolve/main/tdt_ctc-110m-q8_0.gguf

Шаг 2. Готовим аудио

Приводим любой файл к WAV 16 кГц моно с помощью FFmpeg (больше готовых команд — в нашей шпаргалке по FFmpeg):

Конвертация в 16 кГц моноffmpeg -i interview.mp4 -ar 16000 -ac 1 audio.wav

Шаг 3. Запускаем расшифровку

Транскрибация через parakeet-cli# обычный текст parakeet-cli transcribe --model models/tdt_ctc-110m-f16.gguf --input audio.wav # пословные таймкоды и уверенность модели parakeet-cli transcribe --model models/tdt_ctc-110m-f16.gguf --input audio.wav --timestamps # результат в JSON parakeet-cli transcribe --model models/tdt_ctc-110m-f16.gguf --input audio.wav --json # переключиться на CTC-голову parakeet-cli transcribe --model models/tdt_ctc-110m-f16.gguf --input audio.wav --decoder ctc

Если нужен не разовый запуск, а сервис, в проекте есть parakeet-server — небольшой HTTP-сервер, совместимый с форматом OpenAI Transcription API. Любой клиент для OpenAI можно направить на него, просто поменяв адрес. Готовые сборки parakeet-cli для Windows, Linux и macOS лежат на странице релизов, так что компилировать ничего не нужно.

Где такая модель особенно уместна

Модель с таким профилем — высокая скорость, малый вес и никакой зависимости от GPU — особенно хороша там, где расшифровки много, а ресурсов мало:

Более широкий контекст — какие ещё нейросети используются для работы со звуком — собран в обзоре «Топ-5 нейросетей для работы со звуком».

Какую версию файла выбрать

Рекомендуем

F16 — tdt_ctc-110m-f16.gguf

267,5 МБ. Лучшая точность и лучшая скорость на обычном процессоре. Именно её отмечает как рекомендуемую автор репозитория. Берите по умолчанию, если нет причин делать иначе.

Компромисс

Q8_0 — tdt_ctc-110m-q8_0.gguf

177,8 МБ. Почти не отличается по качеству от F16, но легче на треть. Разумный выбор, когда важен размер дистрибутива или нужно упаковать модель в приложение.

Для слабого железа

Q4_K — tdt_ctc-110m-q4_k.gguf

131,4 МБ. Самый маленький вариант, но с небольшой потерей точности и без выигрыша в скорости на обычном ПК. Имеет смысл только там, где действительно не хватает места или памяти.

Если нужна максимальная точность

Старшие модели семейства (0,6B / 1,1B)

Заметно тяжелее (от ~0,9 до 2,4 ГБ в зависимости от формата) и медленнее, но точнее на сложных записях. Для многоязычных задач — Parakeet TDT 0.6B v3 или Whisper.

Частые вопросы

Поддерживает ли модель русский язык?

Нет. Parakeet TDT-CTC 110M работает только с английской речью. Для русского нужны другие модели, например многоязычный Whisper.

Нужна ли видеокарта, чтобы получить скорость ×30?

Нет. Показатель около ×30 относится именно к обычному процессору. Видеокарта поддерживается движком, но для такой маленькой модели она не обязательна.

Почему F16 быстрее Q4, ведь файл Q4 меньше?

Квантованные веса нужно распаковывать во время вычислений. У маленькой модели узкое место — не чтение памяти, а сами вычисления, поэтому дополнительная работа по распаковке Q4 не окупается. К тому же F16 точнее. Конкретные цифры зависят от вашего процессора, поэтому лучше один раз проверить на своём железе.

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

Исходный файл NVIDIA в формате NeMo занимает примерно 440–460 МБ. Версия GGUF в F16 — около 267,5 МБ, Q8_0 — около 177,8 МБ, Q4_K — около 131,4 МБ.

Можно ли использовать модель в коммерческих проектах?

Веса распространяются по лицензии CC-BY-4.0, которая разрешает коммерческое использование при условии указания авторства. Движок parakeet.cpp — под лицензией MIT. Перед использованием всё же сверьтесь с актуальным текстом лицензий в репозиториях.

Какой максимальной длины файл можно подать?

Благодаря полному вниманию модель обрабатывает до 20 минут аудио за один проход. Более длинные записи лучше разбивать на сегменты, например по паузам.

Выдаёт ли модель знаки препинания?

Да. Она обучена на данных с пунктуацией и заглавными буквами, поэтому на выходе получается готовый к чтению текст, а не сплошная строка в нижнем регистре.

Чем GGUF отличается от оригинального формата .nemo?

Формат .nemo предназначен для фреймворка NeMo и требует Python и PyTorch. GGUF — компактный формат для движков на базе ggml: один файл, никаких зависимостей, быстрый старт и поддержка квантования. Транскрипты при этом совпадают с эталонными на проверочных наборах.

Итог

Parakeet TDT-CTC 110M в формате GGUF — редкий случай, когда «маленький» не означает «компромиссный». Модель весит от 131 до 267 МБ против 459 МБ в оригинале, работает на обычном процессоре примерно в 30 раз быстрее реального времени, сразу ставит знаки препинания и выдаёт пословные таймкоды. Из всех вариантов файла практичнее всего F16: он точнее и быстрее Q4, а выигрыш Q4 в размере на современном компьютере практически ничего не даёт. Q8_0 — достойная альтернатива, когда нужен более лёгкий файл.

Главное, что нужно помнить: модель говорит только по-английски, ждёт на входе аудио 16 кГц моно и лучше всего работает на чистой записи. В этих рамках она одна из самых быстрых и удобных открытых моделей транскрибации, которые можно запустить локально. А если задачи шире — многоязычные, с диаризацией или с повышенными требованиями к точности — стоит присмотреться к старшим моделям семейства Parakeet и к Whisper.

Parakeet GGUF Транскрибация NVIDIA NeMo Hugging Face Локальные нейросети