Projekt AI-DX od Andrea Decarolise (K1FM) je open-source Python aplikace, která dokáže autonomně vést skutečné SSB QSO na KV pásmech – aniž by za rádiem seděl operátor. Není to chatbot simulující provoz na obrazovce. AI-DX se připojí k fyzickému transceiveru, poslouchá pásmo, rozpoznává volání, odpovídá hlasem, zaloguje spojení do ADIF a znovu zavolá CQ. Projekt nemá za sebou firemní zázemí ani tým vývojářů - zatím tři hvězdy na GitHube a jeden nadšenec, který si to jednou jednoduše napsal a dal ven.
Pro radioamatérskou komunitu je AI-DX zajímavý nejen jako hotový nástroj, ale také jako referenční implementace: ukazuje, jak lze moderní AI API integrovat se stávajícím rádiovým hardwarem bez nutnosti speciálního hardwarového rozhraní. Kdo má zájem pochopit, jak spolu fungují GPT-4o Realtime, WebSocket audio most a ADIF logování, může jednoduše spustit demo režim na libovolném MacBooku a sledovat, co se děje.
V článku se dočtete
K1FM: kdo 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 transceiveru přes WebSocket rozhraní s podporou TLS. Tato architektura má výhodu, že wfweb může běžet přímo na počítači připojeném k rádiu (například Raspberry Pi ve stanici), zatímco AI-DX běží na libovolném jiném stroji v síti – i vzdáleném.
Architektura: co se skutečně děje na pozadí

AI-DX staví na GPT-4o Realtime API od OpenAI – speciálním rozhraní určeném ke zpracování zvuku v reálném čase. Celý řetězec vypadá takto: wfweb WebSocket přijímá audio z přijímače (48 kHz PCM16), posílá jej do GPT-4o Realtime, kde probíhá rozpoznávání řeči (STT), zpracování jazykovým modelem (LLM) i syntéza odpovědi (TTS) – vše na straně serveru OpenAI. Vygenerovaný zvuk se pošle zpět přes wfweb na vysílač a model současně přes WebSocket přepne 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 navíc nedrží žádnou paměť mezi QSO – každé volání CQ začíná s prázdným kontextem. To není chyba, ale záměrné rozhodnutí: předchází se tím hromadění stavu, který by model mohl zmást při dlouhých provozních relacích. Výpočetní zátěž je plně přenesena na cloudový server OpenAI. To umožňuje spustit AI-DX i na Mac Mini M1 bez jakéhokoli GPU. Praktický kompromis je zřejmý: běží to jen když máte internet a platný OpenAI API klíč s přístupem k modelu gpt-4o-realtime-preview.
Kontakty sa sledujú cez function calling: když model během QSO slyší volací znak, jméno operátora nebo QTH, zavolá interný nástroj update_contact() a průběžně doplňuje záznam. Když operátor řekne rozloučenou, model zavolá update_contact(closing=true), spojení se zapíše do ADIF logu a AI-DX znovu zavolá CQ. Žádné regulární výrazy, žádná textová analýza – pouze nativní porozumění jazyku.
Instalace a technické požadavky
Projekt vyžaduje Python 3.10 až 3.13 a správce balíčků uv. Instalace je jednoduchá:
git clone https://github.com/adecarolis/AI-DX && cd AI-DX && uv sync
Aktuálně je projekt testován na macOS Apple Silicon (M4). Na jiných platformách může být nutná úprava – autor to otevřeně uvádí v READMU. Kromě Python závislostí musí na síti běžet instance wfweb, která fyzicky ovládá transceiver. Bez wfweb je k dispozici demo režim: AI-DX poslouchá mikrofon počítače a odpovídá přes reproduktory bez jakéhokoli rádiového zařízení – výborné k testování nebo k obeznámení se s chováním modelu.
Konfigurace: .env soubor namísto GUI
Všechna nastavení jdou přes soubor .env v kořenovém adresáři projektu. Povinné proměnné jsou OPENAI_API_KEY, callsign a WFWEB_URL. Volitelné proměnné pokrývají jméno operátora, QTH, anténu, výkon a typ transceiveru – model je využívá přímo v QSO řeči. Frekvence a mód se načítají živé ze statusových zpráv wfweb; do ADIF logu se zapíše přesná hodnota VFO v momente ukončenia QSO.
Zásadnou voľbou je štýl operátora, nastavený proměnnou OPERATOR_STYLE:
| Styl | Chování |
|---|---|
| CALLING_CQ | Volá CQ každých N sekund, vede běžné QSO |
| CONTESTING | Rychlá výměna sériových čísel, contestový protokol |
| MONITORING | Čeká na přímé volání, sám CQ nevolá, každých 5 minut vydá ID |
| SWL | Pouze příjem, nikdy nevysílá |
Režim CONTESTING je z technického hlediska zajímavý: model musí zvládnout rychlé pile-up protokoly, krátké výměny a pořadí zpracování volání. Aktuální možnosti GPT-4o Realtime v tomto směru ještě nebyly systematicky zdokumentovány – jde o otevřený prostor pro experimenty. detektor duplicit (station Skip detection) porovnává volací znaky pomocí string similarity a zabraňuje tomu, aby model voláním stejné stanice ve smyčce blokoval ostatní.
Proměnné ladění jako VAD_THRESHOLD (práh rozpoznávání hlasu, 0.0–1.0), VAD_SILENCE_DURATION (pauza na ukončení řepu 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ízký VAD_THRESHOLD způsobí falešné aktivace; na tichém pásmu zase příliš vysoký práh může přeskočit slabé stanice. Před prvním nasazením stojí za to tyto hodnoty kalibrovat v demo režimu.
Terminálové rozhraní a ADIF log

AI-DX obsahuje plnohodnotné terminálové rozhraní postavené na knihovně Rich, aktualizované 10krát za sekundu. Zobrazuje S-metr (hodnoty z wfweb, rozsah −54 dB až +60 dB od S9), indikátor PTT (RX/VOICE↑/ON AIR), aktuální frekvenci a mód, výkon a SWR při vysílání a průběžný záznam RX/TX přepisů. Aktivní QSO se stav, volacím znakem a QTH je viditelné ve spodním řádku.
ADIF log se ukládá do logs/contacts.adi. Demo režim vytváří separátní časově označený soubor logs/demo_YYYYMMDD_HHMMSS.adi, takže produkční záznamy nejsou nikdy ovlivněny testováním. Každý záznam obsahuje pole QSO_DATE, TIME_ON, CALL, FREQ, MODE, RST_SENT, RST_RCVD, NAME, QTH a NOTES. Frekvence se načítá živá z wfweb v momentě ukončení QSO – ne fixní hodnota z konfigurace.
Omezení, právní odpovědnost a otevřené otázky

Autor v DISCLAIMER.md explicitně zdůrazňuje: operátor zodpovědný za každé vysílání jste vy, ne model. Všechny legislativní povinnosti platné pro autonomní systémy podle předpisů IARU, FCC a národních regulátorů se vztahují na držitele licence. Projekt má v READMU zvláštní oddíl s výstrahou, který je podmínkou spuštění.
Model gpt-4o-realtime-preview je doporučen pro silnou schopnost porozumět částečným volacím znakům, fonetické abecedě a slabým HF signálům. Levnější gpt-realtime-1.5 je dostupný jako záložní, ale autor upozorňuje na viditelně horší přesnost v rušném éteru. Náklady na API OpenAI závisí na délce relace a nejsou zanedbatelné při dlouhých contestových akcích.
Aktuálně chybí nativní integrace s externím DX clusterem, HamQTH callbookem alebo LoTW – ADIF log existuje, ale jeho automatické odovzdanie je na používateľovi. Rovnako nie je implementovaná podpora CW; model rozumí CW textu, když jej transceiver dekóduje a zobrazí jako text, ale nativní dekódování Morseovy abecedy ze zvuku by vyžadovalo další modul. Právě toto jsou prostory, kde by komunita mohla projekt posunout dál.
Závažnějším praktickým omezením může být latence cloudového API. GPT-4o Realtime obvykle odpovídá do několika stovek milisekund od ukončení řepu volající stanice, ale při zatíženém serveru nebo nestabilním internetu může být pauza před TX viditelná. Na contestovém pásmu s hustou pile-up to může dělat dojem pomalého operátora. Hodnota VAD_SILENCE_DURATION=0.6 je výchozí, ale snížení na 0.4 s může odezvu urychlit za cenu občasného předčasného vysílání.
Regulační rámec: kdo je zodpovědný?
AI-DX otevřeně staví na faktu, že podle předpisů většiny zemí včetně ČR a SR musí za každé vysílání odpovídat kontrolní operátor – držitel platné amatérské licence, který aktivně dohlíží na provoz. Autonomní systém toto pravidlo nemění. Pokud AI-DX omylem odpoví na nelegální volání, vyšle nesprávný výkon nebo poruší bandplán, odpovědnost nese operátor, nikoli model. Autor v DISCLAIMER.md uvádí, že software je poskytován „as is“ bez záruky a uživatel bere na vědomí všechny 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 případně přebírá ruční ovládání, nebo experimentální testování SSB pile-up zpracování bez fyzické přítomnosti u rádia, ale s možností okamžitého odpojení. Režim SWL je z tohoto pohledu nejbezpečnější – nikdy nevysílá a slouží výhradně pro příjem a analýzu.
Jak se zapojit
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ální verze Hamlib neobsahuje – PTT ovládání jde výhradně přes wfweb WebSocket pří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+ nebo externích DX clusterů, může přispět pull requestem – projekt má čistou modulární strukturu s oddělenými adresáři pro audio, AI, radio, core a UI. Testování v demo režimu nevyžaduje žádné rádio ani licenci – stačí Python, OpenAI API klíč a mikrofon.
Zdrojový kód, instalační postup a DISCLAIMER jsou dostupné na github.com/adecarolis/AI-DX. Demo režim funguje bez rádiového hardwaru.
