Расширение Vosk
По умолчанию плагин Runtime Speech Recognizer использует whisper.cpp для распознавания. На платформах без поддержки аппаратного ускорения GPU в whisper.cpp, прежде всего на Android и основанных на Android платформах, таких как Meta Quest, распознавание переключается на CPU + интринсики, что медленнее и сильнее расходует батарею. Плагин расширения Vosk добавляет альтернативного провайдера на основе Vosk, легковесного инструментария распознавания речи, который хорошо работает на устройствах с ограниченными ресурсами и особенно хорошо показывает себя на Meta Quest.
Переключение между whisper.cpp и Vosk занимает всего несколько нод Blueprint, и переключение обратно так же просто, поэтому вы можете держать оба варианта доступными и выбирать провайдера для каждой платформы, если это необходимо.
Установка
Чтобы использовать расширение Vosk:
-
Убедитесь, что основной плагин Runtime Speech Recognizer уже установлен в вашем проекте.
-
Скачайте плагин расширения Vosk здесь
-
Извлеките папку из скачанного архива в папку
Pluginsвашего проекта (создайте эту папку, если её нет). -
Пересоберите свой проект (это расширение требует проект на C++).
-
Расширение Vosk поддерживает Unreal Engine с 5.0 по 5.8.
-
Это расширение предоставляется в виде исходного кода и требует проекта на C++ для использования.
-
Для получения дополнительной информации о том, как создавать плагины вручную, см. руководство по созданию плагинов.
Переключение на провайдера Vosk
После установки расширения переключение распознавателя речи на Vosk сводится к трем узлам, сразу после CreateSpeechRecognizer:

- Вызовите Set Speech Recognizer Provider, передав класс провайдера Vosk.
- Примените Cast To Runtime Vosk Speech Recognizer Provider к результату.
- Вызовите Set Vosk Model Path (By Name) для результата приведения, выбрав загруженную модель из выпадающего списка.
Всё остальное в вашей существующей настройке (Start Speech Recognition, Process Audio Data, делегаты, VAD и так далее) продолжает работать без изменений. Чтобы переключиться обратно на whisper.cpp, удалите эти три узла или просто не вызывайте Set Speech Recognizer Provider вообще, поскольку whisper.cpp используется по умолчанию.
Загрузка моделей Vosk
Модели Vosk скачиваются и управляются из Настройки проекта -> Плагины -> Runtime Speech Recognizer Vosk. На панели перечислен предопределенный каталог моделей, сгруппированный по языкам, и каждая запись имеет кнопку Скачать, с полосой прогресса, отображаемой во время скачивания и извлечения, и кнопку Удалить, когда модель уже находится на диске.

Загруженные модели распаковываются в Content/RuntimeSpeechRecognizerVosk/Models, а плагин автоматически берёт на себя подготовку этой папки для упаковки. Вы также не ограничены одной упакованной моделью: любая загруженная вами модель остаётся доступной, и её можно выбрать во время выполнения с помощью Set Vosk Model Path (By Name). На Android файлы моделей поставляются внутри упакованного приложения и при первом использовании копируются в постоянное хранилище; это обрабатывается автоматически при выборе модели.
Поддерживаемые языки (нажмите, чтобы развернуть)
Предопределенный каталог включает модели для: английского, индийского английского, китайского, русского, французского, немецкого, испанского, португальского/бразильского португальского, греческого, турецкого, вьетнамского, итальянского, нидерландского, каталанского, арабского, тунисского арабского, фарси, филиппинского, украинского, казахского, шведского, японского, эсперанто, хинди, чешского, польского, узбекского, корейского, бретонского, гуджарати, таджикского, телугу, киргизского и грузинского, а также специализированную модель идентификации диктора.
Для некоторых языков на панели доступно несколько вариантов (например, модель поменьше, подходящая для мобильных устройств, наряду с более крупной и точной), поэтому стоит просмотреть варианты для вашего целевого языка прямо на панели «Настройки проекта», а не предполагать, что доступен только один. Подробнее о точности, размере и лицензировании каждого варианта см. в полном списке моделей Vosk.
Параметры и поведение
Vosk — принципиально иной распознаватель, чем whisper.cpp, поэтому большинство пунктов из Списка параметров распознавания к нему неприменимы. Вызов неподдерживаемого сеттера у провайдера Vosk не даёт эффекта, поэтому логика Blueprint, написанная для whisper.cpp, продолжит работать без изменений после смены провайдера. Функции, которые действительно влияют на Vosk:
- Установить язык: выбирает, модель какого языка используется. Vosk не поддерживает автоматическое определение языка, поэтому если установить язык в значение Auto, оно будет проигнорировано.
- Установить размер шага: сколько аудио накапливается перед отправкой на распознавание, тот же механизм, что и в whisper.cpp. Поскольку Vosk — это потоковый распознаватель, небольшое значение (по умолчанию в провайдере Vosk — 200 мс) обеспечивает быстрый отклик промежуточных результатов.
- Установить максимальное количество токенов: для Vosk используется иначе, описано ниже.
Установите максимальное количество токенов и потоковый вывод
Параметр Set Max Tokens управляет тем, как провайдер Vosk доставляет распознанный текст через On Recognized Text Segment:
- 0 (по умолчанию): текст накапливается внутри и доставляется одним завершённым сегментом после завершения распознавания — либо через остановку, инициированную VAD (как в примерах распознавания команд по голосу или автоматически инициализируемого распознавания речи), либо через любую логику в вашем проекте, которая вызывает Stop Speech Recognition или принудительно проталкивает последний аудиофрагмент. Это соответствует сегментному поведению, которое использует whisper.cpp.
- Больше 0: провайдер переключается в режим потоковой передачи. Вместо ожидания завершённого сегмента он транслирует промежуточные результаты по мере распознавания, причём каждый новый результат заменяет предыдущий более длинной версией той же фразы, пока сегмент не завершится и текст не сбросится для следующего. Короткая реплика может выглядеть так при нескольких трансляциях события On Recognized Text Segment:
"The"
"The cat"
"The cat is"
"The cat is sleeping"
Точное числовое значение не имеет значения для самого Vosk, поскольку у него нет встроенного лимита токенов. Любое значение больше 0 включает потоковую доставку.
Поскольку частичные результаты приходят не чаще, чем аудио помещается в очередь (регулируется параметром Set Step Size), сочетайте низкое значение Max Tokens с низким Step Size для отзывчивого вывода в реальном времени.
Поддержка платформ
Расширение Vosk работает на Windows, Android и платформах на базе Android, таких как Meta Quest. Оно наиболее полезно на Android и Meta Quest, где у whisper.cpp отсутствует механизм аппаратного ускорения GPU, и работает особенно хорошо именно на Meta Quest. Если вы уже используете Windows или другую настольную платформу с доступным ускорением Vulkan или Metal, whisper.cpp, вероятно, будет лучшим выбором по умолчанию. Vosk предназначен как альтернатива для платформ, где whisper.cpp наиболее слаб.
Продвинутый уровень: работа с моделями напрямую
Панель «Настройки проекта» охватывает скачивание и удаление моделей для большинства проектов. Если вашему проекту нужно работать с моделями напрямую, а не полагаться на панель редактора, например проверять доступность или управлять файлами во время выполнения, плагин предоставляет функции нижележащей библиотеки:
- Get Available Vosk Model Names: возвращает имена моделей, готовых к использованию прямо сейчас, уже извлечённых на диск или только упакованных и ожидающих первого использования. Это то, что наполняет выпадающий список в Set Vosk Model Path (By Name).
- Is Vosk Model Available: та же проверка, что и выше, для отдельной модели по ID.
- Get Vosk Models Directory: возвращает абсолютный путь к каталогу, из которого модели считываются во время выполнения.
- Get Vosk Model Folder Path: возвращает абсолютный путь к папке конкретной модели на диске.
- Delete Vosk Model Files: удаляет извлечённые файлы модели с диска.