Как использовать плагин
Плагин Runtime Speech Recognizer предназначен для распознавания слов из входящих аудиоданных. Он использует слегка модифицированную версию whisper.cpp для работы с движком. Чтобы использовать плагин, выполните следующие шаги:
Сторона редактора
- Выберите подходящие языковые модели для вашего проекта, как описано здесь.
Сторона рантайма
- Создайте распознаватель речи и установите необходимые параметры (CreateSpeechRecognizer, параметры см. здесь).
- Привяжитесь к нужным делегатам (OnRecognitionFinished, OnRecognizedTextSegment и OnRecognitionError).
- Запустите распознавание речи (StartSpeechRecognition).
- Обработайте аудиоданные и дождитесь результатов от делегатов (ProcessAudioData).
- Остановите распознаватель речи при необходимости (например, после трансляции OnRecognitionFinished).
Плагин поддерживает входящее аудио в 32-битном чересстрочном PCM-формате с плавающей запятой. Он хорошо работает с Runtime Audio Importer, но не зависит от него напрямую.
Параметры распознавания
Плагин поддерживает как потоковое, так и непотоковое распознавание аудиоданных. Чтобы настроить параметры распознавания для вашего конкретного случая использования, вызовите SetStreamingDefaults или SetNonStreamingDefaults. Кроме того, вы можете вручную задавать отдельные параметры, такие как количество потоков, размер шага, необходимость перевода входящего языка на английский и использование предыдущей транскрипции. Обратитесь к Списку параметров распознавания за полным перечнем доступных параметров.
Повышение производительности
Пожалуйста, обратитесь к разделу Как повысить производительность за советами о том, как оптимизировать производительность плагина. На Android и платформах на базе Android, таких как Meta Quest, также рассмотрите расширение Vosk, которое предлагает альтернативного провайдера для оборудования без поддержки ускорения GPU в whisper.cpp.
Определение речевой активности (VAD)
При обработке аудиовхода, особенно в сценариях потоковой передачи, рекомендуется использовать обнаружение голосовой активности (VAD) для отфильтровывания пустых или содержащих только шум аудиосегментов до того, как они попадут в распознаватель. Эту фильтрацию можно включить на стороне захватываемой звуковой волны с помощью плагина Runtime Audio Importer, что помогает предотвратить галлюцинации языковых моделей — попытки найти закономерности в шуме и генерацию некорректных транскрипций.
Для достижения оптимальных результатов распознавания речи мы рекомендуем использовать провайдер Silero VAD, который обеспечивает превосходную устойчивость к шуму и более точное обнаружение речи. Silero VAD доступен как расширение плагина Runtime Audio Importer. Подробные инструкции по настройке VAD приведены в документации по обнаружению речевой активности.
Копируемые узлы в примерах ниже используют провайдера VAD по умолчанию из соображений совместимости. Чтобы повысить точность распознавания, вы можете легко переключиться на Silero VAD:
- Установка расширения Silero VAD, как описано в разделе о расширении Silero VAD
- После включения VAD с помощью узла Toggle VAD добавьте узел Set VAD Provider и выберите «Silero» из раскрывающегося списка.
В демонстрационном проекте, входящем в состав плагина, VAD включён по умолчанию. Вы можете найти дополнительную информацию о демонстрационной реализации по ссылке Демонстрационный проект.
Примеры
Эти примеры иллюстрируют, как использовать плагин Runtime Speech Recognizer с потоковым и непотоковым аудиовходом, используя Runtime Audio Importer для получения аудиоданных в качестве примера. Обратите внимание, что для доступа к тому же набору функций импорта аудио, продемонстрированных в примерах (например, capturable sound wave и ImportAudioFromFile), требуется отдельная загрузка RuntimeAudioImporter. Эти примеры предназначены исключительно для иллюстрации основной концепции и не включают обработку ошибок.
Примеры потокового аудиоввода
Примечание: В UE 5.3 и других версиях после копирования Blueprints могут отсутствовать узлы. Это может происходить из-за различий в сериализации узлов между версиями движка. Всегда проверяйте, что все узлы правильно соединены в вашей реализации.
1. Базовое потоковое распознавание
Этот пример демонстрирует базовую настройку захвата звуковых данных с микрофона в виде потока с использованием Capturable sound wave и передачи их в распознаватель речи. Он записывает речь около 5 секунд, а затем обрабатывает распознавание, что делает его подходящим для быстрых тестов и простых реализаций. Копируемые узлы.
Ключевые особенности этой настройки:
- Фиксированная длительность записи 5 секунд
- Простое однократное распознавание
- Минимальные требования к настройке
- Идеально подходит для тестирования и прототипирования

2. Управляемое потоковое распознавание
Этот пример расширяет базовую настройку потокового распознавания, добавляя ручное управление процессом распознавания. Он позволяет запускать и останавливать распознавание в любой момент, что делает его подходящим для сценариев, где требуется точный контроль над моментом распознавания. Копируемые узлы.
Ключевые особенности этой настройки:
- Ручное управление запуском/остановкой
- Возможность непрерывного распознавания
- Гибкая продолжительность записи
- Подходит для интерактивных приложений

3. Распознавание голосовых команд
Этот пример оптимизирован для сценариев распознавания команд. Он сочетает потоковое распознавание с обнаружением речевой активности (VAD) для автоматической обработки речи, когда пользователь перестаёт говорить. Распознаватель начинает обрабатывать накопленную речь только после обнаружения тишины, что делает его идеальным для интерфейсов на основе команд. Копируемые узлы.
Ключевые особенности этой настройки:
- Ручное управление запуском/остановкой
- Обнаружение голосовой активности (VAD) включено для обнаружения речевых сегментов
- Автоматический запуск распознавания при обнаружении тишины
- Оптимально для распознавания коротких команд
- Снижение вычислительной нагрузки за счет распознавания только реальной речи

4. Автоинициализация распознавания речи с обработкой финального буфера
Этот пример — ещё один вариант подхода с распознаванием по голосовой активации, отличающийся обработкой жизненного цикла. Он автоматически запускает распознаватель во время инициализации и останавливает его во время деинициализации. Ключевая особенность заключается в том, что перед остановкой распознавателя обрабатывается последний накопленный аудиобуфер, что гарантирует отсутствие потери речевых данных, когда пользователь хочет завершить процесс распознавания. Такая настройка особенно полезна для приложений, где необходимо захватывать полные речевые высказывания пользователя даже при остановке в середине речи. Копируемые узлы.
Ключевые особенности этой настройки:
- Автоматически запускает распознаватель при инициализации
- Автоматически останавливает распознаватель при деинициализации
- Обрабатывает финальный аудиобуфер перед полной остановкой
- Использует определение речевой активности (VAD) для эффективного распознавания
- Гарантирует, что речевые данные не теряются при остановке

Непотоковый аудиовход
Этот пример импортирует аудиоданные в Imported sound wave и распознает все аудиоданные после их импорта. Копируемые узлы.
