Sox pour les passerelles audio

Projet: Utiliser Sox pour amplifier le niveau audio de vos correspondant. Ceci par l’exemple.

J’ai pris pour ce test un raspberry pi et un PMR 446mhz.

Voir mon article: http://www.f4htb.fr/2017/04/06/installation-de-mumble-en-mode-client-pour-relai-gateway-standalone/

I.deux flux audio:

1. ce que le raspi recoi via le client mumble et qui va être retransmi par le PMR

2. ce qui est reçu par le PMR et qui va être envoyé sur mumble via le raspi

Le but ici est d’insérer un petit utilitaire entre le client mumble et la carte son dans le sens client mumble => carte son et carte son => client mumble.

Pour cela, il faut créer une carte son intermédiaire appelé alsa loopback et relier ce loopback a la vrais carte son via le logiciel qui va faire les transformations.

Client Mumble => Loopback alsa => arecord, sox, aplay => carte son

Carte son => Loopback alsa => arecord, sox, aplay => carte son

II.créer la carte son virtuelle alsa loopback

sudo nano /etc/modules

Ajouter: snd-aloop

————

# /etc/modules: kernel modules to load at boot time.

#

# This file contains the names of kernel modules that should be loaded

# at boot time, one per line. Lines beginning with « # » are ignored.

#Ajout pour RFR

snd-aloop

sudo nano /lib/modprobe.d/aliases.conf

en dessous de options snd-via82xx-modem index=-2 mettre:

options snd-aloop index=1 id=GWloop pcm_substreams=2 enable=1

Redémarer le raspi.

En faisant un aplay -l vous aller voir une nouvelle carte son avec deux devices:

Lorsque vous envoyez du son dans plughw:CARD=GWloop,DEV=1 ca resort sur plughw:CARD=GWloop,DEV=0 et invesement

Les deux sens sont possible en même temps, ce sont des tubes indépendants.

III.Mumble

Entrée audio:

Sortie Audio:

IV. Les commandes pour jouer avec les loopback et sox

La commande est a découper en trois partie via des | ce que l’on appel des « pipes ».

Ca sert a envoyer la sortie d’une commande dans l’entrée d’une autre. Pour les fans des films d’horreur, c’est comme dans « human centiped » ou « human centipad » pour les fans de south park.

En première partie, arecord permet de récupérer le son de Gwloop,DEV=1, ce qui corespond a l’autre côté du tuyau que l’on a mis dans mumble voir ci-dessus. On lui dit également de bufferiser 1000000 µS pour éviter les micros coupures. S16_LE est le forma 16 bits. -r 48000 est la fréquence d’echantillonage en hz, -c 1 veut dire mono (1 seul canal en réalité), on lui dit -q pour qu’il ne sort pas trop de text qui ne sert a rien.

Deuxième partie, sox est l’utilitaire qui permet le traitement audio, -r 48000 -c1 -b 16 -e signed -q ca définie 48khz… 1 canal… 16 bits… signed pour etre en S de S16_LE. -t raw c’est le format de transition, on aurai pu utiliser mp3 ou wav par exemple.

sinc 300-5000 est un filtre kaiser-windowed band-pass avec des pentes a -120db

gain -3 equalizer 2k 500 +3 On applique du gain sur le haut de la bf pour eviter les cannard. On met un gain de -3 pour éviter le cliping.

Compand 0.02,0.8 -90,-90,-60,-10,-40,-10,-20,-10,-10,-10,-6,-10,-3,-10,0,-10 -10 on fait un compresseur limiteur pour ramener le tout a -10db.

Ceci pour effet de filtrer >300hz pour enlever les bourdonement du ctcss et au dessus de 5000 pour ne pas saturer spectralement l’entrée du boafeng.

Le couple equalizer +3db sur +/- 500hz autour de 2khz pour atténuer les voix de cannard, gain -3 db pour ne pas faire de cliping.

Et enfin on ramène le tout a -10db avec un compresseur limiteur. En premier dans l’ordre, l’attaque et la relache. Chaque couple de deux séparer par des « , » est un début et la limite a laquel le ramener. Par exemple on a -90,-90,-60,-10 cela veux dire que en dessous de -90 on ne touche pas. De -90 à -60 on met a -90, de -60 à -40, on met à -10 etc…

Troisième et dernière partie, on envoie le tout cers la carte son: plughw:CARD=DeviceEEPROM,DEV=0

Vous l’aurez compris ca c’était le sens mumble vers carte son.

Voici la commande pour la carte son vers mumble:

V.script de démarage automatique dans /etc/init.d/mumbleclient:

 

Laisser un commentaire

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