Android Question DTMF, IVR, touch tones & java (ofcourse) - need help..

Magma

Expert
Licensed User
Longtime User
Hi there,

after months - i am trying to figure what to do... with dtmf detecting from audio (microphone)...

if anyone has solution... will help me..

I am such an.... in java...

here some resources:

www.nuance.com
JTAPI
  • MessagePhonelet.java: Source code demonstrating how to record and play voice messages, how to generate synthetic speech from text, and how to use touch tones to control program flow.
  • AnnouncePhonelet.java: Demonstrates how to process caller ID packets. Announces an incoming call and the identity of the caller if the phone number (as delivered by caller ID) is contained in a contacts database.
  • Talker.java: Source code for a wrapper to simplify use of a JSAPI speech synthesis engine. Has been tested with IBM's Via Voice and Speech for Java SDK.
  • CallerID.java: Source code for a caller ID object that parses unformatted caller ID packets.
  • PhoneServerLite: A multithreaded phonelet host with loadable device handlers and phonelets. Includes javadoc documentation for phonelet framework.
  • SpeedSerialWin32.dll: Win 95/98/NT native library for high-speed serial access. JavaSoft's javax.comm package provides adequate support for serial data transfers at low speeds, but fails at the relatively high speeds necessary to record and play digitized voice with an external voice-enabled modem. The javax.comm package is unnecessarily complicated by an attempt to wrap the parallel and serial ports into a single package. SpeedSerialWin32 simplifies the programmer's view of the serial port and provides reliable high-speed serial transfers.
  • CommonVoiceModemCommands.txt
B4X:
public void service (PhoneCall call) throws IOException {
        Phone phone = call.answer(this);
        if (phone == null) return;
String one = "1";
        int loopCounter = 0;
        double beepLength = 1.2; // seconds
        int beepFreq = 1000; // cycles/second
        while(loopCounter < 3){
                phone.play(new File("pressOneToLeaveAMessage.wav"),one);
        if      (getTouchtone().equals(one)){
                        phone.play(new File("leaveYourMessageAfterTheBeep.wav"));
                        File messageFile = record(maxTime,maxSilence,beepFreq,beepLength,null);
                        break;
                }
                pause(5); // wait 5 seconds
                loopCounter++;
                }
        phone.play(new File("goodbye.wav"));
        phone.hangup(this);
}
 
Top