Как использовать плагин
Плагин Runtime Speech Recognizer предназначен для распознавания слов из входящих аудиоданных. Он использует слегка модифицированную версию whisper.cpp для работы с движком. Чтобы использовать плагин, выполните следующие ша ги:
В редакторе
- Выберите подходящие языковые модели для вашего проекта, как описано здесь.
Во время выполнения
- Создайте Speech Recognizer и установите необходимые параметры (CreateSpeechRecognizer, список параметров см. здесь).
- Привяжитесь к нужным делегатам (OnRecognitionFinished, OnRecognizedTextSegment и OnRecognitionError).
- Запустите распознавание речи (StartSpeechRecognition).
- Обрабатывайте аудиоданные и ожидайте результатов от делегатов (ProcessAudioData).
- Остановите распознаватель речи, когда это необходимо (например, после трансляции OnRecognitionFinished).
Плагин поддерживает входящие аудиоданные в формате 32-битного PCM с плавающей запятой (interleaved). Хотя он хорошо работает с Runtime Audio Importer, он не зависит от него напрямую.
Параметры распознавания
Плагин поддерживает распознавание как потоковых, так и непотоковых аудиоданных. Чтобы настроить параметры распознавания для вашего конкретного случая использования, вызовите SetStreamingDefaults
или SetNonStreamingDefaults
. Дополнительно вы можете вручную установить отдельные параметры, такие как количество потоков, размер шага, нужно ли переводить входящий язык на английский и использовать ли предыдущую транскрипцию. Полный список доступных параметров см. в Recognition Parameter List.
Улучшение производительности
Рекомендации по оптимизации производительности плагина см. в разделе How to improve performance.
Детекция голосовой активности (VAD)
При обработке аудиовхода, особенно в потоковых сценариях, рекомендуется использовать Детекцию голосовой активности (VAD) для фильтрации пустых или содержащих только шум сегментов аудио до их попадания в распознаватель. Эту фильтрацию можно включить на стороне capturable sound wave с помощью плагина Runtime Audio Importer, что помогает предотвратить "галлюцинации" языковых моделей - попытки найти закономерности в шуме и генерацию некорректных транскрипций.
Для оптимальных результатов распознавания речи мы рекомендуем использовать провайдер Silero VAD, который обеспечивает лучшую устойчивость к шуму и более точное обнаружение речи. Silero VAD доступен как расширение для плагина Runtime Audio Importer. Подробные инструкции по настройке VAD см. в документации Voice Activity Detection. :::примечание Копируемые узлы в примерах ниже используют провайдер VAD по умолчанию для сов местимости. Чтобы повысить точность распознавания, вы можете легко переключиться на Silero VAD, выполнив следующие действия:
- Установите расширение Silero VAD, как описано в разделе Расширение Silero VAD
- После активации VAD с помощью узла Toggle VAD добавьте узел Set VAD Provider и выберите "Silero" из выпадающего списка :::
В демонстрационном проекте, включённом в плагин, VAD активирован по умолчанию. Подробнее о реализации демо-проекта можно узнать в разделе Демонстрационный проект.
Примеры
Эти примеры иллюстрируют использование плагина Runtime Speech Recognizer как с потоковым, так и с непотоковым аудиовходом, используя Runtime Audio Importer для получения аудиоданных в качестве примера. Обратите внимание, что для доступа к тому же набору функций импорта аудио, показанных в примерах (например, захватываемая звуковая волна и ImportAudioFromFile), требуется отдельная загрузка RuntimeAudioImporter. Эти примеры предназначены исключительно для иллюстрации основной концепции и не включают обработку ошибок.
Примеры с потоковым аудиовходом
Примечание: В UE 5.3 и других версиях вы можете столкнуться с отсутствующими узлами после копирования Blueprints. Это может произойти из-за различий в сериализации узлов между версиями движка. Всегда проверяйте, что все узлы правильно подключены в вашей реализации.
1. Базовое потоковое распознавание
Этот пример демонстрирует базовую настройку для захвата аудиоданных с микрофона в виде потока с использованием Capturable sound wave и передачи и х в распознаватель речи. Он записывает речь около 5 секунд, а затем обрабатывает распознавание, что делает его подходящим для быстрых тестов и простых реализаций. Копируемые узлы.
Ключевые особенности этой настройки:
- Фиксированная длительность записи 5 секунд
- Простое однократное распознавание
- Минимальные требования к настройке
- Идеально для тестирования и прототипирования
2. Управляемое потоковое распознавание
Этот пример расширяет базовую потоковую настройку, добавляя ручное управление процессом распознавания. Он позволяет запускать и останавливать распознавание по желанию, что делает его подходящим для сценариев, где требуется точный контроль над моментом распознавания. Копируемые узлы.
Ключевые особенности этой настройки:
- Ручное управление стартом/стопом
- Возможность непрерывного распознавания
- Гибкая длительность записи
- Подходит для интерактивных приложений
3. Распознавание голосовых команд
Этот пример оптимизирован для сценариев распознавания команд. Он сочетает потоковое распознавание с Детектированием голосовой активности (VAD) для автоматической обработки речи, когда пользователь перестает говорить. Распознаватель начинает обработку накопленной речи только при обнаружении тишины, что делает его идеальным для интерфейсов на основе команд. Копируемые ноды.
Ключевые особенности этой настройки:
- Ручное управление стартом/стопом
- Включено Детектирование голосовой активности (VAD) для обнаружения сегментов речи
- Автоматическое срабатывание распознавания при обнаружении тишины
- Оптимально для распознавания коротких команд
- Сниженная нагрузка на обработку благодаря распознаванию только реальной речи
4. Автоинициализация голосового распознавания с обработкой финального буфера
Этот пример представляет собой еще одну вариацию подхода к голосовому распознаванию с активацией по голосу, но с другим управлением жизненным циклом. Он автоматически запускает распознаватель при инициализации и останавливает его при де инициализации. Ключевая особенность — обработка последнего накопленного аудиобуфера перед остановкой распознавателя, что гарантирует отсутствие потери речевых данных, когда пользователь хочет завершить процесс распознавания. Эта настройка особенно полезна для приложений, где необходимо захватывать полные высказывания пользователя даже при остановке в середине речи. Копируемые ноды.
Ключевые особенности этой настройки:
- Автоматический старт распознавателя при инициализации
- Автоматическая остановка распознавателя при деинициализации
- Обработка финального аудиобуфера перед полной остановкой
- Использует Детектирование голосовой активности (VAD) для эффективного распознавания
- Гарантирует отсутствие потери речевых данных при остановке