Servus,
There are actually multiple FOSS Softmodems.
This one, for example, is based on spandsp:
https://github.com/proquar/asterisk-Softmodem
This one was written by myself and handles the data-link protocoll of
BTX for error-free communications:
https://github.com/Casandro/btx_modem
It's also just 527 lines of code with the only external dependency being
Asterisk.
Then there's also IAXModem, but that's mainly aimed at Faxes.
There's actually a big advantage of using software based modems over
hardware based ones. With IP-Telephony it is vital to have proper
clocks. Unfortunately many bad ATAs have really bad clocks. So your
sender might send out its voice with 8010 Hz sampling rate, while the
receiver might run at 7090 Hz That means that eventually you will have
buffers running over and samples being thrown away. This is very bad for
modems and one of the reasons why T.38 was invented. However with a
software based modem you can just send a packet of data for every packet
you get, so essentially, if it isn't converted to TDM in the middle,
you'll adapt to the speed of the ATA.
(The obvious sane solution to that would of course be to simply use NTP
to determine the frequency error of your system and then adjust your
sample rate so it'll be precisely 8kHz on average. However sane people
usually don't work in that field because of SIP)
Servus
Christian