Identifying The Dtmf Tones In Android
Solution 1:
Decoding DTMF is rather simple since it was MADE to be decoded. You would Fourier transform the audio stream, getting frequency distributions. These can be matched to the well-defined DTMF frequencies. You can look them up on Wikipedia. Incidentally, that page also links to the Goertzel algorithm for DTMF decoding.
For identifying seperate pulses you can either segment the audio stream on silence or just choose segments that are short enough and try to patch up the data afterwards.The most challenging thing here might be detecting multiple instances of the same number.
Solution 2:
Does anyone have any idea about how to detect the number pressed by the caller in receiver side?
You need a DTMF detector/decoder. It is a fairly well researched topic, you can Google it. Imperfect implementations are easy to do (for example, 8 Goertzel filters) and work for most cases. Standard-level quality implementations are much harder, but you don't really need those.
What is the technology behind it?
Multi-tone detection. It is an interesting subject to explore. Even modern data transfer, like, ADSL builds on it (much more advanced than DTMF, though). But, for your purpose, a simple "filter bank" should do.
Is it possible in android?
Of course, you just need to get your audio data (samples) and feed them to your detector. How you get your samples depends on how you get your voice. In Java, you would probably use MediaRecorder
API, and MediaRecorder.AudioSource.VOICE_CALL
to identify you want audio from a call, rather than the MIC(rophone).
Post a Comment for "Identifying The Dtmf Tones In Android"