Passa al contenuto principale

Streaming Sound Wave

Per il rilevamento dell'attività vocale (VAD), fare riferimento a questa pagina.

Una streaming sound wave è un tipo di sound wave importato che supporta l'aggiunta dinamica di dati audio, anche durante la riproduzione. Offre le stesse funzionalità di una sound wave importata, ad esempio il riavvolgimento, e può essere utilizzata in SoundCues, ecc.

Creazione di una streaming sound wave

Innanzitutto dovresti creare una streaming sound wave. Nota che dovresti trattarla come un riferimento forte per prevenirne la distruzione prematura (ad esempio assegnandola a una variabile separata in Blueprints o utilizzando UPROPERTY() in C++).

Nodo Create Streaming Sound Wave

Riproduzione dell'onda sonora

Puoi quindi riprodurre quell'onda sonora. Tuttavia, non è necessario farlo ora, puoi iniziare a riprodurre l'onda sonora in un secondo momento.

Vari esempi di riproduzione di un'onda sonora

Pre-allocazione dei dati audio

Opzionalmente, puoi pre-allocare i dati audio (byte) per evitare di riallocare l'intero buffer PCM ogni volta che vengono aggiunti nuovi dati audio.

Nodo Pre Allocate Audio Data

Aggiungere dati audio

Per aggiungere dati audio alla fine del buffer esistente, utilizzare le funzioni appropriate per aggiungere dinamicamente dati audio. La riproduzione seguirà la sequenza di coda di questi aggiunti.

Nodo Append Audio Data

Evitare la riproduzione audio accelerata o distorta

Quando si trasmettono dati audio mentre l'onda sonora è in riproduzione, si potrebbe riscontrare una riproduzione audio accelerata o distorta in scenari specifici. Questo problema si verifica tipicamente quando:

  1. La riproduzione dell'onda sonora è vicina/alla fine del buffer corrente
  2. Nuovi dati audio vengono accodati continuamente nell'onda sonora in streaming
  3. La riproduzione raggiunge il flusso di dati in entrata

È possibile interrompere il popolamento dei dati audio in qualsiasi momento senza problemi. Tuttavia, per scenari in cui è necessario uno streaming continuo (come lo streaming audio in tempo reale), ci sono due approcci a seconda dell'affidabilità del flusso dei dati audio:

Per streaming affidabile e consistente: Utilizzare il delegato OnPopulateAudioState per avviare la riproduzione immediatamente dopo la ricezione del primo chunk.

Per streaming inaffidabile (problemi di rete, dati intermittenti): Aggiungere un ulteriore ritardo anche dopo che OnPopulateAudioState è stato attivato per accumulare un buffer più grande prima di avviare la riproduzione.

Utilizzo di OnPopulateAudioState per evitare problemi di riproduzione

Nota: Puoi interrompere il popolamento dei dati audio in qualsiasi momento senza causare problemi di riproduzione. L'approccio esatto dipende dall'affidabilità del tuo streaming di dati audio: utilizza la riproduzione immediata per flussi costanti, o aggiungi un ritardo di buffering aggiuntivo per flussi inaffidabili (ad esempio, problemi di connettività di rete).

Esempio di utilizzo

Infine, la tua implementazione potrebbe apparire così:

Un esempio di utilizzo di un'onda sonora in streaming

Su Popola Stato Audio

Il delegato OnPopulateAudioState funziona in modo simile a OnPopulateAudioData ma non trasmette i dati audio popolati. Questo può essere utile quando si desidera tracciare quando i dati audio vengono popolati senza passare un array dei dati audio popolati, il che può migliorare le prestazioni.

Delegato On Populate Audio State

Lavorare con i Dati PCM

Per l'accesso in tempo reale ai dati PCM durante la riproduzione, consultare Gestione dei Dati PCM.