http://blog.chinaunix.net/uid-149881-id-3029402.html
-
sudo chown 500 /var/lock/lockdev
-
-
命令行
-
atz
-
at+fclass=8
-
atdt[phone number] or ata
-
at+vls=1
-
at+vrx => start recv voice . 使用 AT+VSM 确定音频格式.
-
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)
-
at+vtx => start send voice
-
然后自己ReadFile(从文件读),WriteFile(向Modem写)啊
音频数据总是以略快于播放速度的速度发送到调制解调器,因此调制解调器可以缓冲其中的一小部分,并且可以流畅地播放,而不会因为计算机操作系统中的延迟而导致单击或弹出。例如,在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、最后对声音进行综合分析,判断对方(被叫)是否摘机了,并在对方摘机的时候开始播放外呼语音。
特别:彩铃问题的解决,极大地提高了传真系统的发送成功率,这个问题如果解决的不好,传真系统的发送成功率是一个很大的问题。
-
在未接通时的数据。
-
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
-
-
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
-
-
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
-
-
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
-
-
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
-
-
-
-
-
接通后
-
-
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
-
-
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
-
-
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
-
-
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
-
-
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
-
-
-
看起来像是很明显,如果没有接通, 那么说明数值在 0 和 128 两个数值之间徘徊, 如果有接通,会有相当的一部分处于 偏离了0和128的点位。 呵呵, 目前也只能从此检测是否有摘机动
-
-
作了。
-
-
判断对方是否摘机是否只有对声音进行采样分析一种方法
阅读(3842) | 评论(0) | 转发(0) |