I have a wav file that has a selective calling tone in it. Is it possible to decode a selective call tone from a wav or mp3 file ?
multimon-ng, which I have used for other purposes, claims to be able to decode selective calling tones of the following protocols, among other things:
- ZVEI1 ZVEI2 ZVEI3 DZVEI PZVEI
- EEA EIA CCIR
However, I tried it out with a couple of sample files I found on the Internet and it didn't produce any output.
I would use the application Mathematica (by Wolfram) which has a lot of computational audio features for decoding audio streams via a given codex protocol. Mathematica is not for everyone and as the name suggests it is a very mathematically oriented application. Plus, it is something you have to buy yet there is a free trial period you could use to experiment.
As an example of how Mathematica is used to perform various coding and decoding functions from an audio stream, this page describes how Morse Code can be decoded from an audio stream such as wav or mp3 file (note: in this particular example, the audio stream is created as well but you can avoid those steps).
Mathematica has many other audio computation features with a whole variety of graphic display methods. I use Mathematica every single day for dabbling in computations of General Relativity and also for augmenting the computational and graphic display of antenna analysis problems in concert with NEC4 (the licensed version of NEC, similar to NEC2 but much better).
So, you mean something that will give you the sequence of calling tone digits like used in ZVEI1 to ZVEI5?
Yeah, those were fun 5 minutes:
I got an example from the sigid wiki (specifically ZVEI1-5), converted it to mono WAV (it's stereo for some unclear reasons), and built this flow graph in GNU Radio companion from scratch:
What is missing is a lookup table at the end that converts frequencies to tone digits. That's about ten lines of Python :)
In action, this looks something like
with the plot showing the instantaneous frequency. You'd just look for the right sequence of frequencies and then you'd have your decoder. (yes, timing recovery aside)