-1

I have been trying to figure out this problem all week. My main problem is seperating the sound from the noise in the signal (see plotted example:

enter image description here

In between these small noises are dtmf tones. Once I get the index of the starting and ending points of the tones converting them is easy.

How exactly are we suppose to determine were noise starts or begins?Each noise can be different lengths and there are plenty of sudden drops in the in the actual sound. I understand the concept of taking small chunks, but how do we compare them in a way to determine noise from sound. Could we fine the silence by comparing how long an index is consecutive under a certain number? I am not sure how to start this problem.

function [phone_number,ERROR] = cjm274_dtmf_number(dtmf_signal,fs)
Input:
% dtmf_signal - samples of the input waveform
% fs - sampling frequency
% Output:
% phone_number - string of characters representing a phone number
% ERROR - set to zero if phone_number does not represent a valid
% phone number
H.Muster
  • 9,297
  • 1
  • 35
  • 46
Cj Mac
  • 11
  • 1
  • Is this some sort of homework? Have you covered frequency transforms? – nneonneo Oct 02 '12 at 02:17
  • 1
    The standard way to do this kind of thing is to filter out everything but the 8 DTMF frequencies of interest. Look at using the [Goertzel Algorithm](https://en.wikipedia.org/wiki/Goertzel_algorithm). – Paul R Oct 02 '12 at 05:17

1 Answers1

0

Since you know more about your desired signal than about the noise, it's usually considered easier to filter and pass your desired signal, and determine the start and stop of this signal after filtering it out of the noise. For instance, you could try a set of narrow-band filters, each around one of the DTMF frequencies.

hotpaw2
  • 70,107
  • 14
  • 90
  • 153