I've been tasked with creating an artificial neural network that can classify a telephone call as either answered by a human or an answering machine. My knowledge of audio processing is, mildly put, limited. I'm quite new to machine learning as well, so feel free to question everything. Here's what my run-of-the-mill backpropagation network looks like so far:
1. 37 input units;
2. One layer of 10 hidden units;
3. One output unit.

An audio file comes in, and I extract the data like so [X, fs] = wavread(filename). Then, the 37 features I obtain are the following:
1. The length of X;
2 - 21. In 5% increments, the mean of X in each interval (I know);
22. Spread;
23. The mean of short-time energy;
24. Zero crossing rate;
25 - 37. The mean of each in a set of 13 MFCCs.

Now, since I've obviously jumbled it all together, my question is the following: What do you think would be a good set of features for the problem at hand?

Thank you for your time

  • 1
    $\begingroup$ This wont really help you, but once I did similar task. We ended up calling twice and comparing the recording ;) $\endgroup$
    – jojeck
    Apr 20, 2016 at 17:01
  • $\begingroup$ You're correct, @jojek , that doesn't help. LOL $\endgroup$
    – Peter K.
    Apr 20, 2016 at 17:34
  • $\begingroup$ Can you make any further assumptions about the differences you expect when either a human or a machine answers a call? In some situations even a human cannot distinguish between an answering machine and the actual (human) person that was called ("Hello, Smith. What's up..."). Maybe an idea would be to search for certain words (e.g. "message", "tone", "beep") that usually occur in the announcements. Or: Build a dictionary of typical beep sounds and try to detect those. $\endgroup$
    – applesoup
    Apr 20, 2016 at 20:21
  • $\begingroup$ Thanks for that suggestion, @applesoup. A colleague of mine is working on something similar to what you're proposing. The results are decent. $\endgroup$
    – end1dream
    Apr 25, 2016 at 7:24

1 Answer 1


I don't think that you would do this by feature extraction. Instead, I would train a many-to-one LSTM, which classifies the input sequence as -1 or 1. For you, it is easy to collect a huge amount of labeled speech data, just by calling. Note that, the data size is important.

LSTMs are very powerful techniques and should handle this problem gracefully.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.