The obvious approach would be to port the decoding code from wsjtx but that source base is pretty daunting and includes several languages including Fortran.
I went looking for other implementations and stumbled across rtmrtmrtmrtm's weakmon which is an almost pure python implementation (there's a few bits of c). The project hasn't been updated for some time and I ran in to a few issues running under python 3 on Ubuntu linux.
Weakmon directly reads audio from an input (including things like the IC-7300 I'm using) and can use serial CAT control to hop bands so it's very functional.
I found the most recent fork by kholia and forked that to create my version here.
My focus is on WSPR and running under python3. Other modes may not be working.
Changes I've made
- Updated the README.md to explain what my fork is about
- Running under Python 3.9.7 I struck a number of exceptions during decode all complaining about things that should be integers but instead were floats. I've fixed these as I've seen them but there may be more. (All in wspr.py)
- Phil, VK7JJ, pointed out that transmit maidenhead locators were incorrect. I've included a fix by Ross, EX0AA.