Перейти к основному содержимому

Как использовать плагин

Плагин Runtime Speech Recognizer предназначен для распознавания слов из входящих аудиоданных. Он использует слегка модифицированную версию whisper.cpp для работы с движком. Чтобы использовать плагин, выполните следующие шаги:

В редакторе

  1. Выберите подходящие языковые модели для вашего проекта, как описано здесь.

Во время выполнения

  1. Создайте Speech Recognizer и установите необходимые параметры (CreateSpeechRecognizer, список параметров см. здесь).
  2. Привяжитесь к нужным делегатам (OnRecognitionFinished, OnRecognizedTextSegment и OnRecognitionError).
  3. Запустите распознавание речи (StartSpeechRecognition).
  4. Обрабатывайте аудиоданные и ожидайте результатов от делегатов (ProcessAudioData).
  5. Остановите распознаватель речи, когда это необходимо (например, после вызова OnRecognitionFinished).

Плагин поддерживает входящие аудиоданные в формате 32-битного PCM с плавающей запятой (interleaved). Хотя он хорошо работает с Runtime Audio Importer, он не зависит от него напрямую.

Параметры распознавания

Плагин поддерживает распознавание как потоковых, так и непотоковых аудиоданных. Чтобы настроить параметры распознавания для вашего конкретного случая использования, вызовите SetStreamingDefaults или SetNonStreamingDefaults. Дополнительно вы можете вручную установить отдельные параметры, такие как количество потоков, размер шага, нужно ли переводить входящий язык на английский и использовать ли предыдущую транскрипцию. Полный список доступных параметров см. в Recognition Parameter List.

Улучшение производительности

Рекомендации по оптимизации производительности плагина см. в разделе How to improve performance.

Детекция голосовой активности (VAD)

При обработке аудиовхода, особенно в потоковых сценариях, рекомендуется использовать Voice Activity Detection (VAD) для фильтрации пустых или содержащих только шум сегментов аудио до их попадания в распознаватель. Эту фильтрацию можно включить на стороне capturable sound wave с помощью плагина Runtime Audio Importer, что помогает предотвратить "галлюцинации" языковых моделей — попытки найти паттерны в шуме и генерацию некорректных транскрипций. Подробные инструкции по настройке VAD см. в Voice Activity Detection documentation.

В демо-проекте, поставляемом с плагином, VAD включен по умолчанию. Дополнительную информацию о реализации демо можно найти в Demo Project.

Примеры

В папке Content -> Demo плагина есть хороший демо-проект, который можно использовать в качестве примера реализации.

Эти примеры иллюстрируют использование плагина Runtime Speech Recognizer с потоковым и непотоковым аудиовходом, используя Runtime Audio Importer для получения аудиоданных в качестве примера. Обратите внимание, что для доступа к тому же набору функций импорта аудио, показанных в примерах (например, capturable sound wave и ImportAudioFromFile), требуется отдельная загрузка RuntimeAudioImporter. Эти примеры предназначены исключительно для иллюстрации основной концепции и не включают обработку ошибок.

Примеры потокового аудиовхода

Примечание: В UE 5.3 и других версиях вы можете столкнуться с отсутствующими нодами после копирования Blueprints. Это может произойти из-за различий в сериализации нод между версиями движка. Всегда проверяйте, что все ноды правильно подключены в вашей реализации.

1. Базовое потоковое распознавание

Этот пример демонстрирует базовую настройку для захвата аудиоданных с микрофона в виде потока с использованием Capturable sound wave и передачи их в распознаватель речи. Он записывает речь около 5 секунд, а затем обрабатывает распознавание, что делает его подходящим для быстрых тестов и простых реализаций. Copyable nodes.

Ключевые особенности этой настройки:

  • Фиксированная длительность записи 5 секунд
  • Простое одноразовое распознавание
  • Минимальные требования к настройке
  • Идеально для тестирования и прототипирования

2. Управляемое потоковое распознавание

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

Ключевые особенности этой настройки:

  • Ручное управление стартом/стопом
  • Возможность непрерывного распознавания
  • Гибкая длительность записи
  • Подходит для интерактивных приложений

3. Распознавание голосовых команд

Этот пример оптимизирован для сценариев распознавания команд. Он сочетает потоковое распознавание с Voice Activity Detection (VAD) для автоматической обработки речи, когда пользователь перестает говорить. Распознаватель начинает обрабатывать накопленную речь только при обнаружении тишины, что делает его идеальным для интерфейсов на основе команд. Copyable nodes.

Ключевые особенности этой настройки:

  • Ручное управление стартом/стопом
  • Включена Voice Activity Detection (VAD) для обнаружения сегментов речи
  • Автоматический запуск распознавания при обнаружении тишины
  • Оптимально для распознавания коротких команд
  • Сниженная нагрузка за счет распознавания только реальной речи

4. Автоинициализация голосового распознавания с обработкой финального буфера

Этот пример представляет собой еще одну вариацию подхода к голосовому распознаванию с другим управлением жизненным циклом. Он автоматически запускает распознаватель при инициализации и останавливает его при деинициализации. Ключевая особенность — обработка последнего накопленного аудиобуфера перед остановкой распознавателя, что гарантирует отсутствие потерь речевых данных, когда пользователь хочет завершить процесс распознавания. Эта настройка особенно полезна для приложений, где необходимо захватывать полные высказывания пользователя даже при остановке в середине речи. Copyable nodes.

Ключевые особенности этой настройки:

  • Автозапуск распознавателя при инициализации
  • Автоостановка распознавателя при деинициализации
  • Обработка финального аудиобуфера перед полной остановкой
  • Использует Voice Activity Detection (VAD) для эффективного распознавания
  • Гарантирует отсутствие потерь речевых данных при остановке

Непотоковый аудиовход

Этот пример импортирует аудиоданные в Imported sound wave и распознает полные аудиоданные после их импорта. Copyable nodes.