Projekt AI-DX od Andrea Decarolisa (K1FM) je open-source Python aplikácia, ktorá dokáže autonómne viesť skutočné SSB QSO na KV pásmach – bez toho, aby za rádiom sedel operátor. Nie je to chatbot simulujúci prevádzku na obrazovke. AI-DX sa pripojí k fyzickému transceiveru, počúva pásmo, rozpoznáva volanie, odpovedá hlasom, zaloguje spojenie do ADIF a znova zavolá CQ. Projekt nemá za sebou firemné zázemie ani tím vývojárov – zatiaľ tri hviezdy na GitHube a jeden nadšenec, ktorý si to raz jednoducho napísal a dal von.
Pre rádioamatérsku komunitu je AI-DX zaujímavý nielen ako hotový nástroj, ale aj ako referenčná implementácia: ukazuje, ako sa dajú moderné AI API integrovať s existujúcim rádiovým hardvérom bez nutnosti špeciálneho hardvérového rozhrania. Kto má záujem pochopiť, ako spolu fungujú GPT-4o Realtime, WebSocket audio most a ADIF logovanie, môže jednoducho spustiť demo režim na ľubovoľnom MacBooku a sledovať, čo sa deje.
V článku sa dočítate
K1FM: kto za tým stojí

Autor Andrea Decarolis má značku K1FM. Je vývojár so záujmom o prepojenie moderných AI API s rádioamatérskou praxou. AI-DX nie je jeho jediným projektom v tejto oblasti – spolu s ním je na GitHube aj wfweb, webový server, ktorý sprístupňuje audio a PTT transceivera cez WebSocket rozhranie s podporou TLS. Táto architektúra má výhodu, že wfweb môže bežať priamo na počítači pripojenom k rádiu (napríklad Raspberry Pi v stanici), kým AI-DX beží na ľubovoľnom inom stroji v sieti – aj vzdialenom.
Architektúra: čo sa skutočne deje na pozadí

AI-DX stavia na GPT-4o Realtime API od OpenAI – špeciálnom rozhraní určenom na spracovanie zvuku v reálnom čase. Celý reťazec vyzerá takto: wfweb WebSocket prijíma audio z prijímača (48 kHz PCM16), posiela ho do GPT-4o Realtime, kde prebieha rozpoznávanie reči (STT), spracovanie jazykovým modelom (LLM) aj syntéza odpovede (TTS) – všetko na strane servera OpenAI. Vygenerovaný zvuk sa pošle späť cez wfweb na vysielač a model súčasne cez WebSocket prepne PTT.
Dôsledok tohto dizajnu je zaujímavý: na lokálnom počítači nebeží žiadny STT engine, žiadny TTS engine, žiadna detekcia hlasovej aktivity. Model navyše nedrží žiadnu pamäť medzi QSO – každé volanie CQ začína s prázdnym kontextom. To nie je chyba, ale zámerné rozhodnutie: predchádza sa tým hromadeniu stavu, ktorý by model mohol zmiasť pri dlhých prevádzkových reláciách. Výpočtová záťaž je plne prenesená na cloudový server OpenAI. To umožňuje spustiť AI-DX aj na Mac Mini M1 bez akéhokoľvek GPU. Praktický kompromis je zrejmý: beží to iba keď máte internet a platný OpenAI API kľúč s prístupom k modelu gpt-4o-realtime-preview.
Kontakty sa sledujú cez function calling: keď model počas QSO počuje volací znak, meno operátora alebo QTH, zavolá interný nástroj update_contact() a priebežne dopĺňa záznam. Keď operátor povie rozlúčku, model zavolá update_contact(closing=true), spojenie sa zapíše do ADIF logu a AI-DX znova zavolá CQ. Žiadne regulárne výrazy, žiadna textová analýza – iba natívne porozumenie jazyka.
Inštalácia a technické požiadavky
Projekt vyžaduje Python 3.10 až 3.13 a správcu balíčkov uv. Inštalácia je jednoduchá:
git clone https://github.com/adecarolis/AI-DX && cd AI-DX && uv sync
Aktuálne je projekt testovaný na macOS Apple Silicon (M4). Na iných platformách môže byť potrebná úprava – autor to otvorene uvádza v README. Okrem Python závislostí musí na sieti bežať inštancia wfweb, ktorá fyzicky ovláda transceiver. Bez wfweb je k dispozícii demo režim: AI-DX počúva mikrofón počítača a odpovedá cez reproduktory bez akéhokoľvek rádiového zariadenia – výborné na testovanie alebo na oboznámenie sa so správaním modelu.
Konfigurácia: .env súbor namiesto GUI
Všetky nastavenia idú cez súbor .env v koreňovom adresári projektu. Povinné premenné sú OPENAI_API_KEY, callsign a WFWEB_URL. Voliteľné premenné pokrývajú meno operátora, QTH, anténu, výkon a typ transceivera – model ich využíva priamo v QSO reči. Frekvencia a mód sa načítavajú živé zo statusových správ wfweb; do ADIF logu sa zapíše presná hodnota VFO v momente ukončenia QSO.
Zásadnou voľbou je štýl operátora, nastavený premennou OPERATOR_STYLE:
| Štýl | Správanie |
|---|---|
| CALLING_CQ | Volá CQ každých N sekúnd, vedie bežné QSO |
| CONTESTING | Rýchla výmena sériových čísel, contestový protokol |
| MONITORING | Čaká na priame volanie, sám CQ nevolá, každých 5 minút vydá ID |
| SWL | Iba príjem, nikdy nevysiela |
Režim CONTESTING je z technického hľadiska zaujímavý: model musí zvládnuť rýchle pile-up protokoly, krátke výmeny a poradie spracovania volaní. Aktuálne možnosti GPT-4o Realtime v tomto smere ešte neboli systematicky zdokumentované – ide o otvorený priestor pre experimenty. detektor duplicít (station Skip detection) porovnáva volacia znaky pomocou string similarity a zabraňuje tomu, aby model volaním rovnakej stanice v slučke blokoval ostatných.
Premenné ladenia ako VAD_THRESHOLD (prah rozpoznávania hlasu, 0.0–1.0), VAD_SILENCE_DURATION (pauza na ukončenie repu v sekundách), CQ_INTERVAL_SEC a CQ_RESTART_DELAY_SEC dávajú operátorovi priamu kontrolu nad rytmom prevádzky. Na rušnom pásme s QRM nízky VAD_THRESHOLD spôsobí falošné aktivácie; na tichom pásme zas príliš vysoký prah môže preskočiť slabé stanice. Pred prvým nasadením stojí za to tieto hodnoty kalibrovat v demo režime.
Terminálové rozhranie a ADIF log

AI-DX obsahuje plnohodnotné terminálové rozhranie postavené na knižnici Rich, aktualizované 10-krát za sekundu. Zobrazuje S-meter (hodnoty z wfweb, rozsah −54 dB až +60 dB od S9), indikátor PTT (RX / VOICE↑ / ON AIR), aktuálnu frekvenciu a mód, výkon a SWR pri vysielaní a priebežný záznam RX/TX prepisov. Aktívne QSO so stav, volacom znakom a QTH je viditeľné v spodnom riadku.
ADIF log sa ukladá do logs/contacts.adi. Demo režim vytvára separátny časovo označený súbor logs/demo_YYYYMMDD_HHMMSS.adi, takže produkčné záznamy nie sú nikdy ovplyvnené testovaním. Každý záznam obsahuje polia QSO_DATE, TIME_ON, CALL, FREQ, MODE, RST_SENT, RST_RCVD, NAME, QTH a NOTES. Frekvencia sa načíta živá z wfweb v momente ukončenia QSO – nie fixná hodnota z konfigurácie.
Obmedzenia, právna zodpovednosť a otvorené otázky

Autor v DISCLAIMER.md explicitne zdôrazňuje: operátor zodpovedný za každé vysielanie ste vy, nie model. Všetky legislatívne povinnosti platné pre autonómne systémy podľa predpisov IARU, FCC a národných regulátorov sa vzťahujú na držiteľa licencie. Projekt má v README osobitný oddiel s výstrahou, ktorý je podmienkou spustenia.
Model gpt-4o-realtime-preview je odporúčaný pre silnú schopnosť porozumieť čiastočným volacím znakom, fonetickej abecede a slabým HF signálom. Lacnejší gpt-realtime-1.5 je dostupný ako záložný, ale autor upozorňuje na viditeľne horšiu presnosť v rušnom éteri. Náklady na API OpenAI závisí od dĺžky relácie a nie sú zanedbateľné pri dlhých contestových podujatiach.
Aktuálne chýba natívna integrácia s externým DX klastrom, HamQTH callbookom alebo LoTW – ADIF log existuje, ale jeho automatické odovzdanie je na používateľovi. Rovnako nie je implementovaná podpora CW; model rozumie CW textu, keď ho transceiver dekóduje a zobrazí ako text, ale natívne dekódovanie Morseovej abecedy zo zvuku by vyžadovalo ďalší modul. Práve toto sú priestory, kde by komunita mohla projekt posunúť ďalej.
Závažnejším praktickým obmedzením môže byť latencia cloudového API. GPT-4o Realtime zvyčajne odpovedá do niekoľkých stoviek milisekúnd od ukončenia repu volajúcej stanice, ale pri zaťaženom serveri alebo nestabilnom internete môže byť pauza pred TX viditeľná. Na contestovom pásme s hustou pile-up to môže robiť dojem pomalého operátora. Hodnota VAD_SILENCE_DURATION=0.6 je predvolená, ale zníženie na 0.4 s môže odozvu urýchliť za cenu občasného predčasného vysielania.
Regulačný rámec: kto je zodpovedný?
AI-DX otvorene stavia na fakte, že podľa predpisov väčšiny krajín vrátane SR a ČR musí za každé vysielanie zodpovedať kontrolný operátor – držiteľ platnej amatérskej licencie, ktorý aktívne dohliada na prevádzku. Autonómny systém toto pravidlo nemení. Ak AI-DX omylom odpovie na nelegálne volanie, vyšle nesprávny výkon alebo poruší bandplán, zodpovednosť nesie operátor, nie model. Autor v DISCLAIMER.md uvádza, že softvér je poskytovaný „as is“ bez záruky a používateľ berie na vedomie všetky regulačné povinnosti.
Praktický dôsledok: AI-DX nie je určený na prevádzku bez dozoru. Realistický prípad použitia je napríklad contestová prevádzka, kde operátor sleduje terminál a prípadne preberá ručné ovládanie, alebo experimentálne testovanie SSB pile-up spracovania bez fyzickej prítomnosti pri rádiu, ale s možnosťou okamžitého odpojenia. Režim SWL je z tohto pohľadu najbezpečnejší – nikdy nevysiela a slúži výhradne na príjem a analýzu.
Ako sa zapojiť
Zdrojový kód je dostupný na github.com/adecarolis/AI-DX pod licenciou MIT. Licencia je čistá: predchádzajúce verzie projektu využívali Hamlib (LGPL v2.1), aktuálna verzia Hamlib neobsahuje – PTT ovládanie ide výhradne cez wfweb WebSocket príkaz setPTT. Záujemcovia o portáciu na Linux alebo Windows môžu otvoriť issue na GitHube – základ je čisto Python a asyncio, takže technická bariéra nie je vysoká. Chyby a návrhy patria do záložky GitHub Issues. Kto má skúsenosť s integráciou Hamlib, N1MM+ alebo externých DX klastrov, môže prispieť pull requestom – projekt má čistú modulárnu štruktúru s oddelenými adresármi pre audio, AI, radio, core a UI. Testovanie v demo režime nevyžaduje žiadne rádio ani licenciu – stačí Python, OpenAI API kľúč a mikrofón.
Zdrojový kód, inštalačný postup a DISCLAIMER sú dostupné na github.com/adecarolis/AI-DX. Demo režim funguje bez rádiového hardvéru.
