Пока вокруг обсуждают модели на миллиарды параметров, которым для распознавания речи нужны видеокарты и десятки гигабайт памяти, существует класс решений, которые идут в противоположную сторону: делать меньше, быстрее и проще. Яркий пример — Parakeet TDT-CTC 110M от NVIDIA в формате GGUF. Это модель распознавания речи на сто с небольшим миллионов параметров, которая в сжатом виде занимает меньше четверти гигабайта, не требует видеокарты и на обычном процессоре обрабатывает аудио примерно в 30 раз быстрее реального времени. Час записи — за пару минут. В этой статье подробно разберём, что это за модель, как она устроена, сколько весит каждый из вариантов файла и почему практичнее всего оказывается именно F16.
Что это за модель и откуда она взялась
Начнём с расшифровки названия, потому что в нём уже зашита половина информации. 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. Причин несколько.
- Точность. Квантование до 4 бит — это агрессивное округление весов. Автор parakeet.cpp в документации отмечает, что у Q4_K есть небольшая, но монотонно растущая потеря в WER (проценте ошибок). Для F16 такой потери практически нет: по таблице на странице репозитория разница с эталонным NeMo на тестовой выборке нулевая. Если вам важно, чтобы имена, числа и термины распознавались правильно, лишние проценты ошибок — это именно то, что вы не хотите платить за экономию 136 МБ.
- Скорость. Квантованные веса нужно на лету «разворачивать» обратно в числа, с которыми умеет работать процессор. У крупной модели эта работа окупается экономией памяти, а у модели на 110M весов и так мало — узким местом становятся сами вычисления, а не чтение из памяти. В результате дополнительная распаковка Q4 съедает выигрыш, и F16 на практике идёт быстрее. В наших замерах именно F16 показал лучшее время обработки среди вариантов.
- Рекомендация автора. Не случайно в репозитории именно F16 отмечен как «recommended». Это тот вариант, который разработчики считают оптимальным балансом для данной модели.
- Экономия не критична. Разница в 136 МБ между F16 и Q4_K не влияет ни на скачивание, ни на хранение, ни на загрузку в память. Квантование 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. Точное число зависит от процессора, числа потоков, длины файла и самой записи, но порядок величины остаётся стабильным.
Для понимания масштаба: для моделей типа Whisper на CPU без видеокарты скорость обычно выходит заметно ниже, особенно у крупных версий. По данным самого проекта, 110M Parakeet быстрее whisper base.en и значительно быстрее large-v3-turbo на том же аудио (подробные методика и графики есть в BENCHMARK.md). Надо понимать, что сравнение здесь не совсем «в лоб»: Whisper многоязычный и умеет гораздо больше, а Parakeet 110M — узкоспециализированный английский инструмент. Но если вам нужна именно быстрая английская расшифровка, такая специализация — преимущество.
Что ещё влияет на скорость:
- Количество потоков. Модель хорошо масштабируется на несколько ядер, но после 6–8 потоков прирост обычно замедляется.
- Современные наборы инструкций процессора. Сборки ggml используют AVX2 и подобные расширения; на очень старых CPU скорость будет ниже.
- Сборка движка. Нативная сборка под ваш процессор чуть быстрее портативной, но разница небольшая.
- Видеокарта — по желанию. Движок умеет работать и на GPU через CUDA, Vulkan или Metal, но для такой маленькой модели CPU уже даёт отличный результат. Видеокарта нужна скорее для серверных нагрузок с десятками параллельных запросов.
Отдельно стоит отметить расход памяти: по данным проекта, пиковое потребление 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 европейских языков.
- Формат входа. Модель принимает аудио 16 кГц, моно. Любой другой файл (MP3, MP4, 44,1 кГц, стерео) нужно сначала привести к этому виду — это делается одной командой FFmpeg, пример ниже.
- Длина одного прохода. Благодаря полному вниманию (full attention) модель может обработать до 20 минут аудио за один проход. Более длинные записи принято резать на куски.
- Нет разметки говорящих. Сама по себе модель не отвечает на вопрос «кто говорит». Для диаризации нужны отдельные модели.
- Шум снижает качество. Как и любая ASR-модель, 110M заметно хуже работает на записи с фоновым шумом и эхом. Предварительная очистка звука помогает — подробнее в статье про удаление шума микрофона нейросетями.
- Компактность имеет цену. На сложных акцентах, узкой терминологии и перекрывающихся голосах старшие модели семейства (0,6B и 1,1B) точнее. Если скорость не критична, а точность важнее всего, имеет смысл взять их.
Где скачать: ссылки на Hugging Face и GitHub
Все ресурсы находятся в открытом доступе. Вот основные ссылки, которые пригодятся:
- mudler/parakeet-cpp-gguf — репозиторий на Hugging Face со всеми GGUF-файлами (F16, Q8_0, Q6_K, Q5_K, Q4_K) для моделей семейства Parakeet.
- nvidia/parakeet-tdt_ctc-110m — оригинальная карточка модели от NVIDIA с описанием обучения, метриками и файлом
.nemo. - mudler/parakeet.cpp — C++-движок инференса на ggml: исходники, готовые сборки для Windows, Linux и macOS, консольная утилита и сервер.
- BENCHMARK.md — методика и результаты замеров скорости на CPU и GPU.
- NVIDIA NeMo — фреймворк, в котором модель обучалась; нужен, если хотите дообучать или конвертировать веса самостоятельно.
- Open ASR Leaderboard — открытый рейтинг ASR-моделей, где можно сравнить Parakeet с другими решениями.
- ggml и whisper.cpp — библиотека тензорных вычислений и родственный проект для моделей Whisper.
Лицензия на веса — CC-BY-4.0, то есть модель можно использовать, в том числе в коммерческих проектах, при условии указания авторства. Сам движок parakeet.cpp распространяется под лицензией MIT.
Как запустить за пять минут
Нужны три шага: скачать модель, привести аудио к нужному формату и запустить расшифровку. Ниже — минимальный пример для консоли.
Шаг 1. Скачиваем модель
Шаг 2. Готовим аудио
Приводим любой файл к WAV 16 кГц моно с помощью FFmpeg (больше готовых команд — в нашей шпаргалке по FFmpeg):
Шаг 3. Запускаем расшифровку
Если нужен не разовый запуск, а сервис, в проекте есть parakeet-server — небольшой HTTP-сервер, совместимый с форматом OpenAI Transcription API. Любой клиент для OpenAI можно направить на него, просто поменяв адрес. Готовые сборки parakeet-cli для Windows, Linux и macOS лежат на странице релизов, так что компилировать ничего не нужно.
Где такая модель особенно уместна
Модель с таким профилем — высокая скорость, малый вес и никакой зависимости от GPU — особенно хороша там, где расшифровки много, а ресурсов мало:
- Массовая обработка архивов. Сотни часов английских подкастов, лекций или звонков можно обработать за ночь на обычном рабочем компьютере.
- Приложения для настольных ПК. Модель в 267 МБ легко упаковать в установщик, а запуск не потребует от пользователя ни видеокарты, ни интернета.
- Приватные данные. Обработка полностью локальная: запись не покидает компьютер. Этот аргумент мы подробно разбирали в статье про перевод аудио в текст на Windows бесплатно.
- Предварительный черновик. Быстро получить грубую расшифровку, по которой можно ориентироваться в записи, а затем точечно улучшить важные фрагменты более тяжёлой моделью.
- Субтитры и поиск по видео. Пословные таймкоды позволяют строить SRT/VTT и поисковые индексы по спикерам и темам; про форматы можно почитать в гайде по автоматическим субтитрам.
- Слабое железо. Старые ноутбуки, мини-ПК и одноплатные компьютеры, где тяжёлые модели просто не запустятся.
Более широкий контекст — какие ещё нейросети используются для работы со звуком — собран в обзоре «Топ-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.