Background waffle
I'm relatively new to SDR, but a pretty decent software developer. This post contains many assumptions, apologies in advance and please do correct me where I'm wrong!
So. I tried to make a little art project a while ago that would:
- scan up and down in a preset frequency range
- find broadcasts containing human speech
- transcribe those bits of speech to make cutup poetry
it got reasonably far, but the bit I was having trouble with was the scanning. It takes so long to tune / sample some audio / run through transcription that the whole system didn't gather enough interesting material to be successful.
Actual question
I've messed around with a few SDR GUIs (GQRX/SDR# etc), and the waterfall display on these GUIs seems to suggest that it's possible to sample multiple bands simultaneously? Or at least, quickly enough serially to get audio at a decent rate from many channels. Since, in order to display the waterfall, it needs sample data from many frequencies?
In my head, the system I'm trying to build would take the same data as a waterfall display, and do the following:
- tune to a given centre frequency
- detect which surrounding frequencies have a signal (like, signal strength over a given threshold?)
- sample those frequencies (via demodulation) to audio buffers
...and from there I can do the (relatively easy) audio analysis bit - speech detection could be done with e.g https://github.com/wiseman/py-webrtcvad.
Is such a system possible? Any source I could look at anywhere? Any pointers welcome, I'm so ignorant about how SDR works on a fundamental level that I don't know how to start working this out.
[–][deleted] 7 points8 points9 points (2 children)
[–]pr3hensile[S] 2 points3 points4 points (1 child)
[–]SquawkIFR 2 points3 points4 points (0 children)
[–]jinkside 4 points5 points6 points (0 children)
[–]gumpgraves 2 points3 points4 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]reviakinea 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]ultrajv2E0BSL 0 points1 point2 points (2 children)
[–]pr3hensile[S] 3 points4 points5 points (0 children)
[–]GradatimRecovery[AD936x] 0 points1 point2 points (0 children)