Aller au contenu principal

Streaming Sound Wave

Pour la détection d'activité vocale (VAD), consultez cette page.

Une streaming sound wave est un type de son importé qui permet d'ajouter des données audio dynamiquement, même pendant la lecture. Elle offre les mêmes fonctionnalités qu'un son importé standard, comme la remise à zéro, et peut être utilisée dans des SoundCues, etc.

Création d'une streaming sound wave

Vous devez d'abord créer une streaming sound wave. Notez que vous devez la traiter comme une référence forte pour éviter sa destruction prématurée (par exemple en l'assignant à une variable séparée dans Blueprints ou en utilisant UPROPERTY() en C++).

Create Streaming Sound Wave node

Lecture de l'onde sonore

Vous pouvez ensuite lire cette onde sonore. Cependant, ce n'est pas nécessaire de le faire maintenant, vous pouvez commencer à lire l'onde sonore plus tard.

Divers exemples de lecture d'une onde sonore

Pré-allocation des données audio

Optionnellement, vous pouvez pré-allouer les données audio (en octets) pour éviter de réallouer tout le tampon PCM à chaque fois que de nouvelles données audio sont ajoutées.

Nœud Pre Allocate Audio Data

Ajout de données audio

Pour ajouter des données audio à la fin du tampon existant, utilisez les fonctions appropriées pour ajouter dynamiquement des données audio. La lecture suivra la séquence de file d'attente de ces ajouts.

Nœud Append Audio Data

Éviter une lecture audio accélérée ou déformée

Lors de la diffusion de données audio pendant la lecture de l'onde sonore, vous pouvez rencontrer une lecture audio accélérée ou déformée dans des scénarios spécifiques. Ce problème se produit généralement lorsque :

  1. La lecture de l'onde sonore est proche/à la fin du tampon actuel
  2. De nouvelles données audio sont continuellement ajoutées à l'onde sonore en streaming
  3. La lecture rattrape le flux de données entrant

Vous pouvez arrêter de peupler les données audio à tout moment sans problème. Cependant, pour les scénarios nécessitant un streaming continu (comme le streaming audio en temps réel), il existe deux approches selon la fiabilité de votre streaming de données audio :

Pour un streaming fiable et constant : Utilisez le délégué OnPopulateAudioState pour démarrer la lecture immédiatement après la réception du premier morceau.

Pour un streaming peu fiable (problèmes réseau, données intermittentes) : Ajoutez un délai supplémentaire même après le déclenchement de OnPopulateAudioState pour constituer un tampon plus important avant de démarrer la lecture.

Utilisation de OnPopulateAudioState pour éviter les problèmes de lecture

Remarque : Vous pouvez arrêter de peupler les données audio à tout moment sans causer de problèmes de lecture. L'approche exacte dépend de la fiabilité de votre flux de données audio - utilisez une lecture immédiate pour des flux constants, ou ajoutez un délai de tampon supplémentaire pour des flux peu fiables (par exemple, problèmes de connectivité réseau).

Exemple d'utilisation

Finalement, votre implémentation pourrait ressembler à ceci :

Un exemple d'utilisation d'une onde sonore en streaming

On Populate Audio State

Le délégué OnPopulateAudioState fonctionne de manière similaire à OnPopulateAudioData mais ne diffuse pas les données audio peuplées. Cela peut être utile lorsque vous souhaitez suivre quand les données audio sont peuplées sans transmettre un tableau des données audio peuplées, ce qui peut améliorer les performances.

On Populate Audio State delegate

Travailler avec des données PCM

Pour un accès en temps réel aux données PCM pendant la lecture, consultez Gestion des données PCM.