Asterisk’s built-in AMD() decides from timing: how long the greeting is and how long the pauses are. It cannot tell a short voicemail greeting from a person saying “Hello?”, and it has no idea what iOS call screening is. Machine learning does better because it learns from what was actually answered instead of a stopwatch.
I’ve open sourced two models you can try on FreePBX / Asterisk. Both are MIT licensed.
-
Speech-based: Whisper fine-tuned for telephone audio + a text classifier
GitHub - rixwankhan/whisper-vm-finetune: Fast, production-ready AMD for outbound calling and IVR workflows using Whisper-small (fine-tuned) for STT and a supervised text classifier for Human vs Machine detection. · GitHub
It transcribes the first two seconds and classifies the words. Voicemail greetings say they are voicemail (“please leave a message”), so this is strong on recordings. It reached up to about 98% on our hold-out set. -
Acoustic: a CNN on spectrograms + a DSP tone detector, no speech-to-text
GitHub - vmhunterhq/vmhunter-acoustic-amd: Acoustic answering machine detection: trained ONNX models, training code, WebSocket server and Asterisk client · GitHub
Trained ONNX models, training code, a WebSocket server and an Asterisk EAGI client that sets AMDSTATUS / AMDCAUSE like AMD() does. It runs on CPU. On its held-out test set: macro-F1 0.977, about 2% of live people lost and 1% of recordings passed as human.
How accurate is AI AMD really? On long greetings, carrier prompts, call screening, silence and tones: very. The hard case is a voicemail that starts with a lone “Hello”. When we tested the acoustic model on 4,000 agent-labelled calls of exactly that kind, most of those machines still got through, and reading the words did better than sound alone. Method and numbers:
Disclosure: I work on VM Hunter (vmhunter.com), a hosted AMD service that grew out of this work. The two repos above are free to use without it.
If you try either model on your own recordings, please post your numbers: people dropped and voicemails passed, counted separately. Results vary a lot by list and carrier.