Streaming de onda sonora
Para detecção de atividade de voz (VAD), consulte esta página.
Uma streaming de onda sonora é um tipo de onda sonora importada que suporta a adição dinâmica de dados de áudio, mesmo durante a reprodução. Ela oferece a mesma funcionalidade de uma onda sonora importada, como retroceder, e pode ser usada em SoundCues, etc.
Criando uma streaming de onda sonora
Primeiro, você deve criar uma streaming de onda sonora. Observe que você deve tratá-la como uma referência forte para evitar destruição prematura (por exemplo, atribuindo-a a uma variável separada em Blueprints ou usando UPROPERTY()
em C++).
- Blueprint
- C++
UStreamingSoundWave* StreamingSoundWave = UStreamingSoundWave::CreateStreamingSoundWave();
Reproduzindo a onda sonora
Você pode então reproduzir essa onda sonora. No entanto, isso não é necessário fazer agora, você pode começar a reproduzir a onda sonora mais tarde.
Pré-alocação de dados de áudio
Opcionalmente, você pode pré-alocar dados de áudio (bytes) para evitar realocar todo o buffer PCM cada vez que novos dados de áudio são anexados.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
StreamingSoundWave->PreAllocateAudioData(12582912, FOnPreAllocateAudioDataResultNative::CreateWeakLambda(this, [StreamingSoundWave](bool bSucceeded)
{
// Handle the result
}));
Anexando dados de áudio
Para adicionar dados de áudio ao final do buffer existente, use as funções apropriadas para anexar dinamicamente dados de áudio. A reprodução seguirá a sequência de fila desses anexos.
- Blueprint
- C++
// Assuming StreamingSoundWave is a UE reference to a UStreamingSoundWave object (or its derived type, such as UCapturableSoundWave)
// Example of appending encoded audio data
TArray<uint8> AudioData = ...; // Fill with audio data
StreamingSoundWave->AppendAudioDataFromEncoded(AudioData, ERuntimeAudioFormat::Auto);
// Or, if you have raw audio data
TArray<uint8> RawAudioData = ...; // Fill with raw audio data
StreamingSoundWave->AppendAudioDataFromRAW(RawAudioData, ERuntimeRAWAudioFormat::Float32, 44100, 2);