VoiceModemProtocol
03 Dec 2008 04:30 UTC 2008338+0430 UTC

Development Page--Not for Official Use

This voicemodem protocol is based on documents describing the voice modem protocol for Rockwell voicemodem chipsets. Pm hasn't been able to find the original document he used to develop the voiceinfo software, but another version is available at http://www.zoltrix.com/PUBLIC/MODEM/ATmanual/ATVROCK.HTM. A bound dead-tree version of this manual is available somewhere in the DNR IT library.

I found this AT Commands for RCV56ACx, RCV336ACx, RCV288ACx, and RCV144ACx Modems manual (375K PDF) after some googling. I believe it is a more recent version of the above manual.

A reminder when reading the manual: DTE stands for "Data Terminal Equipment" and represents the computer connected to the voice modem (running voiceinfo, in this case). DCE stands for "Data Communication Equipment" and is the voicemodem itself.

To play audio out the voice modem, the computer (DTE) does the following:

  1. Send the string "AT#VTX\r" to the modem
  2. Wait for the modem to return "CONNECT". This indicates the modem is ready to receive audio data.
  3. Send the audio data
    1. Audio data is sent in packets of 33 bytes each.
    2. If there are any <DLE> characters (hex 0x10, decimal 16) in the packet, they must be escaped by a second <DLE> character (DLE==Data Link Escape)
    3. The packet is sent with a pair of 0xfe bytes, the DLE-escaped packet of audio data, a zero byte, and two 0xa5 bytes.
    4. After the last packet is sent, the computer (DTE) sends <DLE><ETX> ("\x10,\x03") to indicate the end of audio data.
    5. The modem responds with the string "VCON" after playing the sent data to indicate it is back in voice mode.

If the voicemodem detects a touch-tone (DTMF) signal while the audio is playing, it sends it back to the computer as a <DLE> character followed by a byte indicating the specific DTMF signal sent.

Ideally what voiceinfo (PlayPhrases) should probably do is to flush the serial port buffer and send an abort command <DLE><CAN> ("\x10\x18", I think) to the modem to cause it to immediately stop playing the audio. If voiceinfo can clear the playback buffers as soon as it detects a DTMF tone, there's no need for the delay between packets and stuttering will no longer be a problem.

More Links

Page last modified on May 29, 2008, at 10:14 AM