Audio GNU-RADIO vers VLC

Pour des essais avec GNU-Radio il peut être intéressant d’avoir une sortie audio sur un PC ou un MAC sur le réseau. La solution proposée ici est simple à mettre en œuvre à condition de connaître la syntaxe des commandes.

GNU Radio vers VLC en TCP ou UDP

Synoptique GNU-Radio

Pour cet essai on met un générateur sinusoïdal à fréquence ajustable et nous allons tester 2 méthodes d’envoi (streaming) vers un PC distant diffusant le signal avec VLC.

Pour cet exemple la fréquence d’échantillonnage au niveau de GNU-Radio est 48000Hz. C’est une valeur standard pour de l’audio de qualité, mais on pourrait se limiter à 10kHz pour limiter le débit sachant que notre générateur audio ne dépasse pas les 3kHz. En sortie du générateur fournissant des valeurs entre +1 et -1 on recadre le format Float vers de l’entier 16 bits signé (coefficient de recadrage 16000).Une fonction Throttle sert à ajuster le débit de sortie. En sortie deux blocs TCP Sink et UDP Sink permettent de transmettre en TCP ou UDP vers VLC

TCP Sink

Dans le cas d’une sortie en TCP mettre l’adresse IP de la machine sur laquelle tourne GNU-Radio. Mettre un port, par exemple 9001 et choisir le mode serveur. En TCP lorsqu’une machine A envoie des données vers une machine B, la machine B est prévenue , vérifie l’intégrité des données et les redemandes si besoin. Ce rend la liaison fiable au détriment du débit plus important.

UDP Sink

Dans le cas d’une sortie en UDP mettre l’adresse IP de la machine à laquelle est destinée les données. Mettre une payload size de 1000, les 1472 de base donnent un comportement ératique. Mettre un port de destination comme 9001.  En UDP, lorsqu’une machine A envoie des paquets à destination d’une machine B, ce flux est unidirectionnel. La transmission des données se fait sans prévenir le destinataire (la machine B), et le destinataire reçoit les données sans effectuer d’accusé de réception vers l’émetteur (la machine A). Cela est moins fiable, mais pratique pour du streaming audio ou la perte d’un message n’est pas catastrophique. 

Pour essayer vous pouvez télécharger et dézipper le fichier source .grc . https://f1atb.fr/wp-content/uploads/2021/03/test_audio_sink-1.zip. Vous choisissez (paramètre enable/disable) la sortie TCP ou UDP.

Lecture par VLC

Avec le protocole TCP, il est nécessaire de lancer le serveur TCP de GNU-Radio avant de lancer VNC.

Si vous êtes sous Windows, passez en mode commande (cmd) et allez dans le dossier où se trouve VNC. Généralement C:\Program Files\VideoLAN\VNC. Tapez la commande suivante:

vlc --demux=rawaud --rawaud-channels=1 --rawaud-samplerate=48000 tcp://192.168.0.133:9001

On y retrouve les paramètres suivants:
– rawaud car l’audio sur 16 bits n’est pas comprimé
– channels=1 car nous sommes en monophonie
– samplerate: ici 48000, mais on peut mettre autre chose suivant le débit de sortie de GNU Radio
– tcp://xxxxx:port cela correspond à l’adresse IP sur votre réseau du serveur coté GNU-Radio et du port choisi.

Arrivez à ce stade, vous devez entendre le générateur Audio dans GNU-Radio dont la fréquence se pilote par un curseur. Cela vous permettra de constater le retard d’environ 1 s entre chaque changement de la fréquence au curseur et le changement de la hauteur du son.

Si vous optez pour le mode UDP plus adapté au streaming, la commande pour lancer VLC est similaire sauf l’adressage IP.

vlc --demux=rawaud --rawaud-channels=1 --rawaud-samplerate=48000 udp://@:9001

Cette méthode est intéressante pour tester rapidement une sortie d’un récepteur radio modélisé sur GNU-Radio ou toute autre application tournant sur un « Single Board Computer » comme un Raspberry Pi ou Orange Pi.

Autres articles sur GNU – Radio

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *