Abbiamo preparato una traccia che spiega come gestire la connessione tra OpenAI e un flusso radio digitale, DMR. Ovviamente se a tale flusso sono connessi altri sistemi (es. C4FM, DSTAR, etc.) questi beneficeranno della soluzione attivata. La premessa è che già si sappia come operare ed interfacciare un flusso DMR (TG, con il placet dei sysop del network al quale ci rivolgiamo) in autonomia verso sistemi proprietari, e si abbiano opportune conoscenze di network/Linux per i passaggi necessari. La connessione tra il DMR (es. BrandMeister o IPSC2/DMR+) e OpenAI passa su di un computer sul quale è installato il sistema operativo Linux ed è provvisto di una chiavina USB per la conversione analogico/digitale, del tipo DV30 o ThumbDV, con chip AMBE. Può essere operata anche una emulazione software come riportato dall’autore del software, ma non sarà oggetto di questo articolo perchè il test è stato fatto su di un pc e non su di un raspberry.

Lato OpenAI, cosa occorre

E’ necessaria una chiave API (in pratica una stringa di testo) che viene generata registrandosi sul portale. La chiave API viene fornita in presenza di credito (pagamento) sufficiente. Per le nostre prove abbiamo versato 10$. Il servizio offerto da OpenAI è a scalare.

Inserire il credito con un pagamento, associando una carta alla login utilizzata:

poi selezionare il profilo per generare la chiave:

prendere nota della stringa creata, non potrà essere visualizzata successivamente per motivi di sicurezza.

 

Prepariamo l’ambiente operativo, il computer

Per fare girare i software necessari è sufficiente anche un raspberry 4 con sistema operativo raspbian, o un computer con Linux a bordo. A seguire verrà utilizzato un computer con Windows 10 sul quale è installato l’ambiente WSL per fare girare Linux, senza il sovraccarico di una macchina virtuale tradizionale o di una configurazione dual boot. Per informazioni su come installare WSL sul proprio PC seguire questa guida. Abbiamo usato la distribuzione UBUNTU, presente tra quelle disponibili sullo store. Ricordo che i comandi nella Power Shell di Windows vanno eseguiti “come amministratore”.

Al termine dell’installazione di WSL e relativa distribuzione Linux, questa sarà richiamabile ad esempio digitando “ubuntu” nel barra del testo da cercare:

E’ consigliato un aggiornamento dell’ambiente:

sudo apt update

sudo apt upgrade

ed un riavvio.

Inserendo la chiavina AMBE in una porta USB del computer questa sarà vista solo da Windows. Il supporto per la connessione di dispositivi USB non è disponibile in modo nativo in WSL, quindi è necessario installare il progetto usbipd-win open source da questa pagina. Dopo l’installazione e riavvio del computer inserire la chiavina AMBE e digitare (sotto Windows, da Power Shell come amministratore):

usbipd list

individuare quindi la chiavina USB inserita (nell’esempio viene vista come BUSID 1-2) e “attaccarla” a WSL con i comandi:

usbipd bind –busid 1-2

usbipd attach –wsl –busid 1-2

Digitando lsusb dentro Linux la periferica USB sarà visibile. Si consiglia di eseguire il comando sudo ls -la /dev/ttyUSB* per avere conferma della posizione assunta, che servirà in seguito. Da qui le configurazioni si fanno identiche per ambienti quali raspberry o computer con Linux nativo.

Digitare i seguenti comandi:

sudo apt install python3-pip

sudo apt install ffmpeg

sudo apt install net-tools

sudo apt install build-essential

sudo pip3 install gTTS — break-system-packages (se pip3 visualizza un errore, provare con il comando pip e/o senza la specifica –break-system-packages)

sudo apt install git

sudo apt install gcc

Configurazione del server AMBED con la chiavina USB per la conversione analogico/digitale

Scaricare da questo sito il software con il comando

git clone https://github.com/marrold/AMBEServer.git

entrare quindi nella directory

cd AMBEServer

e compilare il programma

gcc -o AMBEserver AMBEserver.c

digitando ls -la si vedrà il programma chiamato AMBEserver

provare ad eseguirlo con i parametri (riferirsi alla posizione della chiavina USB rilevata in precedenza, ovvero se su USB0 o USB1 o altro…)

./AMBEserver -s 460800 -i /dev/ttyUSB0

Dopo aver riconosciuto il dispositivo il server si posiziona in ascolto sulla porta UDP 2460 di default. Per far si che il programma rimanga residente in memoria aggiungere -d (modalità demone) alla chiamata sopra indicata. Il comando ps aux | grep AMBE darà conferma che il software è operativo, come anche netstat -lnp che mostrerà essere in ascolto sulla porta 2460. L’esecuzione di ./AMBEserver -? permette di visualizzare tutte le opzioni di configurazione. Per comodità ho inserito la chiamata in un file/script chiamato “run” (dare i permessi di esecuzione con chmod +x ./run).

Configurazione di dmrbot per la connessione tra il server DMR e OpenAI

Ulteriori informazioni possono essere prese dal sito dell’autore del software, questo il link. Il primo passaggio è quello di scaricare il software sul computer:

usciamo dalla cartella (se siamo ancora dentro) AMBEServer con

cd ..

e scarichiamo il programma sul computer con

git clone https://github.com/narspt/DMRBot

ed entriamo nella nuova dir con

cd DMRBot

Il primo passo è creare un file di testo e copiare (non divulgare a terzi!)  all’interno la chiave API ottenuta all’inizio della procedura dal portale OpenAI:

nano openai_api_key.txt

copiare all’interno la stringa di testo e salvare con CTRL-O e CTRL-X. Questo file deve risiedere nella cartella DMRBot, pena il non funzionamento.

Procediamo ora con la compilazione del programma:

gcc -o dmrbot dmrbot.c

Troveremo al termine della compilazione un nuovo file chiamato dmrbot.

Come si esegue ? Possiamo eseguirlo da linea di comando fornendo tutti i parametri necessari, ovvero:

./dmrbot [CALLSIGN] [DMRID] [DMRHostIP:PORT:TG:PW] [AMBEServerIP:PORT]

Facciamo un esempio di connessione con il master italiano DMR BrandMeister (è possibile collegarci anche sui server IPSC2),usando come prova per questo articolo un TG DMR di un mio sistema. Da notare nella parte finale della chiamata l’indirizzo del server AMBE e relativa porta di ascolto, in questo caso sullo stesso computer.

./dmrbot IK5XMK 2225013 bm2222.dmrbrescia.it:62031:222501:LAMIAPASSWORD 127.0.0.1:2460

Nominativo e ID DMR dovranno essere di chi effettua la connessione,  a seguire l’IP (o il DNS) del master server (per IPSC2 usare dig-italia.grupporadiofirenze.net) e la porta (BM usa la 63001, IPSC2 la 55555). E’ necessario specificare su quale TG operare il collegamento. Attenzione NON usare TG strutturali e/o aggregativi. Usare il proprio ID DMR come TG o quello del proprio ripetitore, come da linee guida diffuse per la sperimentazione. In ogni caso avvisare i sysop del network in presenza di un vostro collegamento stabile. BM inoltre richiede la password impostata all’interno del self care, sezione hotspot. IPSC2 no. Segue localhost (127.0.0.1) se AMBE server è sulla stessa macchina oppure l’IP ove è ubicato il servizio, e la porta UDP specificata nella configurazione di AMBE server.

Come per il server AMBE, ho preferito creare un file/script chiamato “run” ed inserire la chiamat

Premendo il PTT della radio sul TG impostato per la connessione si vedrà lavorare la chiavina USB, con i led che lampeggiano.

Alla fine della trasmissione verrà visualizzata la scritta RX END con il numero di frame (pacchetti) processati. Se questo valore è zero allora non funziona la connessione tra il software dmrbot ed il server AMBE, o le risorse disponibili sono insufficienti all’elaborazione. Di default, se ambeframes <50 nulla viene inviato verso OpenAI (ad esempio un colpo di PTT veloce). Con valori >50 il flusso acquisito verrà inviato all’intelligenza artificiale e verrà restituita la risposta. Questo procedimento richiede alcuni secondi, attendere con pazienza. Inoltre occorre parlare in maniera chiara e comprensibile affinchè la nostra richiesta venga perfettamente compresa ed inviata in radio (TX START) dopo essere gestita da OpenAI.

Recap:

  • è necessaria una chiave API di OpenAI, a pagamento;
  • è necessaria una chiavina USB con chip AMBE del tipo dv30 o ThumbDV;
  • è necessario un raspberry/computer con Linux o Windows 10 con ambiente WSL e installare una distribuzione;
  • è necessario un nominativo radioamatoriale e relativo ID DMR per la connessione al server DMR

Il software “ChatGPT Voice Bot for DMR” di Nuno Silva ha i seguenti compiti: gestire la connessione con il server DMR e passare l’audio al server AMBE ed a ChatGPT. Il software è scritto in C e deve essere compilato, come anche il software che gestisce il server AMBE. E’ necessaria la presenza di Python versione 3 per eseguire lo script dmrbot.py che viene richiamato dal programma dmrbot, script che interroga radioid.net per acquisire i dati della stazione radio trasmittente (es. per gestire la lingua) e riproduce il flusso di ritorno da OpenAI (visibile anche testualmente a schermo).

Comunicateci eventuali integrazioni/correzioni al testo.

Quando utilizzato per i test non è attivo, come anche il TG 222501. Vedremo come e se impiegarlo in maniera stabile.

Buone prove.

Di ik5xmk