http://blog.chinaunix.net/uid-149881-id-3029402.html

点击(此处)折叠或打开

  1. sudo chown 500 /var/lock/lockdev

  2. 命令行
  3. atz
  4. at+fclass=8
  5. atdt[phone number] or ata
  6. at+vls=1
  7. at+vrx => start recv voice .  使用 AT+VSM 确定音频格式.
  8. AT+VSM=?
    0 -- signed PCM,8,0 (8000)
    2 -- IMA ADPCM 4,0 (8000)
    128 -- signed PCM 8,0, (8000)
    129 -- IMA ADPCM 4,0, (8000)
  9. at+vtx => start send voice
  10. 然后自己ReadFile(从文件读),WriteFile(向Modem写)啊
https://en.wikipedia.org/wiki/Voice_modem_command_set
音频数据总是以略快于播放速度的速度发送到调制解调器,因此调制解调器可以缓冲其中的一小部分,并且可以流畅地播放,而不会因为计算机操作系统中的延迟而导致单击或弹出。
例如,在8位分辨率的8 kHz音频文件回放期间(这将创建8,000字节,或在包括开始/停止位/秒时创建80,000位),数据必须在串行端口上以每秒至少115,200位的速度传输。(115,200位/秒是一个典型的大于80,000的计算机串行端口的第一个设置。)此外,由于将流中的DLE字节加倍所涉及的一些额外开销(下面将提到),因此必须提供少量额外的带宽来实现这一点。

1。
语音数据需要透明化,即,消除与modem控制命令向抵触的数据,加上转义符 
2。语音的数据格式有要求,一般是A率(a-law)单声道的数据,播放速度不能控制,除非你做混音或合成,即先调好速度再播放。格式不对听不到声音或声音变形。你可以用CoolEdit2000修改文件格式。除非自己做一些编码解码器(网上有源代码),否则不是随便指定什么文件都能播放。MP3肯定不能直接,除非Modem内置了MP3解码芯片(那是天方夜谭,呵呵) 
3。Modem跟声卡连接的问题本人没做过,发完at+vtx就在向外播放声卡解码的声音了。 
4。跟控制面板无关,只要Modem安装正常。 
5。用文件API向Modem发送和从Modem接收语音,即使使用TAPI也需要这一组函数。先GetLineID()(好象是这个函数吧?)再ReadFile()或者WriteFile() 
6。一般是使用硬件流控方式,通过DCB设置给modem。主叫方要 
atz 
at+flcass=8(不支持该指令的Modem不能用) 
at+vls=1 
at+vrx/vtx 
modem作为被叫可能也需要at+fclass=8,再ata 
7。一般的modem只支持语音半双工,做电脑自动语音功能还可以,不能指望用它来通话,除非自己特制的modem
8. 模拟线路向外呼叫时,判断对方摘机,语音卡驱动一般是采用如下方法:
1、对方摘机并产生爆音
说明:如果对方摘机不说话,则系统就无法知道对方摘机,外呼系统就达不到外呼的目的。
问题:目前大部分手机和普通电话用户都开通了彩铃音乐声,此时,如果用这种方法来判断对方摘机,就会带来严重的后果。即:电话外呼,对方电话机响铃并送彩铃音乐,外呼系统检测到爆音并开始播放外呼语音,此时对方电话并没有摘机而系统却认为对方摘机了,并提前播放了语音,等对方真正摘机的时候语音已经放完了或播放一半了,这种效果的外呼系统或自动传真系统买了也是无用。
2、对方摘机,线路产生反极信号
说明:需要将电话线开通反极信号(电压跳变),当对方摘机,线路就产生一次反极,挂机又产生一次反极。
问题:用户线路是绝对无法开通反极信号的,除非申请模拟中继线,但申请模拟中继线从成本和难度上面来说都是很困难的。同时,大部分购买电话外呼系统的客户基本上采用的是用户线路
深圳市赛宁信息技术有限公司经过多年的研究,在2004年下半年率先在国内解决了彩铃的问题,得到了广大语音卡厂商和大量客户的认可,电话线路无须申请反极信号,也能准确地判断对方(被叫)摘机,并能准确地在被叫摘机的时候从头开始放音。
解决方法大致如下:
1、采样传回来的线路语音
2、采用FFT算法对采样回来的语音进行分析
3、分析采样回来的语音频率,并与语音卡驱动设置的信号音频率进行比较
4、判断采样回来的语音是人说话的声音还是音乐声
5、最后对声音进行综合分析,判断对方(被叫)是否摘机了,并在对方摘机的时候开始播放外呼语音。
特别:彩铃问题的解决,极大地提高了传真系统的发送成功率,这个问题如果解决的不好,传真系统的发送成功率是一个很大的问题。

点击(此处)折叠或打开

  1. 在未接通时的数据。
  2. 81 80 80 81 81 82 81 82 82 80 80 00 81 81 80 01 00 01 00 00 00 81 81 80 80 80 00 80 80 00 80 81 82 82 82 81 81 80 00 00 00 01 81 80 00 01 01 00 01 01 00 00 01 80 00 80

  3. 81 81 80 80 81 81 82 82 82 82 82 80 81 00 00 00 02 01 00 01 01 80 80 81 81 82 81 80 82 80 80 80 82 80 80 82 80 00 00 01 00 01 01 01 81 00 00 01 01 01 80 00 80 00 80 81

  4. 00 80 81 81 81 81 81 81 83 81 84 82 81 82 81 83 81 80 80 00 01 02 00 01 00 01 02 01 80 00 80 80 00 80 80 80 81 80 81 81 80 80 00 00 00 00 00 00 81 80 80 80 81 80 81 00

  5. 81 80 01 00 00 01 80 80 00 00 80 00 81 81 82 81 82 82 81 81 80 80 80 01 80 00 01 00 80 82 81 80 80 82 00 80 80 00 00 00 01 00 80 80 80 00 00 00 00 00 80 81 82 81 81 80

  6. 82 82 81 00 81 82 82 83 83 80 80 81 80 80 00 80 00 81 80 00 00 80 00 01 02 00 00 00 02 03 02 01 00 81 81 82 81 00 81 80 81 80 00 80 80 00 81 80 81 81 81 81 80 81 80 82




  7. 接通后

  8. 83 1B 2F 29 84 A1 A8 B7 B7 9D 9E 08 3A 3C 39 34 88 B6 BA BA B5 16 30 36 44 47 43 40 3C A1 C4 CB D3 D4 CD A8 46 5A 61 60 52 80 D4 E0 E2 DB CF 98 46 51 52 50 40 81 B3 C0

  9. B8 83 32 3C 43 41 35 30 8F BB B9 B7 B9 AD A7 B5 BA AB 97 00 32 2C 85 94 A9 BD BA A4 BB A9 40 41 44 4D 3A AE BA C5 CD AC 35 3E 4C 53 4A 3E 33 B5 D0 D0 D3 D3 C7 A7 3D 54

  10. 5D 5A 52 37 C7 D7 DA D8 CF AD 36 45 4F 4D 42 2A 94 B6 B9 A7 86 2A 3A 38 31 14 8B 9E AD B1 B3 B5 B6 B2 9D 84 1A 26 21 14 82 A6 B5 B6 B6 B4 22 40 3B 3D 32 A4 B7 B5 B8 9D

  11. 31 32 3A 46 47 44 3C 03 C0 CB CF CD C7 C4 B3 40 54 5A 5C 51 A4 CF D8 DB D4 C2 A1 35 4A 4E 4D 49 2D B2 BB B9 B1 27 40 3F 3F 38 87 B2 BB C0 B6 A9 9C 83 06 91 A1 8D 99 96

  12. 08 A3 B1 AD A9 95 2A 21 90 31 38 83 21 0A C2 C2 B2 B3 32 4E 46 46 4C 41 31 2B BE D1 D0 D2 D9 CA 33 50 5C 63 59 3B BA D6 E0 D8 CE BF 3B 51 51 52 4D 12 BF C4 CB C5 8E 37


  13. 看起来像是很明显,如果没有接通, 那么说明数值在 0 和 128 两个数值之间徘徊, 如果有接通,会有相当的一部分处于 偏离了0和128的点位。 呵呵, 目前也只能从此检测是否有摘机动

  14. 作了。

  15. 判断对方是否摘机是否只有对声音进行采样分析一种方法

点击(此处)折叠或打开

  1. http://hepd.pnpi.spb.ru/docs_html/hylafax/Modems/ZyXEL/examples.html

  2. EXAMPLES OF VOICE MODE OPERATION
  3. Greeting message recording (Put a MIC into dial-up line RJ11 jack)
  4.     DTE DCE comments
  5.  ------------- ----------- ---------------------
  6.  AT+FCLASS=8 ---> Switch to voice mode
  7.         <--- OK

  8.  AT+VSM=? --->
  9.          1;CELP;1;0;(9600)
  10.          2;ADPCM;2;0;(9600)
  11.          3;ADPCM;3;0;(9600)
  12.          30;ADPCM;3;0;(9600)
  13.          4;ADPCM;4;0;(9600)
  14.         <--- OK

  15.  AT+VSM=1 ---> Select CELP compression method
  16.         <--- OK

  17.  AT+VLS=8 ---> Activate external MIC on Line
  18.                  Jack
  19.         <--- VCON

  20.  AT+VRX ---> Start to record
  21.         <--- CONNECT
  22.         <---

  23.  AT ---> Stop recording
  24.         <---
  25.         <---
  26.         <--- VCON Return to commnad state

  27.  AT+VLS=0 ----> Deactivate external MIC on Line
  28.                  Jack
  29.         <--- OK

  30.  AT+FCLASS=0 Return to data mode
  31.         <--- OK

  32. Voice file playing via internal speaker
  33.     DTE DCE comments
  34.  ----------- ----------------- -------------------
  35.  AT+FCLASS=8 ---> Switch to voice mode
  36.         <--- OK

  37.  AT+VSM=? --->
  38.          1;CELP;1;0;(9600)
  39.          2;ADPCM;2;0;(9600)
  40.          3;ADPCM;3;0;(9600)
  41.          30;ADPCM;3;0;(9600)
  42.          4;ADPCM;4;0;(9600)
  43.         <--- OK

  44.  AT+VSM=1 ---> Select CELP compression method
  45.         <--- OK

  46.  AT+VLS=16 ---> Activate internal speaker
  47.         <--- VCON

  48.  AT+VTX ---> Start to play
  49.         <--- CONNECT
  50.           --->
  51.       --->
  52.         <--- VCON Return to commnad state

  53.  AT+VLS=0 ---> Deactivate internal speaker
  54.         <--- OK

  55.  AT+FCLASS=0 Return to data mode
  56.         <--- OK
  57. Voice file playing via line

  58.     DTE DCE comments
  59.  ----------- -------------- --------------------
  60.  AT+FCLASS=8 ---> Switch to voice mode
  61.         <--- OK

  62.  AT+VSM=? --->
  63.          1;CELP;1;0;(9600)
  64.          2;ADPCM;2;0;(9600)
  65.          3;ADPCM;3;0;(9600)
  66.          30;ADPCM;3;0;(9600)
  67.          4;ADPCM;4;0;(9600)
  68.         <--- OK
  69.  AT+VSM=1 ---> Select CELP compression method
  70.         <--- OK

  71.  AT+VLS=2 ---> Connect to line
  72.         <--- VCON

  73.  AT+VTX ---> Start to play
  74.         <--- CONNECT
  75.           --->
  76.       --->
  77.         <--- VCON Return to commnad state

  78.  AT+VLS=0 ---> Deactivate line connection
  79.         <--- OK

  80.  AT+FCLASS=0 Return to data mode
  81.         <--- OK
  82. Answering machine (Voice call)
  83.     DTE DCE comments
  84.  ----------- -------------- -------------------
  85.  AT+FCLASS=8 ---> Switch to voice mode
  86.         <--- OK

  87.  AT+VSM=? --->
  88.          1;CELP;1;0;(9600)
  89.          2;ADPCM;2;0;(9600)
  90.          3;ADPCM;3;0;(9600)
  91.          30;ADPCM;3;0;(9600)
  92.          4;ADPCM;4;0;(9600)
  93.         <--- OK

  94.  AT+VSM=1 ---> Select CELP compression method
  95.         <--- OK

  96.  AT+VLS=2 ---> Connect to line
  97.         <--- VCON

  98.  AT+VTX ---> Start to play greeting message
  99.         <--- CONNECT
  100.           --->
  101.       --->
  102.         <--- VCON return to commnad state

  103.  AT+VRX ---> Start to record
  104.         <--- CONNECT
  105.         <---
  106.         <--- b DCE detects busy tone
  107.              or or
  108.              q long period of quiet

  109.  AT ----> Stop recording
  110.         <--- DCE deliver remaining data
  111.         <---
  112.         <--- VCON Return to commnad state

  113.  AT+VLS=0 ---> Deactivate line connection
  114.         <--- OK

  115.  AT+FCLASS=0 Return to data mode
  116.         <--- OK
  117. Answering machine (Fax call)

  118.     DTE DCE comments
  119.  ----------- -------------- ------------------
  120.  AT+FCLASS=8 ---> Switch to voice mode
  121.         <--- OK

  122.  AT+VSM=? --->
  123.          1;CELP;1;0;(9600)
  124.          2;ADPCM;2;0;(9600)
  125.          3;ADPCM;3;0;(9600)
  126.          30;ADPCM;3;0;(9600)
  127.          4;ADPCM;4;0;(9600)
  128.         <--- OK

  129.  AT+VSM=1 ---> Select CELP compression method
  130.         <--- OK

  131.  AT+VLS=2 ---> Connect to line
  132.         <--- VCON

  133.  AT+VTX ---> Start to play greeting message
  134.         <--- CONNECT
  135.           --->
  136.         <--- c T.30 fax calling tone detected
  137.              or or
  138.              5 DTMF digit '5' detected
  139.           --->
  140.       --->
  141.         <--- VCON Return to commnad state

  142.  AT+FCLASS=2 ---> Try to handshake Fax mode
  143.         <--- OK

  144.  ATA --->
  145.      Switch to fax mode and answer fax call
  146.              .
  147.              .
  148.              .
  149. Answering machine (Data call)
  150.     DTE DCE comments
  151.  ----------- ------------- --------------------
  152.  AT+FCLASS=8 ---> Switch to voice mode
  153.         <--- OK

  154.  AT+VSM=? --->
  155.          1;CELP;1;0;(9600)
  156.          2;ADPCM;2;0;(9600)
  157.          3;ADPCM;3;0;(9600)
  158.          30;ADPCM;3;0;(9600)
  159.          4;ADPCM;4;0;(9600)
  160.         <--- OK

  161.  AT+VSM=1 ---> Select CELP compression method
  162.         <--- OK

  163.  AT+VLS=2 ---> Connect to line
  164.         <--- VCON

  165.  AT+VTX ---> Start to play greeting message
  166.         <--- CONNECT
  167.           --->
  168.       --->
  169.         <--- VCON Return to command state

  170.  AT+VRX ---> Start to record
  171.         <--- CONNECT
  172.         <---
  173.         <--- s DCE detects silence

  174.  AT ----> Stop recording
  175.         <--- DCE deliver remaining data
  176.         <---
  177.         <--- VCON return to command state
  178.      (DTE delete this silence file)

  179.  AT+FCLASS=0 --->
  180.         <--- OK

  181.  ATA ---> Try to handshake data mode
  182.      Switch to data mode and answer data call



10-26 02:33
查看更多