Обнаружение голосовой активности
Волна звука в потоке, вместе с ее производными типами, такими как Записываемая звуковая волна, поддерживает обнаружение голосовой активности (VAD). VAD фильтрует входящие звуковые данные, чтобы заполнять внутренний буфер только при обнаружении голоса. Эта функция реализована с использованием libfvad.
Чтобы включить VAD после создания звуковой волны, используйте соответствующую функцию.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->ToggleVAD(true);
После включения VAD вы можете установить режим VAD или сбросить VAD при необходимости. Эти функции следует вызывать только при включенном VAD.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Set the VAD mode
StreamingSoundWave->SetVADMode(ERuntimeVADMode::VeryAggressive);
// Reset the VAD
StreamingSoundWave->ResetVAD();
Обнаружение начала и конца речи
Voice Activity Detection не только определяет наличие речи, но и позволяет обнаруживать начало и конец речевой активности. Это полезно для срабатывания событий, когда речь начинается или заканчивается во время воспроизведения или записи.
Вы можете настроить чувствительность обнаружения начала и конца речи, отрегулировав такие параметры, как минимальная длительность речи и длительность тишины. Эти параметры помогают точно настроить обнаружение, чтобы избежать ложных срабатываний, например, захвата коротких шумов или слишком коротких пауз между речью.
Минимальная длительность речи
Параметр Минимальная длительность речи задает минимальное количество непрерывной речевой активности, необходимо е для срабатывания события начала речи. Это помогает отфильтровать короткие шумы, которые не должны считаться речью, чтобы убедиться, что только продолжительная речевая активность распознается. Значение по умолчанию для Минимальной длительности речи составляет 300 миллисекунд.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Set the minimum speech duration
StreamingSoundWave->SetMinimumSpeechDuration(200);
Длительность Тишины
Параметр Длительность Тишины устанавливает длительность тишины, необходимую для срабатывания события окончания речи. Это предотвращает преждевременное завершение распознавания речи во время естественных пауз между словами или предложениями. Значение по умолчанию для Длительность Тишины составляет 500 миллисекунд.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Set the silence duration
StreamingSoundWave->SetSilenceDuration(700);
Привязка к Делегатам Речи
Вы можете привязываться к конкретным делегатам, когда речь начинается или заканчивается. Это полезно для запуска пользовательского поведения на основе речевой активности, такого как начало или завершение распознавания текста, или регулировка громкости других источников аудио.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Bind to the OnSpeechStartedNative delegate
StreamingSoundWave->OnSpeechStartedNative.AddWeakLambda(this, [this]()
{
// Handle the result when speech starts
});
// Bind to the OnSpeechEndedNative delegate
StreamingSoundWave->OnSpeechEndedNative.AddWeakLambda(this, [this]()
{
// Handle the result when speech ends
});