Monthly Archives: July 2025

David July 2025, WASPAA Paper, PAPR, RADE V2 SNR, BBFM OTC Demo

HF RADE Paper

Our HF RADE paper “RADE: A Neural Codec for Transmitting Speech over HF Radio Channels” has been peer reviewed and accepted for presentation at WASPAA 2025 in October, so I spent some time with Jean-Marc addressing the reviewers comments. The updated paper can be found on ArXiv.

PAPR Issue

With our RADE development work, we have put quite a bit of effort into minimizing the peak to average power ratio (PAPR) of the transmit waveform, to help make the most of the power amplifiers found in SSB radios.

While bringing up the RADE V2 “smoke test” code I noticed the PAPR was being degraded when the signal passed through a band pass filter. This sort of filtering is fairly common, for example every SSB radio will have a 300 to 2700 Hz (roughly) filter in the voice path. I checked RADE V1 and sure enough the same thing was happening – the full 8 kHz wide signal has a PAPR of about 0.8 dB, but once it is band pass filtered it’s more like 4.5 dB. This is a pretty significant issue, even a 3 dB increase in PAPR means our average transmit power is halved. Or, perhaps this can be seen as an opportunity. We are already doing pretty well with RADE V1, so if we can modify the waveform so it maintains a low PAPR even when it passes through a band pass filter, we may be able to obtain an extra few dB of performance.

Minimising PAPR is a complex issue, as when we compress the signal (e.g. by clipping the peaks), we tend to generate inter-modulation noise at frequencies inside the waveform (in band) and at adjacent frequencies either side of it (out of band). The in-band noise can reduce performance and the out of band create interference for other users on adjacent channels. So I’m looking into various techniques to reduce PAPR when passed through a band pass filter, and at the same time control the inter-modulation noise and bandwidth of the signal.

Improving Performance against SNR

The RADE V2 work to date has narrower bandwidth, a cleaner spectrum, and lower latency than RADE V1. The next step is to see if we can improve the speech quality at low and high SNRs. Unfortunately the issues with PAPR I described above wiped out some of my previous gains so, armed with this new knowledge, I returned to improving low SNR performance.

I had an expectation of around 3dB gains with RADE V2 over V1, as that’s the overhead taken up by pilot symbols which we have removed. So I spent some time adjusting the ML “hyper-parameters” to see if I could improve performance; for example the number of carriers, the internal dimensions of various signal processing paths in the encoder and decoder, various clipping/compression techniques, and the “loss” function used to train the network.

After a few weeks work I do appear to have obtained some gains by making the decoder network a little larger, increasing the number of carriers, and using a loss function term rather than a non-linear activation function (e.g. tanh) to control the peak level. The following plots the ML network “loss” against SNR, the loss being a rough indication of speech quality (smaller loss is better).

Blue is our reference RADE V1; green the latest and greatest RADE V2 waveform. The solid lines are for a non fading AWGN channel, the dotted for a fast fading (MPP) channel. So looking at this plot (and listening to a few samples) I’m seeing about 2 dB gain at low SNRs on the MPP (fading) channels, and improved performance at high SNRs on both AWGN and MPP channel.

On AWGN channels, I’m getting usable speech down to -4.5 dB SNR. Looking at the AWGN curves – at any SNR above 5dB, these results suggest V2 is better than V1.

To control PAPR I’ve developed a way to train the network with a SSB type bandwidth filter in the loop. This leads to a further gain of about 1dB on the transmit side, so 3 dB total improvement for MPP channels. It also produces a very clean signal with a narrow “occupied bandwidth of about 800 Hz as shown in the plot below:

Are these performance gains for real? We shall see when we get it on the air. These simulations are a short cut approximation I take to get as close as possible before trying it on real HF radio channels, they include synchronization (e.g. phase estimators for V1) but not acquisition (e.g. frame sync). Now that I have a way forward for the PAPR and low SNR performance I have returned to building up the over the air “smoke test” system.

BBFM Demo using Real Radios

My colleague Tibor Bece has been working hard (despite a bout of COVID) on bench testing our RADE BBFM system on real UHF radios using his clever system of introducing fading with an analog mixer and a signal generator that can be driven by samples from our fading model. His system is carefully calibrated so accurate signal levels can be set up for testing. The goal is to demonstrate RADE running over real UHF radios to support our simulation results from last month.

Tibor’s RF test equipment used for the OTC RADE BBFM tests. The bottom signal generator introduces fading from a stored file of fading samples allowing calibrated, repeatable results using real radios.

Here are some samples where we compare analog FM, DStar, and RADE at -100dBm. DStar is representative of UHF digital speech waveforms based on classical DSP vocoder and FEC technology. First, a nice strong -100 dBm signal with no fading which represents the best quality each waveform is capable of delivering.

Analog FM
DStar
RADE

Now lets try a tough fading channel, that simulates a vehicle moving at 60 km/hr with a weak signal:

Analog FM
DStar
RADE

The FM and RADE signals levels were -120 dBm, however we had to run DStar at -115 dBm as there was no audio at -120 dBm. DStar did produce output audio down to -121 dBm with no fading. RADE is only mildly affected by the fading, as per our simulation results, and we can even receive intelligible speech down to -127 dBm (!).

We are very pleased with the results – RADE works well on fading channels even at very low signals levels and clearly outperforms common analog and digital systems used for VHF/UHF speech communications. We feel the demo results support our carefully derived channel models, training and simulation results. Quite a nice moment for Tibor and I – the successful culmination of nearly 12 months work since we first proposed the RADE BBFM system. We’re writing a paper to document this work and will put together a more detailed demo web page in future, plus pondering next steps.

Tibor has pointed out the RADE system can be seen as a drop in replacement for any existing vocoder/FEC on existing protocols. Instead of sending the typical 4 level FSK or GMSK symbols, you send the RADE symbols. Same radio hardware, and you can even keep your current framing (if you like).

Mooneer’s FreeDV Update – June 2025

This past month has been mainly focused on fixing bugs reported by others since we officially released version 2.0.0 at the beginning of the month. Fortunately, due to extensive testing prior to our release of 2.0.0, the reported issues have been fairly mild.

However, FreeDV Reporter did go down during Activity Day weekend (likely due to having a larger than usual number of users logged in). Since this was hosted on a virtual machine, I increased the amount of RAM allocated to it to help prevent this problem from occurring again. There was also a Linux-specific bug in the built-in FreeDV Reporter client that was partly caused by the SocketIO server libraries in used. Basically, it was considering users “connected” much earlier than it should have, and because of this it was processing multiple events simultaneously on different threads (one for each of the events the FreeDV application sends to the server to synchronize itself). This simultaneous handling of messages triggered race conditions during display of updates, causing overall weird behavior and random assertion failure popups. Fortunately some minor code changes on the server side eliminated most of the problem, with much of the rest of the problem going away once 2.0.1 is released and users upgrade to it.

For this coming month, I’m hoping to wrap up 2.0.1 and potentially work on some other RADE V2 tasks (time permitting, of course). I’m also set to give a few Zoom talks about FreeDV over the next few months to go along with the one I recently gave for the Front Range 6 meter group.

More information can be found in the commit history below:

(Note that all commit logs above were generated with the following command line:)

git log --author="member@email" --after "Month 1, 2025" --before "Month 31, 2025 23:59:59" --all

David June 2025 – planning, BBFM ASR, ML Timing, V2 Smoke Test

Project Planning

This month I worked on another round of project planning, preparing updated project plan and effort estimate documents to cover the next 18 months of our ARDC funded grant work. A lot has changed since the start of the project, so we put some thought into how to use the remaining project funds effectively. Compared to our original grant application this represents a pivot away from classical DSP like Codec 2 towards modern machine learning approaches like RADE. Thanks Mooneer and Peter for helping out with this planning, and the ARDC for approving our new plan.

Baseband FM ASR Curves

To support the BBFM work I finished up the analog FM simulation, which we use as a “control” to compare with the RADE waveform we are developing. This was driving me a bit crazy – there are no actual standard for the audio “shaping” (filtering, compression etc) in analog FM – it’s all manufacturer specific and very subjective – so I had to draw the line somewhere. Thanks Tibor Bece (an expert in this area) for tips.

The next step was to perform some automatic speech recognition tests, comparing our simulation of analog FM to the BBFM version of RADE. The general idea of the ASR tests is described here, where we compared HF RADE to SSB. A low word error rate (WER) is the goal. So green is RADE, blue analog FM. Solid is AWGN, dotted is a fading channel (a vehicle moving at 60 km/hr). You can compare the difference in dB by drawing a horizontal line at a given WER (e.g. 5%).

These curves indicate some impressive results. Compared to analog FM, RADE seems to shrug off multipath fading. It approaches the WER of the baseline FARGAN vocoder at high SNRs. Here is a sample of the simulated analog FM with fading at a Rx level of -110dBm, followed by RADE/BBFM operating over the same channel:

So I’m getting “too good to be true” feelings again. Now these results are all from simulation. To back them up Tibor is working hard on building up a test jig to introduce the same fading channel to real radio signals, using a pair of over the shelf FM radios and a RF mixer than can be driven by the same fading simulation of a vehicle traveling at 60 km/hr. This will enable him to “bench test” over the cable (OTC) to simulate fading and demonstrate the system using real radio hardware.

To support these tests he has spent some time dealing with frame synchronization – just like in my HF work we find that RADE works so well at low SNRs it stresses some of other sub-systems like frame synchronization (we’re all used to the vocoder falling over first).

ML Fine Timing

Getting back to the HF work – “fine timing” is the last module of code we need to start initial testing of RADE V2 over the air. This month I put quite a lot of work into the design of a suitable hybrid DSP/ML network and figuring out how to train for multipath channels. Once again – I have built on the fine work of Jean-Marc and his co-authors (primary author K. Subramani ) who developed a neural pitch estimator. Looking at the DSP involved, we reasoned that a network designed for pitch estimation is also suitable for fine timing estimation. I’ve obtained some initial results indicating this approach works down to 0 dB on fading HF channels. At this stage it’s unclear if it outperforms classical DSP fine timing approaches (I still need to write the appropriate test scripts).

The plot below is a histogram of fine timing errors from the ML estimator for a fading HF channel. The ideal result is 0, an actual OFDM symbol is 160 samples long (+/-80 on the x- axis). The timing error shown in the histogram is quite usable for an OFDM waveform.

RADE V2 Smoke Test

OK, so now it’s time for a “smoke test” of RADE V2. Lets put it on the air and see if it blows up, or works OK. There are many new concepts in this waveform so I need to see if they are “for real” as quickly as possible. So I’m working up a bare bones receiver that can be tested over the air – similar to where we were with RADE V1 about 12 months ago. This will allow us to sends and receive stored files of speech and RADE V2 samples using a batch processing approach, in order to sanity check the various sub-systems. The receiver is working OK when I test it with my channel simulation tools. Next month I plan to try it over real HF channels.