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

Минимизация зависаний

Этот гид рассматривает два распространенных источника зависаний в плагине RuntimeSpeechRecognizer и предлагает практические решения для снижения воздействия на производительность.

Захватываемая звуковая волна

При запуске захватываемой звуковой волны с помощью функции StartCapture вы можете столкнуться с кратковременной задержкой, которая специфична для движка и в данный момент неизбежна без изменения кода конкретного движка. Продолжительность этой задержки варьируется на разных платформах, так как она связана с выполнением специфичного для платформы кода для извлечения аудиоданных с входного устройства (микрофон). Эта задержка была замечена на таких платформах, как Windows, Mac, Android и iOS, и может быть актуальна и для других.

Чтобы минимизировать это подергивание, подумайте о начале захвата, вызвав функцию StartCapture в то время, когда её воздействие будет незначительным, например, во время загрузочного экрана. Сразу после вызова StartCapture используйте функцию ToggleMute с параметром Mute, установленным в True. И когда вы будете готовы начать захват аудиоданных, активируйте захватываемую звуковую волну, вызвав ToggleMute с параметром Mute, установленным в False. Больше информации доступно здесь.

Начало распознавания речи

При запуске распознавания речи вызовом StartSpeechRecognition может возникнуть небольшая заминка из-за загрузки движком языковой модели. Несмотря на то, что этот процесс спроектирован как асинхронный и выполняется в отдельном потоке, движок все же выполняет определенные операции во внутреннем игровом потоке, что приводит к заметной небольшой задержке, особенно с большими активами, такими как языковые модели.

Чтобы исключить это зависание, следуйте тому же принципу, который описан выше: вызывайте StartSpeechRecognition в то время, когда воздействие задержки будет оправданным или незначительным, например, во время загрузочного экрана.