Mumble est une solution fantastique pour monter des liaisons audio radioamateur de haute qualité. Le problème majeur ? L’application ne gère absolument pas le déclenchement matériel d’un émetteur (PTT). Sans solution dédiée, on se retrouve coincé, obligé de s’en remettre à des systèmes VOX hasardeux ou à des bidouilles logicielles peu fiables.
L’objectif ici est de combler ce manque en créant une passerelle : un script Python qui « écoute » spécifiquement l’audio de Mumble et déclenche instantanément le PTT matériel de votre transceiver au moindre son reçu, avec un délai de relâchement paramétrable.
Note : Ce montage est réalisé sous Ubuntu avec une interface RigExpert Tiny (commutation sur port série) et un Yaesu FT-890. Le principe reste exactement le même sur un Raspberry Pi : il suffira de remplacer la commande série du script par le pilotage d’une broche GPIO. C’est d’ailleurs un test que nous ferons très bientôt !
1. Prérequis logiciels
Le script fonctionne avec Python 3 et nécessite les bibliothèques pyaudio (pour intercepter le son) et pyserial (pour piloter l’interface série). Installez-les via votre terminal :
Bash
sudo apt update
sudo apt install python3-pyaudio python3-serial
2. Figer le port USB de l’interface
Sous Linux, l’attribution des ports USB est volatile (/dev/ttyUSB1 peut devenir ttyUSB2 au prochain redémarrage). Pour éviter que le script ne tourne dans le vide, nous allons utiliser l’identifiant matériel unique de l’interface.
Tapez cette commande :
Bash
ls -l /dev/serial/by-id/
Repérez la ligne qui correspond à votre port PTT (sur une RigExpert, c’est généralement if01-port0, le if00 gérant le CAT). Copiez ce chemin complet, il servira dans le script.
3. Le script Python de commutation (mumble_vox_ptt.py)
Créez un fichier mumble_vox_ptt.py et collez-y le code ci-dessous. Pensez à modifier :
- La variable
PTT_PORTavec votre propre cheminby-id. - La variable
TARGET_INDEXavec l’index de votre moniteur audio USB (lancez le script une première fois, il listera vos cartes son pour vous aider à trouver la bonne).
Python
import time
import struct
import pyaudio
import serial
CHUNK = 256
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000
# Seuil anti-bruit de fond (à ajuster entre 2500 et 5000 selon votre carte son)
THRESHOLD = 5000
HOLD_TIME = 1.5
# Remplacez par le chemin by-id de votre propre interface PTT
PTT_PORT = "/dev/serial/by-id/usb-FTDI_MixW_RigExpert_Tiny_00000000-if01-port0"
# Ouverture du port et mise au repos immédiate des lignes DTR et RTS
ser = serial.Serial(PTT_PORT, baudrate=9600, timeout=0)
ser.dtr = False
ser.rts = False
time.sleep(0.2)
p = pyaudio.PyAudio()
# Renseignez ici l'index de votre moniteur USB (celui où sort l'audio Mumble)
TARGET_INDEX = 6
print(f"Ouverture du flux audio (index {TARGET_INDEX}) et verrouillage PTT au repos...")
stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, input_device_index=TARGET_INDEX, frames_per_buffer=CHUNK)
print("Passerelle Mumble -> PTT Matériel active...")
ptt_active = False
last_voice_time = time.time()
def get_rms(data):
count = len(data) // 2
if count == 0:
return 0
shorts = struct.unpack(f"<{count}h", data)
return (sum(s * s for s in shorts) / count) ** 0.5
def set_ptt(state):
global ptt_active, last_voice_time
if state:
last_voice_time = time.time()
if not ptt_active:
ser.rts = True # Commutation du vrai PTT sur la ligne RTS
print("\n>>> PTT MATÉRIEL ACTIVÉ (RTS)")
ptt_active = True
else:
if ptt_active and (time.time() - last_voice_time > HOLD_TIME):
ser.rts = False # Relâchement PTT
print("\n<<< PTT MATÉRIEL COUPÉ")
ptt_active = False
try:
while True:
data = stream.read(CHUNK, exception_on_overflow=False)
rms = get_rms(data)
print(f"RMS : {int(rms):<5} | Seuil : {THRESHOLD} ", end="\r", flush=True)
if rms > THRESHOLD:
set_ptt(True)
else:
set_ptt(False)
except KeyboardInterrupt:
print("\nArrêt propre du script...")
ser.dtr = False
ser.rts = False
ser.close()
stream.stop_stream()
stream.close()
p.terminate()
4. Raccordement et exécution
Côté matériel, reliez la sortie PTT de votre interface directement à la prise RCA (souvent marquée « PTT » ou « SEND ») à l’arrière de votre transceiver.
Lancez le script dans votre terminal :
Bash
python3 mumble_vox_ptt.py
Le tour est joué : Mumble dispose enfin d’un véritable PTT matériel réactif au quart de tour, sans couper vos premières syllabes.
73 de F4IAA !

Commentaires récents