A voice modem is an analog telephone data modem with a built-in capability of transmitting and receiving voice recordings over the phone line. Voice modems are used for telephony and answering machine applications. Similar to the Hayes command set used for data modems, in which the host PC commands the modem via a series of commands known as AT commands, there exists a well-defined set of common voice AT commands that are somewhat consistent throughout the industry.
Implementation problems
Plus versus Hash Each voice modem platform tends to support either one of two sets of voice commands—in particular, one flavor of the command set contains a plus (+) sign, and the other contains a hash (#) sign.
Detecting voice mode Support for voice mode can be detected on a modem by issuing the following command: AT+FCLASS=? This command is usually supported containing the plus sign whether a modem supports "plus" or the "hash" command set, because the command (which stands for "fax class") is part of the industry-standard fax commands which always use the plus. A modem supporting voice will respond with a comma-delimited list of numbers that includes the number 8. A modem not supporting voice will respond with ERROR, or with a list of numbers not including 8. (Many modems will report 0,1,2 indicating support for data (0), and class 1 and 2 faxes—this is an indication that voice support is not present.) Modems supporting the "hash" command set usually respond to AT#CLS=? as well.
Entering voice mode The command AT+FCLASS=8 or AT#CLS=8 will put the modem in voice mode. Most modems still remain on-hook and respond with OK. Once this command has been accepted, most modems will respond with Data Link Escape (DLE) messages instead of or in addition to normal modem responses. For example, instead of reporting a phone line ringing with the RING message, many modems will instead send the DLE ASCII character, followed by the letter R. The specific set of DLE events reported by each modem is specific to its chipset and documented in its reference guide.
Querying the modem's capabilities The command AT+VLS=? or AT#VLS=? usually returns a list of operating modes that are specific to each modem. Each of these numbered modes determines the telephone line's on-hook or off-hook status, as well as sound routing between each of the following:
Recording/playback Telephone handset Speakerphone jack (which could simply be hard-wired as an audio input on the PC's sound card instead of being a discrete jack) Microphone jack (available on some voice modems) Many chipsets offer a listing of all the possible combinations of modes even if the specific modem board doesn't support them all. That's because the board manufacturer is almost always different from the chipset maker, and the chipset comes pre-configured to support all possible hardware, even if not implemented on the circuit board. Example of response to AT+VLS=? from a modem on the market in 2006:
AT+VLS=? 0,"",0000000000,0000000000,B084008000 1,"T",0B8418E000,0FE418E000,0B8419E000 2,"L",0884008000,0CE4008000,0884018000 3,"LT",0B8418E000,0FE418E000,0B8419E000 4,"S",0084008000,0484008000,3084018000 5,"ST",0B8418E000,0FE418E000,0B8419E000 6,"M",0084008000,04E4008000,3084008000 7,"MST",0B8418E000,0FE418E000,0B8419E000 8,"S1",0084008000,0484008000,3084018000 9,"S1T",0B8418E000,0FE418E000,0B8419E000 10,"MS1T",0B8418E000,0FE418E000,0B8419E000 11,"M1",0084008000,04E4008000,3084008000 13,"M1S1T",0B8418E000,0FE418E000,0B8419E000 14,"H",0084008000,04E4008000,3084018000 15,"HT",0B8418E000,0FE418E000,0B8419E000 16,"MS",0084008000,04E4008000,3084018000 17,"MS1",0084008000,04E4008000,3084018000 19,"M1S1",0084008000,04E4008000,3084018000 20,"t",0B8418E000,0FE418E000,BB8419E000
While every modem is different, usually mode 0 means on-hook (hung up) and mode 1 is sufficient to pick up the phone, record/playback audio, and detect DTMF (touch tones). The command AT+VSM=? or AT#VSM=? usually returns a list of audio data formats supported by the modem. Each format includes a name (such as PCM, ADPCM, μ-law, A-law), a number of bits per sample (usually 2, 3, 4, 8, or 16) and an audio sampling rate (usually 7,200, 8,000, or 11,025 Hertz). These are industry-standard audio codecs whose implementations are well published. The ADPCM standard is an exception. Modems claiming to support ADPCM almost always support Dialogic ADPCM, also known as "VOX", which is similar but not compatible with other ADPCM implementations, including Interactive Multimedia Association (IMA) ADPCM as well as MS ADPCM (a Microsoft implementation used in WAV files). Modems may support these as well, if a qualifier is listed—otherwise, by default, ADPCM means Dialogic. Example response to AT+VSM=? from a modem on the market in 2006:
AT+VSM=? 1,"UNSIGNED PCM",8,0,8000,0,0 129,"IMA ADPCM",4,0,8000,0,0 130,"UNSIGNED PCM",8,0,8000,0,0 140,"2 Bit ADPCM",2,0,8000, 141,"4 Bit ADPCM",4,0,8000,0,0
The desired audio data format is selected using the same command but with a number instead of a question mark. It is used for both sending and receiving.
Answering calls Answering calls is usually done with either the AT+VLS=n or AT#VLS=n commands, where n is a number representing the modem's mode. For the vast majority of modems, this number will be 1 to answer a telephone call, and 0 to hang up; other numbers activate other functionality when present, such as speakerphone. Some modems answer in response to ATA—the standard data-mode answer command—but other modems will interpret this as a command to actually answer in data and not voice mode.
… excerpt ends here. Continue reading the full article.
