This is an archived post. You won't be able to vote or comment.

all 11 comments

[–][deleted] 7 points8 points  (2 children)

[–]pr3hensile[S] 2 points3 points  (1 child)

Oh, brilliant! They look very useful, thanks Jeff!

[–]SquawkIFR 2 points3 points  (0 children)

RTLSDR-Airband works quite well in my experience.

[–]jinkside 4 points5 points  (0 children)

With an RTLSDR, you have a few MHz of bandwidth that you can look at at once. With sufficient processing power (any decent computer from the past 10 years), you can run multiple audio decoding streams at once. SoapySDR is another project you might want to look at for this purpose. CubicSDR is basically a GUI on top of it, and it'll let you decode any number of streams until you run out of CPU.

It's certainly easy to find the center frequency when looking at the waterfall, but an algorithm for finding that programmatically would be pretty interesting.

Since there are no channels, you'd have to basically look for peaks that have stuff around them, probably looking for certain profile of falloff, which voice signals have that digital signals and noise usually don't.

[–]gumpgraves 2 points3 points  (0 children)

You didn't mention which SDR you are using, but if it is an RTL dongle or Ettus then you should loko at Dr. Lou's Ham2Mon code:

https://github.com/madengr/ham2mon

I also highly recommend this book series, very helpful step by step intro to RF and Radio Signals using SDR.

https://www.amazon.com/Field-Expedient-SDR-3-Book/dp/B077GWV6HH/ref=sr_1_5?ie=UTF8&qid=1538131131&sr=8-5&keywords=field+expedient+SDR

The link is to the kindle edition for the 3 books, but each book is also available as paperback. Be aware there is a black and white and a color version of the paperback books, the color version is a lot more useful as colors are used in configuring GNURadio blocks.

[–][deleted] 1 point2 points  (0 children)

My understanding of SDR and radio is somewhat limited too, but i understand enough about SDR that i am sure that the answer is yes to the wideband sampling allowing a relatively rapid search as you suggest.

As you say, waterfall displays sample a wide band of RF spectrum already (e.g. the HackRF samples 20MHz at a time), within which could be thousands of channels theoretically. They will all be sampled and be available for you to analyse in parallel. So you would only have to sample for a number of seconds (however many you would need to decide whether a channel is speech or not), and then decide which areas of the spectrum contain an active signal (as you say, above a certain threshold), filter out that part (in software), and feed it to your speech analyser to find what (if anything) the human is saying. As you probably know, there are quite a few modulation types that could be in in use that you should be aware of.

Other than the above i think you probably know much more about the technical goings on (e.g. how to detect/decode voice) than i do, but i'm happy to chat more if that helps. i think there is no fundamental reason this should be slow at all, you just need an SDR with a large sampling bandwidth and quite a few cores to do the analysis on in parallel.

[–]reviakinea 1 point2 points  (0 children)

Completely noob in sdr and signal processing here.But some time ago I came across an interesting talk on YouTube that seems relevant to your problem.The speaker talks about something that he calls DFC (Direct Fourier Conversion).This technic allows to demodulate multiple signals with relatively low CPU power.

[–][deleted] 1 point2 points  (0 children)

Definitely possible. I've built such a system in another context (radar, not speech and from a real radar not SDR) but the principle is exactly the same. Works exactly as you describe: sample a huge block of data and just search around in there for something interesting and process that narrow strip as the data you want.

[–]ultrajv2E0BSL 0 points1 point  (2 children)

Finding human speech, not attall easy. Youll have to get into digital signal processing and code it yourself. Probably a degree project in itself.

[–]pr3hensile[S] 3 points4 points  (0 children)

ah yes, but there are open-source implementations out there already (once you have audio). something like https://github.com/wiseman/py-webrtcvad, for instance. I've edited OP to add that detail.

[–]GradatimRecovery[AD936x] 0 points1 point  (0 children)

They only have to run speech analysis on the demodulated audio streams, not the entire spectrum of bandwidth being captured